

   ######+ ########++     ######+  ########+  ####    ####++  ##++     ##++

 ##++++++  ##+++++##++  ##++++++   ##++++++   ##+##  ##+##++  ##++     ##++

##++       ##++   ##++ ##++        ##+++      ##++ ##++ ##++  ##++     ##++

##++       ########++  ##++        ########+  ##++ +++  ##++  ##++     ##++

##++       ##++++++    ##++        ##++++++   ##++      ##++  ##++     ##++

 ##++      ##++         ##++       ##++       ##++      ##++  ##++     ##++

   ######+ ##++           ######+  ########+  ##++      ##++   #########++

   +++++++ ++++           +++++++  +++++++++  ++++      ++++   ++++++++++



                                                                      v3.0





                                  D O C U M E N T A T I O N





                                     (c) Marco VIETH 2001

                        (Traduit par Jean-Pierre MARQUET, 16 juin 1998)





     Cette instruction ne contient pas encore tous les informations sur les versions 1.7 à 3.0!







-------------------------------------------------------------------------------









Table des matières :



       1.  Introduction

           1.1  Suggestions sur la lecture de cette documentation

           1.2  Copyright, garantie

           1.3  Qu'est-ce qu'un CPC ?

           1.4  Que vous offre CPCEMU ?



       2.  Installation de CPCEMU

           2.1  Fichiers composant l'environnement CPCEMU

           2.2  Equipement nécessaire et installation

           2.3  Suggestions sur la mémoire et les cartes-son

             2.3.1  Utiliser la mémoire EMS

             2.3.2  Définir la variable d'environnement BLASTER

             2.3.2  Définir la variable d'environnement ULTRASND



       3.  Différences entre CPC et CPCEMU

           3.1  Le clavier

           3.2  Charger des programmes, Menus

             3.2.1  Charger depuis une disquette, Menus

                    - Le menu Insérer une Disquette

                    - Le menu Sélection de Fichier

             3.2.2  Charger depuis et sauvegarder sur cassette

             3.2.3  Charger depuis et sauvegarder sur des snapshots



       4.  Changer la configuration

           4.1  Le Menu des Réglages (Setup Menu)

           4.2  Le fichier de configuration

           4.3  Les paramètres de la ligne de commande



       5.  Transfert de données entre CPC et PC

           5.1  La disquette comme intermédiaire

             5.1.1  Le programme de transfert de disquette CPCTRANS

             5.1.2  L'utilitaire de formatage et de copie 22DISK de SYDEX

           5.2  L'interface parallèle

                - L'adaptateur parallèle

           5.3  L'interface série

           5.4  Autres possibilités



       6.  Sources d'approvisionnement, Aide, Remerciements

           6.1  Où trouver des programmes pour CPC ?

           6.2  Dernières nouvelles, échanger des expériences

           6.3  Si vous avez des questions ou des suggestions

           6.4  Autres émulateurs pour l'Amstrad CPC

           6.5  Projets pour les prochaines versions de CPCEMU

           6.6  Remerciements

           6.7  Marques déposées



       7.  Information interne à propos de CPCEMU

           ("Boîte Noire", avec sa propre table des matières)





       Appendice :



       A.1  Glossaire

       A.2  Bibliographie

       A.3  Index





---------------------------











1.  Introduction

________________





Bienvenue dans le monde des émulateurs !



Vous désirez savoir ce qu'est CPCEMU, et ce que vous pouvez faire avec cet 

étrange programme qui se présente en lettres jaunes sur fond bleu, et qui 

affiche des "Syntax Error" après chaque manipulation du clavier ?



Pour vous éviter de longues recherches, voici :



      CPCEMU "émule" un Amstrad CPC 464, 664 ou 6128, avec plusieurs 

      extensions. En d'autres termes, le programme imite le comportement 

      des anciens ordinateurs d'Amstrad, mais sur votre PC.



Pour quoi faire ?

Eh bien, si vous n'en avez aucune idée... vous n'avez pas besoin de CPCEMU !



Blague à part, voici quelques raisons valables :



      - la nostalgie (ah, qu'il était extra, mon bon vieux CPC, sniff...)

      - de meilleures performances, comparées à l'original

      - un meilleur environnement pour développer des programmes

      - JOUER !

      - travailler (Mais oui, un CPC est suffisant pour faire

                    tourner un traitement de textes, par exemple)

      - [.............................] <- écrivez ici d'autres raisons

                                           que vous auriez trouvées.









1.1  Suggestions pour lire cette documentation

==============================================





  Vous pourriez commencer par consulter l'aide "en ligne" dans CPCEMU,

  ou continuer si vous désirez une information plus précise...





  J'ai tenté d'écrire une documentation disposée clairement. Mais si vous

  avez toujours des questions (après l'avoir lue plusieurs fois !), vous

  pouvez me contacter.   Vous pouvez d'ailleurs le faire, même si tout est

  clair pour vous. Voyez au chapitre 6 (Sources d'Approvisionnement, Soutien...)

  comment me joindre.



  Au chapitre 1 (Introduction), j'explique comment lire cette documentation,

  je précise qui a le copyright, et j'ajoute deux ou trois choses à propos

  du CPC en général.



  Au chapitre 2 (Installation), on entre dans le vif du sujet : vous lirez

  comment installer et lancer CPCEMU.



  Le chapitre 3 (Différences entre CPC et CPCEMU) traite de quelques détails

  que vous devriez connaître sur l'émulateur, si vous êtes un familier du 

  "vrai" CPC. Sont décrits, principalement, le clavier, les disquettes, les

  cassettes et les "snapshots".



  Au chapitre 4 (Changer la Configuration), je montre de quelle façon adapter 

  CPCEMU à vos besoins. Peut-être votre programme préféré tournera-t-il mieux

  avec cela.



  Au chapitre 5 (Transfert de données entre CPC et PC), vous saurez comment

  transférer vos anciens programmes pour CPC sur votre PC. Les utilitaires

  fournis avec CPCEMU sont décrits ici.

  

  Au chapitre 6 (Sources d'Approvisionnement, Aide, Remerciements), vous

  apprendrez comment vous procurer la plus récente version de CPCEMU, et

  qui contacter si vous voulez poser des questions.



  Le chapitre 7 (Information interne sur CPCEMU) est réservé aux experts.

  La partie "officiellement" consacrée à l'utilisateur courant prenait fin

  au chapitre précédent. Ici, je décris comment programmer un émulateur,

  et ce que vous avez besoin de savoir pour ce faire. Je décris aussi le

  menu "Debug" de CPCEMU, lequel vous permet d'analyser le processeur et

  la mémoire à *n'importe quel* moment durant l'émulation. Les utilisateurs

  occasionnels sauteront ce chapitre, au moins lors de la première lecteure.

  

  L'appendice A.1 contient un glossaire avec la description des termes

  techniques les plus importants. 

  L'appendice A.2 contient la bibliographie, et A.3 est un index.







1.2  Copyright, garantie

========================



  CPCEMU a été développé par (voir aussi la section 6.3) :



         Marco Vieth

         Auf dem Uekern 4

         33165 Lichtenau

         Germany



  et



         Rainer Loritz

         Rosenbachweg 4/Whg. 1

         D-37075 Göttingen



  CPCEMU est un "freeware", libre de droits, ce qui signifie que vous pouvez 

  donner le programme à vos amis et connaissances *en toute liberté*.

  Les conservateurs d'archives sont autorisés à inclure CPCEMU dans leurs

  collections de programmes à télécharger.

  Les distributeurs de sharewares sont autorisés à distribuer CPCEMU, s'ils

  ne facturent à leurs clients qu'une modeste contribution pour les frais de

  copie.

  Comparé au domaine public, le "freeware" ne signifie pas que tout est

  gratuit et que vous pouvez faire n'importe quoi. Le copyright reste ma

  propriété.



  Tous les programmes et leur documentation sont fournis tels quels, sans

  garantie d'aucune sorte.

  

  Bien que CPCEMU soit en freeware, j'accepterai toute forme d'aide,

  quelle qu'elle soit, technique ou financière.

  Voir le chapitre 6 pour plus de détails.







1.3  Qu'est-ce qu'un CPC ?

==========================



  Si vous le savez déjà, sautez cette section et continuez votre lecture 

  en 1.4.









  Toujours là ?



  Je ne veux pas entrer maintenant dans des détails tehniques, mais

  simplement donner un aperçu rétrospectif pour vous faire mieux saisir ce

  qu'est un CPC.



  "CPC" est l'abréviation de "Colour Personal Computer", in french :

  ordinateur personnel en couleurs. Les premiers ordinateurs de ce type

  ont été construits en 1984 par la firme britannique Amstrad, et vendus 

  sous différents noms dans différents pays.

  C'était l'époque des ordinateurs "familiaux" : le Commodore C64, le 

  Spectrum de Sinclair, l'Atari 800XL... Alors naquit le CPC 464. Il avait

  autant de mémoire que le Commodore C64 (64 K), un magnétophone à cassette

  incorporé, et le Basic Locomotive 1.0. Ensuite vint le CPC 664, avec un

  lecteur de disquettes trois pouces incorporé, et le Basic Locomotive 1.1,

  légèrement étendu par rapport au précédent. Le CPC 6128 vint au monde en

  1985, avec 128 K de RAM et à peu près les mêmes particularités que le 664.

  Les disquettes 3 pouces étaient horriblement chères, mais plus stables

  que les disquettes 5,25 pouces ; en fait, presque aussi stables que les

  disquettes 3,5 pouces d'aujourd'hui. En outre, elles étaient beaucoup plus

  rapides que les cassettes, au contraire de celles du C64.

  Les trois modèles de CPC étaient vendus avec un écran couleurs ou vert, 

  qui renfermait aussi l'alimentation électrique. Plus tard, deux ou trois

  autres modèles (le CPC+, par exemple) furent mis sur le marché.

  Mentionnons enfin les derniers modèles, les CPC 464+ et 6128+ (* Note du

  traducteur : avec le son stéréo, et aussi des instructions plus étendues 

  pour le graphisme, malheureusement gardées secrètes par Amstrad, qui 

  entendait les réserver aux programmeurs professionnels. Circonstance qui 

  n'a pas été sans rapport avec son échec commercial et la disparition 

  d'Amstrad du marché des ordinateurs familiaux. *)

  

  Selon le modèle, le Basic comportait quelque 178 instructions, puissantes 

  et rapides. On pouvait programmer du graphisme, des sons, et même 

  manipuler les interruptions sous Basic, en évitant les PEEKs et les POKEs 

  qui rendaient calamiteux le C64.

  Le nombre de programmes consacrés aux CPCs n'a fait qu'augmenter d'année

  en année.







1.4  Que vous offre CPCEMU ?

============================



  Ce qui suit est un court aperçu de ce que CPCEMU vous offre. Dans les

  sections suivantes de la documentation, la signification de tout cela 

  sera précisée en détail.



  Graphiques : 3 modes d'écran différents (X x Y x Couleurs) :



       Mode 0: 180 x 200 x 16

       Mode 1: 320 x 200 x 4

       Mode 2: 640 x 200 x 2

       (Avec un BIOS VESA, les graphismes peuvent être affichés dans

       les résolutions de 640 x 480 x 16 jusqu'à 1280 x 1024 x 16, 

       selon les possibilités de votre moniteur et de votre carte VGA)



  Son : soit par le haut-parleur du PC, soit par une carte SoundBlaster 

       (3 canaux + un de bruit, stéréo, ou 3 canaux FM, stéréo), soit

       avec une carte Gravis Ultrasound (3 canaux + 1 canal de bruit, stéréo).



  Mémoire :

       ROM : Système d'Exploitation, Basic, AMSDOS, et jusqu'à 13 ROMs 

       additionnelles (avec mémoire paginée, ou "EMS").

       RAM : 64K, 128K, jusqu'à 576K de mémoire vive, compatible avec

       Dk'Tronics (avec EMS).



  Disquettes : images de disques spéciales, portant l'extension DSK.



  Cassette : fichiers standard sous DOS, par exemple en Basic, et fichiers 

       binaires, avec les extensions BAS et BIN respectivement.



  Snapshots : vous pouvez faire un "dump" de la mémoire avec des programmes 

       en train de tourner, et cela, afin d'interrompre une séance et de

       continuer plus tard. Les snapshots ont l'extension SNA.



  Vitesse : avec un 386/33 et de la mémoire paginée, CPCEMU est plus rapide

       que l'original. Avec le mode "realtime" (temps réel), vous pourrez

       ralentir l'émulation pour être à la vitesse exacte du CPC. Le mode

       "realtime" fonctionne très bien sur un  486 DX/66.





2.  Installation de CPCEMU

__________________________



Dans ce chapitre, vous apprendrez comment installer et lancer CPCEMU.

A la section 2.2, vous lirez quelques suggestions sur l'utilisation de

la mémoire EMS, et comment définit l'environnement SoundBlaster.

L'installation complète définie par l'utilisateur, avec le fichier de 

configuration, est décrite au chapitre 4 (Changer la Configuration).







2.1  Fichiers fournis avec CPCEMU

=================================



  En voici la liste. Entre parenthèses est indiqué le sous-répertoire

  où se trouvent les fichiers après l'installation :

  

  COPYMATE.ROM   ROM avec un programme de copie (ROM)

  CPC464.BAT     fichier lançant un CPC 464

  CPC464.ROM     ROM (système d'exploitation, plus BASIC) du CPC 464 (ROM)

  CPC664.BAT     idem, mais pour un CPC 664

  CPC664.ROM     (ROM)

  CPC6128.BAT    idem, mais pour un CPC 6128

  CPC6128.ROM    (ROM)

  CPCADOS.ROM    AMSDOS pour tous les CPCs (ROM)

  CPCEMU.CFG     fichier de configuration pour tous les CPCs (ou CPCEMU0.CFG)

  CPCEMU.DAT     fichier de données pour CPCEMU

  CPCEMU.DBF     base de données contenant des pokes pour tricher aux jeux

  CPCEMU.EXE     l'émulateur

  CPCEMU.HLP     fichier d'aide, affiché avec la touche F1

  CPCEMU.MSG     le fichier des messages (nécessaire)

  CPCEMU_D.TXT   documentation en allemand

  CPCEMU_E.TXT   documentation en anglais

  CPCEMU_F.TXT   documentation en français (le présent fichier)

  CPCEMU_S.TXT   documentation en espagnol

  CPCPARA.BAS    programme en Basic Locomotive

                 pour l'adaptateur parallèle (UTILITY)

  CPCPD1.DSK     image de disquette, avec quelques exemples

                 de programmes du domaine public (DISC)

  CPCREC.BAS     programme en Basic Locomotive,

                 pour recevoir des programmes (UTILITY)

  CPCT0.BAT      fichier batch pour CPCTRANS.EXE (exemple) (UTILITY)

  CPCTRANS.EXE   programme de transfert d'images de disquette (UTILITY)

  CPMDISKS.DEF   Définitions de formats pour 22DISK (UTILITY)

  FILE_ID.DIZ    l'identification de CPCEMU pour les BBS

  INSTALL.BAT    fichier batch pour l'installation

  KCC.BAT        fichier de lancement KC compact

  PCPARA.EXE     côté PC de l'adaptateur parallèle (UTILITY)

  README_D.TXT   Présentation de CPCEMU en allemand

  README_E.TXT   Présentation de CPCEMU en anglais

  LISEZMOI.TXT   Présentation de CPCEMU en français

  README_S.TXT   Présentation de CPCEMU en espagnol

  ROMGET.BAS     programme en Basic Locomotive,

                 pour sauvegarder des ROMs (UTILITY)

  SNA2GIF.EXE    fournit un fichier GIF de l'écran CPC contenu dans un 

                 snapshot



  Les ROMs originales d'Amstrad sont également incluses.

  Le Système d'Exploitation ("Firmware") est sous copyright 

  de Locomotive Software, le Basic est sous copyright d'Amstrad.

  Amstrad et Locomotive m'ont autorisé à distribuer leurs ROMs avec

  CPCEMU.







2.2  Equipement nécessaire et installation

==========================================



  Il vous faut au moins (pas de limite supérieure !) :

  - un PC AT 386 avec affichage VGA.

  - MS-DOS, si possible avec EMS,  

    ou

    Novell DOS (DRDOS)  

    ou

    Windows 95 (ou 3.1) dans une fenêtre DOS

    ou

    OS/2 2.x dans une fenêtre DOS.

  - Si vous voulez lancer des programmes contenus dans une archive ZIP,

    le programme d'extraction PKUNZIP doit être accessible par le PATH

    du DOS.





  L'installation elle-même est très simple :

  Copiez l'archive CPCEMUxx.ZIP sur votre disque dur, et décompressez-la

  avec "PKUNZIP CPCEMUxx.ZIP". Lancez ensuite INSTALL.BAT afin de créer

  les sous-répertoires nécessaires.

  Puis lancez CPC464.BAT, CPC664.BAT ou CPC6128.BAT, selon le modèle de 

  CPC que vous préférez.

  Lorsque vous lancez l'émulateur pour la première fois, choisissez votre

  langage.

  (La configuration est sauvegardée dans le sous-répertoire TMP sous le

  nom de CPCEMU.CFG).

  Après avoir vu la configuration, appuyez sur <RETURN>, et le célèbre

  écran du CPC apparaîtra, avec ses lettres jaunes sur fond bleu.

  Vous pourrez quitter l'émulateur avec la touche <F12>, ou voir l'aide en

  ligne avec la touche <F1>.

  Essayez tout de suite, ça n'engage à rien, avant de lire la suite ! 

  

  Si quelque erreur survenait durant la configuration, vous vous retrouvez

  dans le menu Debug, que vous pouvez quitter avec "q" suivi de <RETURN>.

  Lorsqu'un tel accident arrive, il peut être utile de rediriger les 

  messages apparus à l'écran vers un fichier, par exemple en tapant 

  "CPCEMU>ERREURS.TXT". Vous pourrez ensuite lire ce fichier ERREURS.TXT

  et tenter d'analyser ce qui s'est passé.







2.3  Suggestions à propos de la mémoire et des cartes-son

==========================================================



  Ce qui suit vous aidera si vous désirez une émulation particulièrement 

  rapide, ou si votre carte-son n'est pas reconnue.

  Si vous utilisez Windows 95 sans réglages spéciaux, vous n'avez pas à

  vous en préoccuper. Windows 95 admet l'EMS pour les fenêtres DOS, et

  règle automatiquement la variable d'environnement BLASTER, si vous avez

  une carte SoundBlaster.

  



  2.3.1  Utiliser la mémoire EMS

  ------------------------------



    Il vous faudrait de la mémoire paginée ("EMS" ou Expanded Memory System), 

    soit matérielle, soit émulée, sur votre PC : cela accélère l'émulation 

    de manière significative, spécialement en Basic. La mémoire EMS simulée 

    est trop lente.

    Il vous suffit d'avoir un gestionnaire tel EMM (Expanded Memory Manager) 

    acceptant le standard LIM EMS 4.0.

    

    Si l'utilisation d'EMS est possible, un décompte "EMS xxx Bytes ok." 

    apparaîtra durant l'initialisation. Sinon, vous lirez "Sorry, using 

    conventional memory".



    Exemple sous OS/2 2.x (réglages pour la fenêtre) :

        EMS_FRAME_LOCATION = auto

        EMS_HIGH_OS_MAP_REGION = 32     (ou davantage)

        EMS_LOW_OS_MAP_REGION = 0       (ou davantage)



    Exemple sous DOS dans le fichier CONFIG.SYS :

        DEVICE=C:\DOS\HIMEM.SYS

        DEVICE=C:\DOS\EMM386.EXE 1024

        ...













  2.3.2  Définir l'environnement BLASTER :

  ----------------------------------------



    Pour entendre du son depuis une carte SoundBlaster, vous devez définir 

    correctement la variable d'environnement "BLASTER", soit en utilisant 

    le programme SET-ENV.EXE (ou SBTEST.EXE) fourni avec la carte-son, 

    soit en modifiant directement votre AUTOEXEC.BAT. Dans ce fichier, 

    vous devriez écrire une ligne telle que celle-ci :

                    

                      SET BLASTER=A220 I7 D1 T3



    Ce qui signifie :

      A = adresse de base (0x220)

      I = numéro d'IRQ (7)

      D = numéro du canal DMA (1)

      T = version de la carte-son :

          1 : Soundblaster 1.0/1.5

          2 : Soundblaster Pro

          3 : Soundblaster 2.0/2.5

          4 : Soundblaster Pro 3/Pro 4.0

          5 : Soundblaster Pro (Microchannel)

          6 : Soundblaster 16



    Avec les versions 2, 4, 5 et 6, vous aurez du son stéréo.



    Il existe aussi d'autres paramètres qui sont ignorés :

      - H spécifie le canal DMA 16 bits pour les cartes 16 bits (5).

      - M spécifie l'adresse de base de la table de mixage SB (224).

      - P spécifie l'adresse du port MIDI (330).





    Si vous n'entendez aucun son, utilisez A388 (au lieu de A220).

    Cela marche pour Media Vision Pro Audio Spectrum 16, et sans doute 

    aussi pour d'autres cartes avec émulation SB ou une carte Adlib 

    (Joe Cotroneo).







  2.3.3  Définir la variable d'environnement ULTRASND

  ---------------------------------------------------



    Pour avoir du son avec votre carte GUS (Gravis Ultrasound Classic/MAX/

    ACE, vous devez définir convenablement votre variable d'environnement 

    ULTRASND. Votre AUTOEXEC.BAT devrait contenir la ligne suivante :

              

              SET ULTRASND=220,1,1,11,7

 

  Ce qui signifie :

       220 : adresse de base (en hexa)

       1   : canal DMA pour GUS

       1   : canal DMA pour SboundBlaster

       11  : IRQ pour GUS

       7   : IRQ pour SoundBlaster



  Les valeurs les plus importantes sont l'adresse de base et l'IRQ pour GUS. 

  Toutes les autres valeurs doivent être spécifiées pour que l'émulation

  fonctionne correctement.









3.  Différences entre CPC et CPCEMU

___________________________________



Dans ce chapitre, je décris quelques différences entre CPCEMU et le vrai CPC.

Dans la section qui suivra, il sera question de quelques touches ayant une 

fonction spéciales pour l'émulation, spécialement les bien nommées touches 

de fonction. Plus loin, je vous dirai comment charger depuis la disquette 

ou la "cassette" (ne vous étonnez pas des guillemets !...).







3.1  Le clavier

===============



  Peut-être avez-vous déjà remarqué que les touches de fonction du PC ne 

  correspondent pas à celles du CPC : elles produisent des sorties étranges, 

  qui sont recensées ici. Ou peut-être avez-vous cherché en vain la touche

  COPY, que vous ne risquez pas de dénicher sur un clavier de PC !

  Toutes les touches du CPC ont cependant leur équivalent localisé quelque

  part, croyez-le bien. Voici quelques indications :

  

  - ALT, ALTgr : la fameuse touche COPY du CPC {DOS}

    ALT à gauche {Non-DOS}



  - Touche PAUSE : suspend le travail du PC jusqu'au prochain appui. Si les

    touches de fonction du PC ne réagissent plus, vous avez probablement

    appuyé par mégarde sur cette touche.



  - Clavier numérique : selon l'état de "NumLock" (surveillez le voyant), 

    ses touches agissent différemment. Avec le voyant "Num Lock" allumé, 

    elles représentent les touches de fonction du CPC ; sinon, le joystick 0.

    Si vous avez l'intention d'utiliser un joystick analogique pour PC,

    vous devrez le calibrer au préalable (Voir le chapitre 4 : Changer la 

    Configuration).



  Seulement pour être exhaustif :

  - PagePréc/PageSuiv : déplacent l'écran entier verticalement (ne me

    demandez pas à quoi ça sert...)



  Et, bien sûr, les touches de fonction :

  F1  : Aide en ligne. Peut-être la plus importante, au début.

  F2  : Bascule entre l'écran de CPC standard et l'écran des messages (celui

        avec un bord rouge), où certains messages de contrôle peuvent

        apparaître.

  F3  : Pour "insérer" une disquette. Voir section 3.2.1.

  F4  : Bascule le son entre marche et arrêt.

  F5  : Charge un snapshot (dump de la mémoire), voir section 3.2.3.

  F6  : Sauvegarde un snapshot, voir section 3.2.3.

  F7  : Menu Setup (Menu des Réglages), voir section 4.1.

  F8  : Reset "hard", analogue au bouton de reset sur certains CPCs bricolés (ou

        au fait d'éteindre et de rallumer l'ordinateur). A utiliser si

        CTRL+SHIFT+ESC ne marche plus.

  F9  : Autorise/désactive la mise à jour de la palette.

  F10 : Menu Debug, expliqué au chapitre 7. Si vous entrez par inadvertance

        dans ce menu, appuyez sur "r" pour R)un ou sur "q" pour Q)uit.

  F11 : réservé pour une utilisation future.

  F12 : Quitte l'émulateur.



                            





3.2  Charger des programmes, Menus

==================================



  Dans cette section, vous apprendrez comment charger des programmes depuis

  une disquette, une cassette ou un snapshot. Pour l'opération inverse, la

  sauvegarde, ça ne sera pas très différent.On apprendra ici, également,

  comment utiliser le menu.

  





  3.2.1  Charger à partir de la disquette, Menus

  ----------------------------------------------



    Dans les conditions normales, l'AMSDOS ("Amstrad DOS") est actif, et

    toutes les instructions concernant les fichiers utilisent la disquette.

    En fait, vous n'aurez pas à insérer une vraie disquette de CPC dans

    le lecteur de disquettes de votre PC chaque fois que vous voudrez

    accéder à un fichier (outre le fait que votre PC n'utilise sûrement

    pas des disquettes 3 pouces !).

    Pour obtenir la vitesse maximale, une disquette de CPC est enregistrée

    dans un fichier DOS appelé "image de disque". Ce fichier peut se trouver

    n'importe où sur le disque dur, ou même sur une disquette 3,5 pouces 

    haute densité.

    

    Rappelons quelques instructions de l'AMSDOS :

    

    - CAT <RETURN> : affiche le catalogue.



    - Avec RUN"<nom_de_fichier>", vous chargez et lancez un programme.

      On peut omettre les guillemets de fin. Cette instruction est utile

      pour les programmes en Basic avec l'extension BAS, et, dans bien des

      cas, pour les programmes binaires avec l'extension BIN.



      Un moyen simple de lancer un programme :

      1. Ecrire le nom du programme, par exemple "disc", *sans* appuyer

         sur <RETURN>.

      2. Maintenir enfoncée la touche <CTRL> et appuyer sur la flèche

         gauche du curseur (le curseur bondit au début de la ligne).

      3. Avec toujours la touche <CTRL> enfoncée, appuyer sur <ENTREE> 

         (pas <RETURN> ! Celle du clavier numérique) : apparaît la mention

         RUN"disc, et le programme démarre.



    - LOAD"<nom_de_fichier>" charge un programme mais ne le lance pas. 

      Vous pouvez inspecter les programmes Basic avec LIST et les lancer

      ensuite avec RUN. En général, les programmes binaires ne se chargeront

      pas avec LOAD, mais vous pouvez essayer au préalable l'instruction

      MEMORY, par exemple avec "MEMORY &1fff".



    - SAVE"<nom_de_fichier>" sauvegarde un programme Basic. Pour les

      programmes binaires, vous devrez spécifier davantage de paramètres.

      Par exemple : SAVE"<nom_de_fichier>",b,&c000,&4000 sauvegarde l'écran.

      

    - MERGE"<nom_de_fichier>" est également possible : il fusionne un 

      programme Basic avec un autre déjà présent en mémoire.





    Quelques instructions spéciales de l'AMSDOS doivent être précédées

    par une barre verticale (ou un "ù" avec les claviers Azerty) :

    - |A, |B pour sélectionner le lecteur de disquettes (également possible 

      avec |DRIVE,0 ou 1)

    - |DIR,"<masque_de_nom_de_fichier>" pour voir le catalogue selon vos

      critères de sélection.

      Note importante : utilisez la syntaxe suivante sur un CPC 464 :

           a$="<masque_de_nom_de_fichier>" : |DIR,@a$

    - |ERA,"<nom_de_fichier>" efface un fichier.

      Note importante : utilisez la syntaxe suivante sur un CPC 464 :

           a$="<nom_de_fichier>" : |ERA,@a$

    - |REN,"<nouveau_nom>","<ancien_nom>" pour renommer un fichier.

      Note importante : utilisez la syntaxe suivante sur un CPC 464:

           a$="<nouveau_nom>" : b$="<ancien_nom>" : |REN,@a$,@b$

    - |TAPE pour commuter vers la cassette. Décrit dans la section suivante.

    - |DISC pour commuter vers la disquette.

    

    Il existe d'autres instructions, mais moins importantes.



                              



    Le menu "Insérer une Disquette"

    -------------------------------



    Jusqu'ici, vous ne pouviez utiliser qu'une seule disquette, celle qui

    est déjà "insérée" dans le lecteur. Pour en insérer une autre, appuyer

    sur la touche F3, et le menu suivant apparaît : 

               

                     Insert Disk

                     Drive               0

                     Side Select         0     

                     Write Protected     0

                     Autostart           1



    Avec les flèches du curseur <Haut> et <Bas>, vous pouvez sélectionner 

    une ligne. Vous pouvez aussi le faire en tapant en lettres (on corrige

    les erreurs de frappe avec <Suppr>). Changez les chiffres avec les 

    flèches <Gauche> et <Droite> ou en tapant directement un chiffre. Un 

    appui sur <RETURN> ou sur <ENTREE> et sur n'importe quelle ligne, par 

    exemple la première, prend en compte les modifications, alors qu'on 

    les annule avec <Esc>.

    "Drive" désigne le lecteur désiré (0 = A, 1 = B). 

    "Side Select" commute entre les deux faces, pour les lecteurs double 

    face, et n'a aucun effet sur les lecteurs simple face.

    Avec "Write Protected", vous pouvez marquer une disquette comme protégée 

    en écriture (0=Non, 1=Oui, protégée en écriture).

    Si "Autostart" est actif, le premier programme Basic sur la disquette est

    lancé automatiquement après l'insertion (alternative : DISC.BAS).



    Le Menu de sélection de fichier

    -------------------------------



    Pour sélectionner un fichier, appuyez sur <RETURN>, et un catalogue 

    du lecteur de disquettes apparaît. Sélectionnez une nouvelle disquette 

    de la même façon que décrit ci-dessus.



    Si une disquette est déjà présente dans le lecteur, vous n'avez pas

    besoin de l'"ôter" d'abord, comme vous le feriez dans la réalité avec

    un vrai CPC : l'opération est accomplie automatiquement. Au bas de

    l'écran, cette disquette est affichée.



    Vous verrez jusqu'à 15 fichiers ; s'il y en a davantage, le signe

    "[]" apparaît.

    - <Début> place le curseur sur le premier nom de fichier, <Fin> sur le

      dernier.

    - <PagePréc>/<PageSuiv> font défiler les pages de la liste.

    - <RETURN> prend en compte le nom sélectionné, <Esc> annule tout.

    Vous pouvez aussi sélectionner les noms directement en tapant leur

    première lettre.          



    Si vous utilisez une souris, cliquez "[]" pour <PagePréc>,

    "[]" pour <PageSuiv>, "[<]" pour <Gauche>, "[>]" pour

    <Droite> et [ok] pour <RETURN>.

    Utilisez le bouton droit de la souris pour marquer une ligne (comme

    double-clic), et "[_]" comme  <Esc>.



    ".." est le répertoire "parent" ; [A], [B], ... sont les lecteurs de

    disquettes disponibles. Ne sélectionnez que des lecteurs contenant une 

    disquette, sinon vous récolterez des ennuis !

    

    Il est également possible d'insérer des disquettes archivées dans un

    fichier compressé ZIP. Sélectionnez une archive ZIP en appuyant sur

    <RETURN>, et son contenu est affiché comme un répertoire normal. Si vous

    choisissez un fichier archivé dans un fichier ZIP, il est automatiquement

    extrait vers un fichier temporaire. Pour que cela soit possible, il faut

    que le programme PKUNZIP se trouve quelque part où le DOS puisse le

    trouver, ou même dans le sous-répertoire de CPCEMU.

    Les fichiers temporaires sont automatiquement détruits dès qu'on n'en 

    a plus besoin. Les éventuelles modifications que vous auriez pu faire 

    sur un fichier extrait d'une archive ZIP *ne sont pas* réécrites dans 

    l'archive. Si vous sauvegardez quelque chose sur une image de disquette

    archivée dans un fichier ZIP, ce sera perdu dès que vous insérerez une

    autre disquette : au cas où vous voudriez vraiment modifier un programme,

    il faudrait l'extraire avant de lancer CPCEMU.



    Comment créer des images de disque à partir de vos propres disquettes

    CPC ? Ce sera décrit au chapitre 5 (Transfert de données entre CPC et PC).









  3.2.2  Charger depuis et sauvegarder sur cassette

  -------------------------------------------------



    Qu'est-ce, en réalité, que la "cassette" sur CPCEMU ?

    Eh bien, les fichiers sur "cassette" sont des fichiers ordinaires 

    relevant des répertoires du DOS ! Ils n'ont pas besoin, comme les

    fichiers sur disquette, d'être présents dans un fichier DSK.

    Sur un CPC, après l'instruction "|TAPE", les instructions Basic portant 

    sur les fichiers utilisent la cassette, mais seulement celles qui ne

    sont pas précédées de "|". Vous pouvez employer les instructions décrites

    dans la section précédente (CAT, RUN", LOAD", SAVE", MERGE") avec les

    fichiers sur cassette.

    Si vous omettez un nom de fichier, le menu de sélection des fichiers

    apparaîtra tel qu'il est décrit dans la section précédente.

    Avec SAVE"", vous pouvez, soit écraser un fichier déjà existant, 

    soit en créer un nouveau, en spécifiant un nouveau nom sur la dernière

    ligne "(new name)".



    Vous pouvez aussi charger des programmes à partir d'une archive ZIP, 

    mais la sauvegarde, toujours impossible, est ignorée.



    Avec l'émulateur, vous avez ce qu'il y a de mieux comme lecteur de

    cassettes !







  3.2.3  Charger et sauvegarder des snapshots

  -------------------------------------------



    Les snapshots sont des "dumps" de la mémoire qui recèlent, non seulement 

    une copie du contenu de la mémoire, mais aussi l'état interne des divers

    circuits du CPC, par exemple le microprocesseur.

    A tout instant, vous pouvez interrompre un programme en train de tourner, 

    et le sauvegarder sous forme de snapshot ; plus tard, vous pourrez le 

    recharger et continuer la partie (si c'est un jeu) à l'endroit où vous 

    vous étiez interrompu.

    On crée un snapshot avec la touche F6. Spécifiez la taille du snapshot, 

    64K ou 128K. Les snapshots de 128K n'ont d'utilité que si la seconde

    banque de la mémoire était utilisée. Dans ce cas, précisez "Snapshot

    de 128 K = 1", le "1" signifiant "oui".



    Le menu de sélection de fichiers est le même que celui déjà décrit pour 

    les disquettes, avec les commentaires additionnels donnés pour la

    cassette (3.2.1 et 3.2.2).



    On recharge un snapshot avec la touche F5.









4.  Changer la Configuration

____________________________



Dans ce chapitre, vous apprendrez comment configurer CPCEMU pour vos propres

besoins. Le menu des réglages y sera décrit, ainsi que le fichier de 

configuration et les paramètres de la ligne de commande.



                                           



4.1  Le Menu des Réglages ("Setup Menu")

========================================



  C'est le moyen le plus simple de régler CPCEMU. Néanmoins, ce menu ne vous

  permettra pas de changer TOUS les réglages. Pour donner un exemple, si

  vous voulez utiliser des ROMs additionnelles, vous devrez employer le

  fichier de configuration décrit à la section 4.2.



  Comme déjà mentionné dans la section consacrée au clavier, vous entrez

  dans ce menu avec la touche F7. L'écran suivant apparaît (version en

  anglais :

  



       ___Emulation

       Emulation Delay        0

       Emulation Speed        1

       Interrupt Frequency    300

       Interrupt Resume       1

       Realtime               0



       ___Screen

       Colour Screen          1

       Multimode Update       0

       Palette Change         1

       Screen Offset          0

       Video Mode             0

       VSync Position         5



       ___Sound

       Sound Enabled          1

       Sound Device           2

       SB Delay               35

       SB Delay0              6

       SB DMA buf             128

       SB sample rate         0

       SB Stereo              0



       ___Control

       Joy0 Calibrate

       Joy1 Calibrate

       KBD Language           0

       Mouse enabled          1



       ___Ppi_Settings

       Company Name           7

       PPI 50Hz               1

       PPI EXP signal         1



       ___Misc

       Amsdos disabled        0

       Amsdos speedup         1

       Break mask             3

       EMS enabled            1

       Language               0

       Tape Bypass            1

       CPC Type               2

       Show Config

       Load Configuration

       Restart Emulation

       Save Configuration

       Poke Database                      base de données pour tricher aux jeux            

       Dos Shell

       Continue





  Sélectionnez les réglages comme déjà décrit en 3.2.1.





  Emulation Delay

    Cette option vous permet de ralentir l'émulation si elle est trop rapide.

    0 signifie "aucun délai", 100 est un court délai, 300 un délai plus long.



  Emulation Speed

    0 = émulation lente du Z80

    1 = émulation rapide du Z80



  Interrupt Frequency

    Pour changer la fréquence à laquelle les interruptions sont produites.

    Sur un vrai CPC, c'est toujours 300 Hertz. Si vous augmentez cette 

    valeur, beaucoup de programmes sembleront tourner plus vite, mais il y 

    a moins de puissance de calcul entre deux interruptions. Si vous avez un

    ordinateur plutôt lent, vous devrez parfois rabaisser cette valeur entre

    100 et 200. On peut choisir une valeur entre 18 et 600.

    Pour plus d'informations, voir le chapitre 7.



  Interrupt Resume

    Encore une de ces options qu'on ne peut pas expliquer sans un minimum

    d'information d'arrière-plan. Sur un ordinateur sans mémoire EMS

    (mémoire paginée), l'option mise sur 0 signifie que ces interruptions

    peuvent être négligées. En principe, ce n'est pas souhaitable, mais

    avec une valeur de 1, l'émulation est trop lente. Avec de la mémoire

    paginée, l'option est mise sur 1, de sorte que CPCEMU tente de gérer

    chaque interruption.

    Note importante : il semble que CP/M Plus ne tourne qu'avec de la 

    mémoire paginée et cette option mise sur 0 ! 

    Pour plus d'information, voir au chapitre 7.



  Real Time

    Active le temps réel du CPC. L'émulateur insère alors des temps

    d'attente pour fonctionner à la vitesse d'un vrai CPC.



  Colour Screen

    Emulation d'un écran couleurs ou d'un écran vert, en changeant la 

    palette.



  Multimode Update

    Si des programmes utilisent plusieurs modes graphiques sur le même 

    écran, mettez cette option sur 1. Alors, CPCEMU essaiera de les gérer

    correctement.

    Par défaut, l'option est déconnectée, parce que cela ne marche pas

    bien dans tous les cas.



  Palette Change

    Réglez cette option sur 0 pour désactiver les changements de palette.

    Cela n'a de sens que si vous ne pouvez rien voir à l'écran pour cause

    de scintillement. Si vous appuyez sur la touche F8 pour obtenir un

    reset, l'option est remise sur 1 automatiquement.

    Suggestion : si la mise à jour de la palette est désactivée et que

    vous voyez des couleurs complètement fausses, essayez d'appuyer deux 

    fois de suite sur F2.



  Screen Offset

    Spécifiez le nombre de lignes de texte dont l'écran du CPC doit être

    déplacé verticalement. Normalement, vous n'avez pas besoin de cette

    option. Vous obtiendrez le même effet avec les touches <PagePréc> et

    <PageSuiv>. Valeurs possibles : de 0 (pas de déplacement) jusqu'à 25.



  Video_Mode

    Règle le mode vidéo de la carte VGA.

    0 => 640 x 200 x 16 (par défaut)

    1 => 640 x 350 x 16

    2 => 640 x 480 x 16

    et si vous avez un BIOS VESA, le plus fréquemment :

    3 => 800 x 600 x 16

    4 => 1024 x 768 x 16

    5 => 1280 x 1024 x 16

    ...

    ATTENTION :

    N'utilisez les modes supérieurs ou égaux à 3 que si votre moniteur

    peut les supporter ! S'il se produit des bruits étranges, éteignez-le

    immédiatement ! Mais cela ne devrait arriver qu'avec de très vieux

    moniteurs.



  VSync Position

    Habituellement, vous n'avez pas besoin de cette option, mais rien de

    dommageable ne peut arriver si vous l'essayez.

    A chaque "rafraîchissement" de l'écran, un retour vertical du faisceau

    d'électrons se produit (le "frame"), et un bit spécial, appelé le bit 

    VSYNC ("vertical synchronisation") est mis à 1. Vous pouvez définir la

    position où la synchronisation verticale se produit. Les valeurs 

    possibles vont de 0 à 5. Pour plus d'information, lire le chapitre 7.



  Sound Enabled

    Active la sortie du son. 1=marche, 0=arrêt. Vous pouvez aussi appuyer 

    sur la touche de fonction F4.



  Sound Device

    Définit le périphérique de sortie du son :

    0 = aucun

    1 = haut-parleur du PC

    2 = SoundBlaster (Pro), son FM

    3 = SoundBlaster (Pro), son numérique, et merci à Ulrich Doewich

    4 = GUS (Gravis Ultrasound), et merci à Ulrich Doewich



  Sb Delay

    Fixe la valeur du délai d'attente après chaque accès en écriture sur 

    la carte-son. Avec des valeurs basses (par exemple 0), la sortie du 

    son est accélérée. Si un problème se présente, utilisez 35.



  Sb Delay0

    Encore un délai pour la SoundBlaster. Ne le modifiez pas.



  SB DMA buf

    Définit la taille du tampon DMA (Direct Memory Access) destiné aux sons

    numériques SoundBlaster.



  SB sample rate

    Définit le taux d'échantillonnage des sons numériques.

    0 vaut pour 22 KHz, et 1 pour 44 KHz.



  SB Stereo

    Drapeau stéréo : 0 pour non et 1 pour oui.



  Joy0 Calibrate

    Vous savez sûrement, pour avoir utilisé d'autres programmes, que vous

    devez calibrer avant toute chose le joystick analogique du PC.

    Sélectionnez cette option en appuyant sur <RETURN>, déplacez le joystick

    vers le haut et à gauche, puis vers le bas et à droite. Alors, des

    paramètres sont affichés. Si vous désirez réutiliser votre joystick,

    notez-les et écrivez-les dans le fichier de configuration (voir section

    suivante). Néanmoins, vous devrez répéter l'opération si vous changez

    de joystick.



  Joy1 Calibrate

    Comme pour précédemment, mais pour le joystick 1.



  KBD Language

    Avec cette option, vous pouvez sélectionner une répartition des touches

    du clavier valable pour d'autres pays.

    0 = UK (Royaume Uni, par défaut)

    1 = GR, clavier "presque allemand". Malheureusement, il est impossible

    d'avoir un vrai clavier allemand, car les touches SHIFTées ne peuvent 

    pas être mises en correspondance avec des touches non-SHIFTées. Mais "Z" 

    et "Y" sont permutés, et d'autres caractères modifiés.

    2 = FR, clavier "presque français". Voir ci-dessus ce qu'on en dit 

    pour l'allemand.





              +--------------------------------------------------+

              Ý                NOTE DU TRADUCTEUR                Ý

              Ý--------------------------------------------------Ý

              Ý                                                  Ý

              Ý    Heureusement, cette question a été résolue    Ý

              Ý    à 99,99 pour cent.                            Ý

              Ý                                                  Ý

              Ý    Lisez plutôt le texte COCORICO.TXT qui        Ý

              Ý    accompagne cette version de CPCEMU : vous     Ý

              Ý    saurez tout sur la francisation complète      Ý

              Ý    du clavier.                                   Ý

              Ý                                                  Ý

              +--------------------------------------------------+



  3 = SP, clavier "presque espagnol"



  Mouse enabled

    Active l'utilisation de la souris dans les différents menus.

    

  Company Name

    0 = Isp

    1 = Triumph

    2 = Saisho

    3 = Solavox

    4 = Awa

    5 = Schneider

    6 = Orion

    7 = Amstrad



  PPI 50 Hz

    Le CPC peut fonctionner sur le courant alternatif du secteur, sur :

      0 - 60 Hz

          ou

      1 - 50 Hz (par défaut en Allemagne, en France, etc.)

    Durant un reset de l'écran, le bit 4 du port B du PPI est vérifié,

    et le CRTC est initialisé comme il convient.

    Laissez-le sur 50 Hz.



  PPI EXP signal 

    Certaines cartes d'extensions positionnent ce sémaphore sur le PPI.

    Sur un CPC 464, il est mis à 1 si un lecteur de disquettes est connecté.

    Sur un CPC 6128, il est toujours mis à 1.



  Amsdos disabled

    "Oublie" l'initialisation de l'Amsdos. Utile si vous désirez charger

    des programmes depuis une cassette sans donner auparavant l'instruction

    "|TAPE" ou "ùTAPE".

    Le plus simple serait de transformer en commentaire, à l'aide d'un 

    point-virgule, la ligne ROM_BLOCK pour l'AMSDOS (puisque avec ROM_BLOCK 

    vous spécifiez les ROMs à charger), mais avec cette conséquence que 

    l'Amsdos n'est plus du tout présent.

    Alors qu'avec cette option, il le sera.



  Amsdos speedup

    Permet une modification de la ROM Amsdos, accélérant les accès-disque.

    Réalisé en minimisant les délais d'attente du moteur du lecteur, bien

    sûr inutiles pour l'émulateur.



  Break mask

    Réservé aux opérations de déboguage. Avec une valeur 3 dans le fichier 

    de configuration, on évite les erreurs causées par des instructions

    illégales. Ne pas modifier cette valeur.



  EMS enabled

    Autorise l'utilisation de la mémoire paginée (EMS, ou Expanded Memory

    System). S'il n'y a pas assez de mémoire paginée disponible, CPCEMU

    utilise automatiquement la mémoire conventionnelle.

    Pour plus d'information sur la mémoire EMS, consultez la section 2.3.1

    et le chapitre 7.



  Language

    Langue utilisée dans les messages d'aide :

      0 = UK (anglais)

      1 = GR (allemand)

      2 = FR (français)

      3 = SP (espagnol)



  Tape Bypass

    Autorise l'usage de la cassette.

    Davantage d'information sur la dérivation des vecteurs-cassette au 

    chapitre 7.



  CPC Type

    Définit le type de CPC désiré :

    0 = CPC 464

    1 = CPC 664

    2 = CPC 6128

    3 = CPC 464+ (?)

    4 = CPC 6128+ (?)

    5 = KC compact

    Si vous voulez utiliser les types 3 ou 4, vous devrez d'abord trouver

    les images des ROMs nécessaires et les spécifier dans CPCEMU.CFG.

  

  Show Config

    

  Load Configuration

    Charge un autre fichier de configuration sauvegardé auparavant par

    "Save Configuration". Certains paramètres peuvent n'avoir aucun effet 

    jusqu'à ce que vous relanciez l'émulation avec "Restart Emulation et

    les nouvelles valeurs.



  Restart Emulation

    Après avoir chargé une configuration avec "Load Configuration", vous

    pouvez relancer l'émulation avec les nouvelles valeurs.



  Save Configuration

    Sauvegarde la configuration courante.

    Notez que vous ne pouvez pas écraser le fichier de configuration 

    originel, celui nommé CPCEMU.CFG.



  Poke Database

    Vous jouez à un jeu que vous ne pouvez pas terminer ? Alors essayez 

    cette sélection de POKEs. Si votre jeu figure dans la liste, vous 

    pourrez le rendre plus facile en obtenant des vies infinies, par 

    exemple. 

    Vous pouvez étendre cette liste (CPCEMU.DBF) avec vos propres POKEs. 

    Voyez le chapitre 7 pour une description de ce fichier.



  Dos Shell

    Ouvre une fenêtre vers le DOS avec davantage de mémoire libre. Vous

    revenez à CPCEMU avec "EXIT".



  Continue

    Prend en compte les valeurs choisies et revient à l'émulation.

    Vous obtiendrez le même effet en appuyant sur <RETURN> dans n'importe

    quelle ligne contenant une valeur.









4.2  Le fichier de configuration

================================



  Apprenons à présent un autre moyen de configurer CPCEMU.

  Lors de son lancement, CPCEMU lit d'abord le fichier de configuration 

  appelé CPCEMU.CFG, toujours employé par défaut. Notez que, lorsque vous

  lancez CPCEMU avec un fichier CPCxxx.BAT, il est localisé dans le sous-

  répertoire TMP. Cela autorise les configurations définies par l'utilisateur,

  même si CPCEMU se trouve sur un CD-ROM.

  La structure de ce fichier est décrite de telle manière que vous pourrez

  utiliser vos propres ROMs, changer en permanence la nationalité du clavier, etc.

  

  Un aperçu du fichier CPCEMU.CFG :



    ;CPCEMU.CFG - The Configuration File for CPCEMU (v1.5)

    ;Marco Vieth, 20.11.1997

    ;

    ; standard configuration for CPC 464, 664, 6128, 646+, 6128+, KC compact

    ;

    SHOW_CONFIG=0            ;should the configuration be displayed?

    CPC_TYPE = 2             ;CPC 6128, if no command line parameter -t

    ...

  Déjà, avec ces quelques lignes, vous constatez une structure : les

  commentaires commencent par un point-virgule (;). Les options sont

  modifiées en écrivant un mot-clé suivi par le signe "=", suivi par une

  <valeur>. La <valeur> dépend du mot-clé, et peut être une chaîne ou un

  nombre. Les nombers peuvent être donnés en décimal, en hexadécimal ("0x")

  ou en binaire ("%").



  Lorsque vous connaissez le sens des mots-clés, vous pouvez ajuster les

  valeurs avec un éditeur de textes, selon vos besoins.



  Vous connaissez déjà la plupart des mots-clés du menu des réglages.

  Voici d'abord une liste alphabérique de tous les mots-clés :



  #ENDIF

  #IFCPC

  AMSDOS_DISABLED

  AMSDOS_SPEEDUP

  BREAK_MASK

  COLOUR_SCREEN

  COMPANY_NAME

  CPC_TYPE

  DATA_FILE

  DRIVE_A

  DRIVE_A_AUTOSTART

  DRIVE_A_SIDE

  DRIVE_A_WRITEPROT

  DRIVE_B

  DRIVE_B_AUTOSTART

  DRIVE_B_SIDE

  DRIVE_B_WRITEPROT

  EMS_ENABLED

  EMULATION_DELAY

  EMULATION_SPEED

  HELP_FILE

  INTERRUPT_FREQUENCY

  INTERRUPT_RESUME

  JOY0_CALIBRATE

  JOY1_CALIBRATE

  KBD_LANGUAGE

  LANGUAGE

  MOUSE_ENABLED

  MULTIMODE_UPDATE

  PALETTE_CHANGE

  POKE_DATABASE

  PPI_50HZ

  PPI_EXP_SIGNAL

  PRINTER

  RAM_SIZE

  REALTIME

  ROM_BLOCK

  ROM_PATH

  SB_DELAY

  SB_DELAY0

  SB_DMA_BUF

  SB_SAMPLE_RATE

  SB_STEREO

  SCREEN_OFFSET

  SHOW_CONFIG

  SNAPSHOT

  SOUND_DEVICE

  SOUND_ENABLED

  TAPE_BYPASS

  TAPE_PATH

  TMP_PATH

  VIDEO_MODE

  VSYNC_POSITION



  Voici maintenant la signification des nouveaux mots-clés :



  - #ENDIF, #IFCPC

    Des instructions de contrôle pour la configuration conditionnelle, selon

    le CPC désiré :

      #IFCPC <Type de CPC> ... #ENDIF

    Pour <Type de CPC>, les quatre types de "CPC_TYPE" sont valides.

    Par conséquent, vous n'avez besoin que d'un seul fichier de

    configuration pour tous les CPCs. Les fichiers batch CPC464.BAT,

    CPC664.BAT et CPC6128.BAT fixent le type désiré avec les paramètres

    de la ligne de commande. Ceux-ci sont expliqués dans la section qui

    suit.



  - DATA_FILE = "<chemin + nom de fichier>"

    Prescrit le fichier de données (CPCEMU.DAT).



  - DRIVE_A = "<chemin + nom de fichier>"

    Fixe le chemin vers les images de disquettes. Si vous employez un

    nom de fichier dans le chemin, cette "disquette" est automatiquement

    "insérée" dans le lecteur A;

    La section 3.2.1 décrit le chargement et la sauvegarde sur disquette.



  - DRIVE_A_AUTOSTART



  - DRIVE_A_SIDE



  - DRIVE_A_WRITEPROT



  - DRIVE_B = "<chemin + nom de fichier >"

    Comme pour DRIVE_A... masi pour le lecteur B.



  - DRIVE_B_AUTOSTART



  - DRIVE_B_SIDE



  - DRIVE_B_WRITEPROT



  - JOY0_CALIBRATE = <xcen>, <ycen>, <xdead>, <ydead>

    Définit une calibration de joystick pour votre joystick analogique.

    Utilisez les valeurs affichées après la calibration du joystick dans

    le menu des réglages (voir section 4.1).

    Ceci est un mot-clé avec 4 valeurs. Vous devez toujours les spécifier

    toutes. 4 fois 0 signifie "non calibré".

    

  - JOY1_CALIBRATE = <xcen>, <ycen>, <xdead>, <ydead>

    Comme pour JOY0_CALIBRATE.

    

  - POKE_DATABASE = "<chemin + nom de fichier>"

    Fixe le fichier de base de données de POKEs (CPCEMU.DBF).



  - PRINTER = "<chemin + nom de fichier>"

    Fixe le fichier où les sorties vers l'imprimante sont collectées.

    Il esr effacé à chaque lancement de l'émulateur.

    Après avoir quitté l'émulateur, vous pouvez l'envoyer vers votre

    imprimante avec "COPY <nom de fichier> prn:".



  - ROM_BLOCK = <numéro de ROM>, "<nom de fichier>", <position de la ROM>

    Prescrit quelle ROM devrait être chargée, et où.

    Répétez cette ligne pour chaque ROM que vous voulez charger.

    Le nombre maximal de ROMs peut aller jusqu'à 20, si vous itilusez

    de l'EMS.

        * <numéro de ROM> est le numéro assigné à la ROM, celui qui est

          sélectionné par "OUT &DF00, <numéro de ROM>". Les valeurs

          possibles sont :

                  0         : ROM d'avant-plan (par exemple le Basic).

                  1 - 251   : ROMs d'arrière-plan. Sur un CPC 664/9128, les

                              ROMs de 1 à 15 sont automatiquement initialisées

                              durant le reset (sur un CPC 464, seulement les

                              ROMs de 1 à 7).

                              La ROM de l'AMSDOS a toujours le numéro 7.0

                  255       : ROM basse (par exemple le système d'exploitation).

                              N'a que ce numéro dans l'émulateur.

        * <nom de fichier> est un fichier dans le sous-répertoire ROM_PATH,

          qui contient la ROM.



        * <position de la ROM> vaut naturellement 0. Si un fichier contient

          davantage de ROMs, c'est alors la position de la ROM désirée : 0,

          1, 2, etc.

            ROM_BLOCK = 255, "CPC6128.ROM", 0

            ROM_BLOCK = 0  , "CPC6128.ROM", 1

          La ROM basse et la ROM d'avant-plan sont chargées l'une après l'autre

          à partir du même fichier.

          

  - ROM_PATH = "<chemin>"

    Fixe le chemin vers les images de ROM. Dans le fichier de configuration, ce

    chemin est initialisé avec ".\ROM". Les ROMs elles-mêmes sont définies avec

    le mot-clé ROM_BLOCK.

    

  - SNAPSHOT = "<chemin + nom de fichier>"

    Fixe le chemin vers les snapshots. Si vous sépcifiez un fichier de snapshot

    comme nom de chemin, ce snapshot sera lancé automatiquement.

    Voyez la section 3.2.3 pour davantage de détails.

    

  - TAPE_PATH = "<chemin>"

    Fixe le chemin vers les fichiers "cassette". Dans le fichier de

    configuration, ce chemin est initialisé avec ".\TAPE".

    Voyez la section 3.2.2 pour davantage de détails.



  - TMP_PATH = "<chemin>"

    Fixe le chemin des fichiers temporaires. Vous en avez surtout besoin

    si vous sélectionnez un fichier à l'intérieur d'nue archive ZIP, car

    CPCEMU les extrait à cet endroit avec PKUNZIP.

    

    

    

4.3  Paramètres de la ligne de commande

=======================================



  Comme vous le savez à propos d'autres programmes, il est également

  possible avec CPCEMU d'utiliser des paramètres sur la ligne de commande.

  Il y en a d'ailleurs très peu.

  

  Vous pouvez exécuter CPCxxx.BAT avec les options suivantes :

       /f          : employer le mode rapide (par défaut)

       /s          : employer le mode lent

       /d          : employer le mode débogage, décrit au chapitre 7

       /x          : désactiver l'utilisation de la mémoire EMS

       /c <fichier>: spécifier un autre fichier de configuration, en

                     négligeant le fichier par défaut CPCEMU.CFG. Voir la

                     section 4.2

       /t <type>   : choisir le CPC désiré : 464, 664 ou 6128, 464+, 6128+

                     ou KC compact avec /t 0 à /t 5 respectivement.

       /h          : afficher un écran d'aide



  L'option "/d" est automatiquement utilisée, si une option inconnue a été

  spécifiée.

  A la place de "/", vous pouvez aussi utiliser "-", comme sous UNIX.









5.  Transfert de données entre CPC et PC

________________________________________



Que faire avec un bon émulateur si vous n'avez pas de programmes pour

l'alimenter, ou si vous ne voyez aucune possibilité de transférer des

programmes du CPC vers le PC ?

Au chapitre 6 (Sources d'approvisionnement,...), des sources "ftp" sont 

énumérées, où l'on peut trouver des programmes pour CPC.  

Le présent chapitre traite du transfert des données depuis le CPC vers 

le PC. Des utilitaires adaptés aux différentes méthodes possibles sont

décrits (disquette, avec une interface parallèle ou série).









5.1  La disquette comme intermédiaire

=====================================

                      

  C'est le moyen le plus simple de transférer des programmes pour CPC 

  vers le PC. Vous n'avez besoin que d'un CPC avec un second lecteur de

  disquettes du bon format, c'est-à-dire que les disquettes qu'il reçoit

  doivent correspondre au format du lecteur de votre PC (sinon, vous

  pourriez toujours tenter de connecter un lecteur 3 pouces à votre PC). 

  Le PC doit être "persuadé" de reconnaître les disquettes au format CPC

  au moyen d'un utilitaire de lecture des formats CPC appelé CPCTRANS.







  5.1.1  Le programme de transfert de disquettes CPCTRANS

  -------------------------------------------------------



    J'ai conçu CPCTRANS afin de créer des images de disquettes à partir 

    de disquettes CPC. Les formats standard du CPC aussi bien que les

    formats double face de Vortex sont reconnus.

    CPCTRANS n'est pas fait pour transférer des formats protégés contre

    la copie !

    Lorsque vous appellerez CPCTRANS sans paramètres, vous obtiendrez 

    un court aperçu.

    CPCTRANS est équivalent à l'instruction COPY du DOS :

    

            "CPCTRANS <source> <destination> <options>".



    Exemples :

    "CPCTRANS B: DISK1.DSK" copie la disquette du lecteur B vers l'image

    de disquette DISK1.DSK. Si cette dernière n'existe pas, elle est créée.

    "CPCTRANS DISK1.DSK B:" recopie l'image de disquette DISK1.DSK sur la

    disquette insérée dans le lecteur B.



    La première commande ne fonctionne que pour le format DATA.

    Pour les autres formats, vous devrez employer une option :

      /f 0    : format DATA (par défaut)

      /f 1    : format DATA, double face

      /f 2    : format SYSTEM

      /f 3    : format SYSTEM, double face

      /f 4    : format VORTEX, double face

      /f 5    : inconnu, CPCTRANS essaie de l'identifier

      /f 6    : +3DOS

    Notez l'espace entre "/f" et le nombre.

    Lorsque vous utiliserez les formats DATA ou SYSTEM en double face,

    vous pourrez sélectionner la face A ou B dans le menu Disk (3.2.1).



    Quand vous recopiez une image de disquette sur une disquette réelle,

    celle-ci doit avoir le même format ! Pour les simples formats, vous

    pouvez employer 22DISK, décrit dans la prochaine section.



    Pour copier la face B d'une disquette, utilisez l'option "/s 1".

    Avec "CPCTRANS B: DISK1.DSK /s 1", seule la face B de la disquette

    est copiée ; avec "CPCTRANS DISK1.DSK B: /s 1", la copie est recopiée 

    sur la disquette du lecteur B.



    L'option "/v" active le mode "verify", obligeant CPCTRANS à vérifier

    que la copie est correcte. C'est un peu plus lent, mais cela augmente

    la sécurité.



    L'option "/t <nombre>" fixe le nombre de pistes à copier. Normalement,

    il y a 40 pistes, seul le format VORTEX en a 80.



    L'option "/q" (quick format) est une particularité avec laquelle vous

    pouvez formater une image de disquette, au lieu d'y copier des données.

    Vous devez néanmoins spécifier un lecteur valide comme premier paramètre, 

    même s'il n'est (évidemment) pas utilisé.

    Exemple :

    "CPCTRANS a: SYSTEM.DSK /f 2 /q" formate SYSTEM.DSK en tant qu'image

    de disquette, avec le format SYSTEM.







  5.1.2  L'utilitaire de formatage et de copie 22DISK (de SYDEX)

  --------------------------------------------------------------



    Ce programme est disponible en shareware. Avec les définitions 

    correctes, vous pouvez utiliser presque tous les formats CP/M !

    Malheureusement, les formats employés par le CPC ne sont pas inclus

    avec la copie d'évaluation de 22DISK. Pour y remédier, j'ai défini

    ces formats dans le fichier CPMDISKS.DEF. Vous le trouverez dans le

    sous-répertoire UTILITY.

    Que peut-on faire avec 22DISK ?

    On peut transférer, dans les deux sens, de simples fichiers aux

    formats DOS et non-DOS, formater des disquettes, etc.

    Copiez les fichiers CPC dans le sous-répertoire TAPE. Lisez la

    section 3.2.2 pour savoir comment faire.







5.2  L'interface parallèle

==========================



  Si votre CPC n'a pas de second lecteur, vous pouvez faire vos transferts

  de données par l'intermédiaire de l'interface parallèle. L'idée vient de

  Gilles Molinari, et il a également écrit pour cela des programmes en

  Turbo Pascal. Mais peut-être appartenez-vous à l'armada d'utilisateurs

  qui n'ont PAS le compilateur Turbo Pascal sur leur CPC, et ne peuvent

  donc rien faire avec le programme source en Pascal ! Aussi ai-je réécrit

  les utilitaires en Basic Locomotive, et étendu leur action dans le sens

  PC->CPC.

  Ainsi, il est possible de transférer des fichiers dans les deux sens

  entre CPC et PC ! Le CPC et le PC seront réunis par leur interface

  parallèle.



  Si vous possédez un CPC 6128 avec des connecteurs Centronics, et que vous 

  les comparez avec une imprimante, vous noterez que CPC et PC correspondent

  très bien au moyen d'un câble standard pour imprimante PC. Mais ne faites 

  rien encore, lisez la suite.

  

  Il semble que seuls les CPCs Schneider ont des connecteurs Centronics. 

  Si vous avez un Amstrad CPC 6128 avec de simples connecteurs étroits,

  ou un CPC 464 ou 664, utilisez le diagramme placé à la fin de cette 

  section.



  D'abord, vous devrez franchir deux obstacles :

  1. construire un adaptateur simple

  2. taper un court programme sur le CPC



  Attendez ! Ne sautez pas le reste !



  Ces deux étapes sont très simples, parce que :

     - l'étape 1 est possible sans rien souder

     - l'étape 2 est vraiment très courte (environ 30 lignes de Basic)



  Logiquement, voyons l'étape 2 d'abord.

  Le programme dont vous avez besoin s'appelle CPCREC.BAS, et il se trouve 

  dans le sous-répertoire UTILITY. Il est sauvegardé en ASCII, donc vous

  pouvez le sortir sur votre imprimante sans difficulté ; ensuite, tapez-le

  sur le CPC.

  Son travail va être analogue à la cordelette que vous envoyez le long d'un

  tuyau, pour y tirer ensuite un gros câble.

  Ici, la cordelette, ce sera CPCREC.BAS, qui reçoit sur le CPC des

  programmes en provenance du PC.

  Avec ce petit utilitaire, vous obtiendrez CPCPARA.BAS (le gros câble) sur

  le CPC. Enfin, avec CPCPARA.BAS, vous pourrez recevoir et transmettre. 

  Vous n'aurez alors plus besoin de CPCREC.BAS.

  Du côté du PC, vous utiliserez PCPARA.EXE, aussi inclus dans le sous-

  répertoire UTILITY.



  Mais avant de taper CPCREC.BAS sur le CPC, voyons l'étape 1 :





  L'adaptateur parallèle

  ----------------------

  Il vous un adaptateur entre le CABLE d'imprimante et la SORTIE imprimante

  du PC.

  C'est facile avec une "wiring box" ("boîte à fils") pour interface RS-232. 

  Elle a un côté mâle "D-sub" à 25 broches ("plug") et un côté femelle

  "D-sub" à 25 broches ("socket").

  En branchant de courts fils à l'intérieur de la boîte, vous pouvez

  réaliser toutes les connexions possibles entre les deux côtés.

  Habituellement, ce type de boîte est employé, comme son nom l'indique,

  pour adapter les interfaces RS-232. Les connexions en série ne fonctionnent

  pas du premier coup, savez-vous ?

  L'adaptateur sera branché, côté mâle vers le PC, et côté femelle vers le

  câble.

  

  Voici les connexions à faire dans la boîte :

  

             Côté mâle                            Côté femelle

             pour la sortie-imprimante du PC      pour le câble

        

             Broche 2     ---------------         Broche 11

             Broche 10    ---------------         Broche 8

             Broche 11    ---------------         Broche 1

             Broche 12    ---------------         Broche 7

             Broche 13    ---------------         Broche 6

             Broche 15    ---------------         Broche 5

             Broche 19    ---------------         Broche 19





  Comme vous voyez, vous n'avez pas besoin de 25 fils, 7 suffisent.



  Bien qu'une "wiring box" soit bon marché si vous l'achetez par 

  correspondance, vous trouverez peut-être encore meilleur marché si 

  vous utilisez une "jumper box" (boîte à cavaliers). Mais vous aurez 

  à souder les fils. Le moins cher consiste à acheter un connecteur 

  mâle "D-sub" à 25 broches, et un connecteur femelle "D-sub" à 25 

  broches également. Plus quelques fils.



  A présent, je présume que vous avez connecté les deux ordinateurs

  avec l'adaptateur, et que CPCREC.BAS est dans la mémoire de votre CPC.

  Que faire maintenant ?

  

  1. Sur le CPC :  lancez CPCREC.BAS (après l'avoir sauvegardé...)

  2. Sur le PC  :  tapez "PCPARA /s CPCPARA.BAS"



  Si aucun message d'erreur n'apparaît sur l'écran du PC, tout va bien,

  le fichier CPCPARA.BAS est sur le CPC.



  Si le PC n'envoie rien et affiche un message d'erreur, c'est que la

  connexion peut être incorrecte.

  S'il envoie quelque chose (message "Sending block xx"), mais qu'un

  message d'erreur apparaît occasionnellement, votre PC est peut-être

  trop rapide ou trop lent : le transfert dans le sens PC->CPC est très

  sensible à la question de vitesse, sachez-le.

  Sur mon 386/33, il ne fallait pas que la mémoire EMS soit installée, 

  car elle est trop lente. Sur un ordinateur très rapide, il pourrait

  être nécessaire d'utiliser le commutateur "turbo", si vous en avez un.

  De toute façon, n'utilisez le programme que sous DOS, pas sous OS/2 

  ni sous Windows.



  Si cela ne marche pas du tout, envoyez-moi une note.

  En attendant, vous pourriez taper le programme CPCPARA.BAS, qui est 

  un peu plus long : dans le sens CPC->PC, cela fonctionne toujours, 

  même sous OS/2, parce que le processus est presque le même que l'action

  d'imprimer : le PC se comporte comme une imprimante.



  Je présume que vous avez maintenant CPCPARA.BAS sur votre CPC.

  Transférez les fichiers du CPC vers le PC de la façon suivante :

  1. Sur le PC :  tapez "PCPARA /r".

  2. Sur le CPC : lancez CPCPARA, sélectionnez S)end, et donnez le nom de 

     chaque fichier que vous voulez transmettre au PC (il faudra retaper

     "PCPARA /r" pour chaque fichier ; CPCPARA, lui, tourne comme une 

     boucle sans fin).





  Ainsi, utilisez PCPARA de la façon suivante :

  - PCPARA /r : lance PCPARA dans le mode réception

  - PCPARA /s <fichier> : envoie <fichier> vers le CPC ; si vous utilisez

    "TRM:" en guise de nom de fichier, vous aurez un terminal.



  Tous les programmes contenus dans le sous-répertoire UTILITY affichent

  un aperçu de leurs options si vous les appelez sans paramètres.





  ATTENTION !

  Même si la construction est très simple, je ne peux pas garantir que

  vous n'aurez aucun dommage. Si le port-imprimante de votre CPC est 

  endommagé après cela, ce sera un "malheureux accident" ! Peut-être

  aurait-il, aussi, été endommagé si vous aviez simplement connecté une 

  imprimante. Par exemple, je connais un ancien utilisateur de CPC dont 

  le clavier ne fonctionnait plus correctement ; après la réparation,

  on lui a dit qu'il n'aurait pas dû brancher le joystick alors que

  l'ordinateur était allumé ! (Et alors, je le fais constamment ?!?)

  

  Pour revenir à nos moutons :

  J'ai construit l'adaptateur avec succès. Et j'ai même, parfois, "oublié"

  d'insérer l'adaptateur dans le connecteur, sans avoir eu aucun problème.

  







  Diagrammes de David Chapeau, si votre CPC n'a pas de prise Centronics :



   34 <- - - - - - - - 18      \

   ______________________      |

  |   ________________   |     |

  |  |________________|  |   - | ---> Connecteur (femelle) 

  |______________________|     |      de l'imprimante

                               |      

   17 < - - - - - - - - 1      |

                               |

     ||||||||||||||||||        |

     ||||||||||||||||||        \

     ||||||||||||||||||         >   Câble "CPC 6128 vers DMP 2160"

     ||||||||||||||||||        /

     ||||||||||||||||||        |

                               |

   1 - - - - - - - - > 18      |

  ________________________     |

  \    ______________    /     |

   \  |______________|  /    - | ---> Connecteur (mâle) Centronics

    \__________________/       |

                               |

   19 - - - - - - - -> 36      /







   18 < - - - - - - - - 1      \

  ________________________     |

  \    ______________    /     |

   \  |______________|  /    - | ---> Connecteur (femelle) Centronics

    \__________________/       |

                               |

   36 <- - - - - - - - 19      |

                               |

         ||||||||||||||||||        |

     ||||||||||||||||||        \

     ||||||||||||||||||         >   Adaptateur parallèle PC

     ||||||||||||||||||        /

     ||||||||||||||||||        |

                               |

   1 - - - - - - - - > 13      |

  ________________________     |

  \  ..................  /     |

   \  ................  /    - | ---> Connecteur Sub-D (mâle)

    \__________________/       |      vers le PC (LPT1)

                               |

   14 - - - - - - - -> 25      /





   13 < - - - - - - - - 1      \

  ________________________     |

  \  ..................  /     |

   \  ................  /    - | ---> Connecteur Sub-D (femelle)

    \__________________/       |

                               |

   25 <- - - - - - - - 14      |

                               |

     ||||||||||||||||||        |

     ||||||||||||||||||        \

     ||||||||||||||||||         >   "Wiring Box" RS 232

     ||||||||||||||||||        /

     ||||||||||||||||||        |

                               |

   1 - - - - - - - - > 13      |

  ________________________     |

  \  ..................  /     |

   \  ................  /    - | ---> Connecteur Sub-D (mâle)

    \__________________/       |      vers le PC (LPT1)

                               |

   14 - - - - - - - -> 25      /







  Connecteur  Centronics   Centronics    Connecteur   Connecteur  Connecteur

  Imprimante   (femelle)     (mâle)        Sub-D         Sub-D      Sub-D   



      1 ---------  1            1 ---------  1           11 ---------  2

            .                         .                   8 --------- 10

            .                         .                   1 --------- 11

            .                         .                   7 --------- 12

     17 --------- 17           14 --------- 14            6 --------- 13

     18 --------- 19           19 --------- 19            5 --------- 15

            .                  21 --------- 20           19 --------- 19

            .                  23 --------- 21

            .                  25 --------- 22

     34 --------- 35           27 --------- 23

                               29 --------- 24

                               30 --------- 25

                               31 --------- 16

                               32 --------- 15

                               33 --------- 18

                               36 --------- 17







  Vitesse de transfert CPCPARA -> PCPARA (v1.1) :



  Temps de transfert d'un bloc de 0x4000 octets du CPC vers le PC avec

  l'adaptateur parallèle :



  Source sur CPC :             Octets/sec :     Bauds :

  -----------------------------------------------------------

  Fichier sur disquette :        1600            12800



  Bloc de mémoire :              2240            17920



  Bloc de mémoire, sans          2445            19560

  interruptions

  (poke &b941,&c9 sur CPC 664 et 6128)





  Le bloc envoyé était contrôlé en Basic (dans CPCPARA) :

  defstr a:a="test.$$$":call sstr,@a

  a=string$(&80):for i=1 to &80:call sstr,@a:next:call sbyte,0:stop





  Vous pourrez lire plus d'information sur l'adaptateur parallèle au

  chapitre 7.







5.3  L'interface série

======================



  Si vous possédez une interface série pour le CPC, vous pouvez certainement

  l'utiliser pour le transfert de données vers le PC.







5.4  Autres possibilités

========================



  Il y a encore d'autres moyens fantastiques pour avoir des programmes

  sur le PC :



  - Connecter le lecteur de disquettes 3 pouces au PC. Quelques (anciens)

    modèles pourraient correspondre à la connexion 5,25 pouces.



  - Avec un détour par le Spectrum+3 : lire la disquette 3 pouces sur le

    Spectrum+3, la convertir au format Spectrum, et employer un utilitaire

    pour la lire sur le PC. Cet utilitaire est compris dans l'émulateur

    Z80 du Spectrum, de Gerton Lunter.



  - Au temps où il était nécessaire (Amstrad n'ayant pas encore donné son

    autorisation) de se débrouiller pour avoir les ROMs, quelqu'un m'a parlé

    de ce moyen : il enlevait la puce de la ROM d'un CPC, et l'insérait 

    à la place du BIOS VGA. Avec un petit programme, il pouvait en lire le

    contenu.



  - Peut-être avez-vous trouvé un autre moyen ?









6.  Sources d'Approvisionnement, Aide, Remerciements

_____________________________________________________________



  Dans ce chapitre, vous lirez où vous procurer des programmes pour CPC, 

  et à qui vous adresser si vous avez des questions. En outre, je mentionne 

  d'autres émulateurs pour Amstrad.





6.1  Où puis-je avoir des programmes pour le CPC ?

==================================================



  Aucun problème si vous avez accès à Internet.

  Comme pour les émulateurs de Spectrum, un grand nombre d'archives

  "anonymes" existent, où vous trouverez des programmes pour CPC via FTP

  ou WWW.



  FTP

  ---



  - ftp.nvg.unit.no:/pub/cpc, merci à Arnt Gulbrandsen pour avoir créé

    le site, et à Noël Llopis pour en assurer la maintenance.

    C'est en Norvège, et c'est l'une des plus grosses archives concernant

    le CPC. Envoyez ce que vous avez à /pub/cpc/incoming.



  - sunshine.informatik.uni-wuerzburg.de:/pub/joscho/cpcemu

    Ceci est un miroir de ftp.nvg.unit.no. Si vous avez des problèmes pour

    vous connecter à la Norvège, vous pouvez essayer ça.



  - ftp://ftp.lip6.fr/pub/amstrad, merci à Remy Card.

    ftp://ftp.lip6.fr/pub/amstrad/frontend/menu.htm (HTML)

  - Toutes les questions concernant ce site doivent être adressées à

    roussin@genesis8.frmug.org.

    Tous les fichiers viennent de "Genesis the 8bit generation BBS"

    (voir ci-dessous).



  - ftp.demon.co.uk:/pub/cpm, merci à Paul Martin. Fichiers Amstrad en

    relation avec CP/M. Paul Martin (pm@nowster.demon.co.uk) enverra,

    à quiconque lui prouvera qu'il possède la disquette originale

    Amstrad CP/M Plus, les images binaires de la ROM de sa "CP/M Plus ROMs",

    et cela gratuitement.



  - oak.oakland.edu : /Simtel/msdos/emulator/cpcemu15.zip



  - autres miroirs Simtel :

    ftp.ibp.fr : /pub3/pc/SimTel/msdos/emulator/

    ftp.demon.co.uk : /simtel/msdos.

    ftp.uni-paderborn.de





  WWW

  ---



  - http://andercheran.aiind.upv.es/~amstrad

    et un UK miroir: http://www.dcs.warwick.ac.uk/~divine/~amstrad/



  - ...





  BBS

  ---



  - Aspects 2:250/107 : +44 617920260, au Royaume-Uni, sysop Dave

    Gorski, V32b, CPCEMU v1.2, programmes (principalement en Basic)



  - Genesis the 8bit generation, 2:320/220, +33 1 53 95 32 43, en

    France, up to VFC, sysop : Emmanuel Roussin.

    Dernières versions des émulateurs, ROMs Azerty et Qwerty, freeware,

    shareware, PD, disk-zines, pokes, solutions, démos, et quelques

    jeux du commerce (avec l'autorisation de leurs auteurs). Pour le

    moment, ils ont environ 29,5 Mo de programmes zippés. Pour les "fido

    users", vous pouvez consulter ALLFILES.ZIP, et là, voir ce qui vous

    intéresse.



  - ZNODE 51 : + 49 89 961 45 75, Allemagne, entre 15:00 et 3:00 CET

    (MEZ), up to V32b, fichiers CPC.



  - ...







6.2  Dernières nouvelles, échange d'experiences

===============================================



  Voulez-vous avoir toujours la dernière version de CPCEMU ?

  Voulez-vous être informé si une nouvelle version est sortie ?



  Nous avons monté un "newsgroup" (un forum électronique) spécialement

  pour le CPC ! Il s'appelle :



          "comp.sys.amstrad.8bit".



  Vous y trouverez des discussions sur les CPCs (et aussi sur CPCEMU), et

  vous pourrez parler de vos expériences avec les CPCs.



  Il y a un FAQ ("frequently asked question" : questions souvent posées)

  disponible

  (ftp://ftp.lip6.fr/pub/amstrad/amstrad.htm, FAQ en HTML).



  Si vous ne pouvez pas lire le newsgroup pour telle ou telle raison,

  écrivez-moi un "email" (courrier électronique). Vous trouverez mon

  adresse dans la prochaine section.

  Naturellement, vous pouvez aussi utiliser le courrier "normal" pour me

  poser des questions (ou à David, voir ci-dessous), mais, s'il vous plaît,

  n'oubliez pas les frais d'expédition du courrier !



  A propos, si vous m'envoyez une contribution financière, je me sentirai

  obligé de vous faire parvenir la dernière version de CPCEMU au moins une 

  ou deux fois.

  







6.3  Si vous avez des questions ou des suggestions

==================================================





  Alors, écrivez-moi directement :



       Marco Vieth

       Auf dem Uekern 4

       D-33165 Lichtenau

       Germany



       téléphone/FAX : +49-5292-1366 (seulement les week-ends)



       Internet: cpcemu@hotmail.com

                 (ali@uni-paderborn.de)



       Comme vous l'avez probablement deviné au vu de mon adresse Internet,

       j'étudiais les sciences informatiques à l'Université de Paderborn.

       J'ai terminé au printemps 1997.







  Au cas où vous parleriez ou écririez l'anglais, vous pouvez aussi écrire

  à David Cantrell :



       David Cantrell

       116, London Road

       Bexhill-on-sea

       East Sussex

       TN39 4AA

       England



       téléphone : +44-1424-221015



       Internet: david@diablo.eimages.co.uk

                 ftp://ftp.eimages.co.uk/users/davidc/cpc/

                 http://www.ThePentagon.com/NukeEmUp/uaug





  David m'a offert d'aider un peu à répondre à la pile de lettres reçues.

  Il a numérisé le manuel du "firmware" pour le CPC, de sorte que chacun

  peut l'obtenir sous sa forme électronique.







  Bien que ce programme soit en freeware, j'accepterai naturellement

  toute espèce de soutien, financier ou technique (30-50 Deutschmarks

  seraient appropriés. Cela fait environ 20-33 dollars américains,

  ou 13-21 livres anglaises, ou 102-170 francs français).



  Même si vous n'envoyez pas d'argent, je réponds normalement à toutes les

  lettres, et j'essaie de garder vos suggestions à l'esprit (je suis sûr

  que David fait de même).

  Ainsi, n'hésitez pas à envoyer vos commentaires.







6.4  Autres émulateurs pour Amstrad CPC

=======================================



  Jusqu'au début de 1994, je croyais que CPCEMU était le seul émulateur pour

  l'Amstrad CPC. Aujourd'hui, j'en connais trois autres :



  - SIMCPC :

    Sans doute le premier qui fut écrit.

    Emulateur de CPC pour PC/XT/AT   (c) 1989, 90 by GHE, Aachen.

    Il n'est qu'en noir et blanc, mais avec des ROMs additionnelles ;

    seulement une manifestation d'humour "après boire".



  - CPC2PCxx :

     En développement depuis Octobre 1993, par Paco Lopez (Espagne), et

     disponible sur sites à présent. Il est écrit entièrement en mode

     protégé, et utilise le même format de disquettes que CPCEMU.



  - CPE :

    En développement par Bernd Schmidt. En utilisant un mode d'écran

    spécial de 50 Hertz, des blocs de couleurs sont reproduits exactement.

    Un CPE2 "spécial 256 couleurs" affiche des blocs de couleurs exacts à

    plus de 50 Hertz.

    Egalement assurés : multi-modes, overscan.

    Dernière version : v5.2.







6.5  Projets pour les futures sorties de CPCEMU

===============================================





  - overscan

  - multi-mode amélioré

  - écran centré avec des modes vidéo supérieurs

  - scrolling "hard" rapide

  - les claviers américains n'ont pas de "<>", AltGr

  - simuler les ports d'extension du CPC

  - charger directement les disquettes CPC

  - charger directement les cassettes CPC (par le port imprimante

      ou la carte SoundBlaster)

  - transférer une image de disque entière avec l'adaptateur parallèle

  - contrôle de volume pour la SoundBlaster

  - émulation Digiblaster

  - touches du joystick personnalisables

  - utilisation de la souris comme joystick

  - auto-détection des fichiers SNA et DSK



  Peut-être cela ne sera-t-il jamais réalisé, car je suis entré

  maintenant dans la "vie active"...







6.6  Remerciements

==================



  - Remerciements particuliers à Juergen Weber, non seulement pour ses

    nombreuses suggestions, mais spécialement pour l'émulation rapide

    du Z80 faite avec son émulateur CP/M ZSIM.



                Juergen G. Weber

                Wiesentalstrasse 1

                74523 Schwaebisch Hall

                Federal Republic of Germany



                email: weberj@dia.informatik.uni-stuttgart.de





  - Egalement merci à Bernd Schmidt. Parce que Bernd a écrit son propre

    émulateur, nous avons eu les mêmes problèmes de nombreuses fois.

    Vous ne pouvez imaginer ce que cela représente, et combien de détails

    posent problème, que si vous avez essayé d'écrire vous-même un

    émulateur. Aucune documentation sur le CPC n'est disponible, qui en

    donnerait toutes les caractéristiques : des parties entières du

    comportement du CPC n'ont été détectées que par l'expérimentation

    sur cet ordinateur.



  - Merci à Ulrich Doewich pour avoir inclus dans l'émulateur une sortie

    son Gravis UltraSound et parcouru la documentation. Ulrich a écrit

    un utilitaire analogue à CPCTRANS. Il recherche CPDREAD qui

    peut aussi lire les disquettes protégées.

    

  - Merci à Emmanuel Roussin pour son engagement total envers le CPC.

    Il a fait l'essentiel pour la constitution du "newsgroup", et m'a 

    prêté sa Multiface II pendant des mois, pour que je puisse l'inclure

    d'une façon ou d'une autre dans l'émulateur. 

    

  - Merci à Arnt Gulbrandsen pour sa source JPP, où j'ai trouvé des idées

    pour le gestionnaire du clavier et la routine du joystick. En fait,

    JPP est un très bon émulateur de Spectrum.



  - Merci à Martin Zacho de m'avoir fourni une routine pour le joystick.



  - Merci à Fernando J. Echevarrieta Fernandez pour avoir remarqué le

    premier que la version v0.8 n'émulait pas un CPC 664.



  - Merci à Gilles Molinari pour son programme de transfert par l'adaptateur

    parallèle.



  - Merci à Paul Martin d'avoir corrigé la documentation anglaise de la

    version 1.0.



  - Merci à Mark Haigh-Hutchinson pour son engagement de faire des programmes

    à partir du domaine public de la compagnie Vortex.



  - Merci à Martin Young pour ses éminentes idées à propos de l'émulation

    du Z80.



  - Merci à Linh Hsiesh pour ses nombreuses idées d'amélioration, dont 

    beaucoup ont été adoptées.



  - Merci à Fred Harris d'avoir écrit à Amstrad à propos des ROMs.



  - Merci à Amstrad, spécialement à Cliff Lawson, pour m'avoir autorisé 

    à distribuer la ROM Basic. Amstrad possède toujours le copyright.



        Amstrad plc, Brentwood House,

        169 Kings Road, Brentwood,

        Essex CM14 4EF



  - Merci à Richard Clayton, de Locomotive, pour m'avoir permis de

    distribuer la ROM Firmware. Locomotive possède toujours le copyright.



  - Et merci à tous les nombreux utilisateurs pour m'avoir envoyé des

    suggestions ou des idées. Sans eux, CPCEMU aurait difficilement atteint

    la version 1.0.









6.7  Marques déposées

=====================



  CP/M, CP/M 2.2 et DRDOS sont des marques déposées de Digital Research.

  MS-DOS est une marque déposée de Microsoft.

  IBM PC, PC-XT, PC-AT et OS/2 sont des marques déposées de International

  Business Machines.

  CPC, AMSDOS par Amstrad,

  BORLAND C, TASM (Turbo Assembler) par Borland,

  22DISK par SYDEX,

  Soundblaster par Creative Labs.











------------------------------------------------------------------------------







7.  Information interne sur CPCEMU

__________________________________





Ce chapitre fournit quelques informations d'arrière-plan et répond à la

question : "POURQUOI devrais-je faire ceci ou cela maintenant ?"

Le puissant menu de débogage est aussi écrit. Vous trouverez également

la structure des images de disquettes et des fichiers de snapshots.

Cette information n'est pas destinée à ceux des utilisateurs de CPCEMU 

qui n'ont aucune connaissance de ce que contient un CPC. Peut-être,

pourtant, leur sera-t-elle utile un jour.

J'ai placé cette information à la fin, et même après les marques déposées,

avec l'intention de montrer sa "relative insignifiance".

Si vous n'avez aucun plaisir à lire des phrases inintelligibles et des

informations en désordre, ne lisez pas plus avant ! Sautez directement

à l'Appendice.







ATTENTION : Vous continuez la lecture à vos propres risques !











7.1  Table des matières du chapitre 7

=====================================



  7.2  Aperçu interne des particularités de CPCEMU

    7.2.1  Le Z80 (le microprocesseur)

    7.2.2  Le Gate Array (le "co-processeur")

    7.2.3  Le PAL (Programmable Logic Array)

    7.2.4  Le CRTC 6845 (Cathode Ray Tube Controller : contrôleur vidéo)

    7.2.5  Le PIO 8255 (Programmable Input Output)

    7.2.6  Le PSG AY 3-8912 (Programmable Sound Generator)

    7.2.7  Le FDC 765 (Floppy Disc Controller : contrôleur de disquettes)

    7.2.8  L'interface Centronics pour imprimante



  7.3  Le menu Debug

    - Aperçu du menu Debug

    - Préliminaires

    - Aperçu des commandes

    - Manipulation des registres



  7.4  Gestion de la mémoire

    7.4.1  Encore une fois : la configuration EMS

    7.4.2  Comment opère la commutation de banques ?



  7.5  Modifications de la ROM

    7.5.1  Dérivation de la ROM pour la cassette

    7.5.2  Modifications de la ROM AMSDOS



  7.6  Divers

    7.6.1  Encore une fois : le fichier de configuration

    7.6.2  L'adaptateur parallèle

       - Sens CPC->PC

       - Sens PC->CPC

    7.6.3  CPCTRANS



  7.7  Structure des fichiers CPCEMU

    7.7.1  Images de disquettes

       - Le bloc d'informations Disque

       - Le bloc d'informations Piste

    7.7.2  Fichiers Snapshot

    7.7.3  En-tête AMSDOS

    7.7.4  Base de données de Pokes



  7.8  Historique interne









7.2  Aperçu interne des particularités de CPCEMU

================================================





  A quel point CPCEMU est-il réellement compatible ? Voici les "plus" et

  les "moins".





  7.2.1  Le Z80 (le processeur)

  -----------------------------



  + Toutes les instructions du Z80 sont émulées, y compris celles dites

    "illégales".

    Vous avez le choix entre une émulation lente du Z80, écrite en C, 

    et une émulation rapide, écrite en assembleur par Juergen Weber.

    Avec la technique CO-CPU, chaque instruction du Z80 est émulée

    simultanément par les versions lente et rapide, ce qui est très lent,

    mais, en comparant les registres après chaque instruction, bien des 

    erreurs sont débusquées. Evidemment, on n'a fait cela que durant la 

    phase de développement du programme.

    Vous pouvez activer l'émulation lente dans le menu Debug.

  + Instructions additionnelles codées "ED FC xx", qui n'existent que sur 

    l'émulateur.

    Au nombre de ces instructions, le "break utilisateur" codé "ED FC FC",  

    à traduire par "USER &BCFC".



  - Le temps d'exécution des instructions n'est pas exact. Mais il y a

    calibration du temps en mode "realtime".







  7.2.2  Le Gate Array (le "co-processeur")

  -----------------------------------------



  + Toutes les couleurs du CPC (32 théoriques, 27 différentes, en fait)

  + Les trois modes d'écran (X x Y x COULEURS) :

        mode 0 = 160 x 200 x 16

        mode 1 = 320 x 200 x 4

        mode 2 = 640 x 200 x 2

  + Commutation de ROM (16K OS, 16K Basic, 16K AMSDOS et ROMs additionnelles)



  - La couleur provoque un scintillement







  7.2.3  Le PAL (Programmable Logic Array)

  ----------------------------------------



  Le PAL est à la même adresse logique que le Gate Array, mais en est 

  physiquement séparé.



  + Commutation de RAM (128 K, jusqu'à 576 K) avec mémoire EMS ou 

    conventionnelle.

    Avec de l'EMS émulée, les blocs sont "mappés" par le matériel, de

    sorte que la vitesse est bonne. CPCEMU vous offre une extension de

    RAM "compatible Dk'Tronics", jusqu'à 576 K.



  - Sans EMS, la commutation de RAM est très lente, puisque les blocs de

    mémoire doivent être déplacés dans la mémoire du PC. En outre, vous

    avez seulement 128 K de RAM.









  7.2.4  Le CRTC 6845 (Cathode Ray Tube Controller : contrôleur vidéo)

  --------------------------------------------------------------------



  + Base de l'écran et "offset" (décalage) par scrolling hard.

  + Plusieurs tailles d'écran, de 0x0 à 80x25, avec les registres 1 et 6.

  + Différentes tailles de caractères (1..7) avec le registre 9 du CRTC.

  + Multi-mode (il utilise d'autres registres).



  - L'overscan n'est pas encore assuré.







  7.2.5  Le PIO 8255 (Programmable Input Output)

  ----------------------------------------------



  + Clavier (connecté au PSG).

  + Emulation de la VSYNC : un bit mis à 1 entre deux interruptions, durant

    un rafraîchissement de l'écran. Vous pouvez changer la position.

  + La cassette est très rapide, une dérivation de la ROM permet l'accès à

    tous les fichiers DOS.



  - Le bit de VSYNC est positionné trop longtemps.

  - Les ports cassette ne sont pas émulés ; ainsi, beaucoup de programmes

    sur cassette qui accèdent directement aux ports ne fonctionnent pas.





  7.2.6  Le PSG AY 3-8912 (Programmable Sound Generator)

  ------------------------------------------------------

  

  + Du son, soit par le haut-parleur du PC (horrible, parce que trois canaux

    sont multiplexés en un seul, et que le volume ne peut pas être modifié)

    ou sur une carte GUS ou Soundblaster. Son numérique ave bruit ou partie

    Adlib compatible FM.



  - Pas de son numérique, ou alors trop lent.

    



  7.2.7  Le FDC 765 (Floppy Disc Controller : contrôleur de disquettes)

  --------------------------------------------------------------------



  + Toutes les commandes du FDC nécessaires pour contrôler deux lecteurs

    A et B (y compris lire/écrire secteur, chercher piste, lire ID-secteur, 

    etc.)

    Formats de disquettes très souples (jusqu'à 18 secteurs par piste).

    Incluant les formats double face, par exemple de VORTEX.



  - Les formats compliqués destinés à la protection contre la copie ne

    sont pas reconnus.







  7.2.8  L'interface-imprimante Centronics

  ----------------------------------------



  + Sorties vers l'imprimante sur 8 bits, vers un fichier défini par la 

    ligne PRINTER dans le fichier de configuration.









7.3  Le menu Debug

==================



  Le jeu complet des registres du Z80 est affiché, et leur contenu peut 

  être modifié.

  Vous pouvez faire un "dump" de la mémoire, la désassembler ou la modifier. 

  Vous pouvez charger ou sauvegarder des zones de mémoire. Et, le plus 

  intéressant : vous pouvez exécuter les programmes pas à pas (comme sur

  un vrai débogueur) !

                                  

  Aperçu du menu Debug

  --------------------



  R)un T)race S)tep  A)ssem D)ump I)nput  L)oad saV)e  M)ode  F)ast Q)uit

  AF=0000 BC=0000 DE=0000 HL=0000 IX=0000 IY=0000 SP=0000 PC=0000 IR=0000

  AF'=0000 BC'=0000 DE'=0000 HL'=0000 IFF1=0 IFF2=0 IMD=0  NZ NC PO P

  0000 : 01 89 7F       LD BC,&7F89

  -f->



  La première ligne affiche les commandes disponibles, sous forme de lettres

  majuscules.

  Les deux lignes suivantes montrent les valeurs contenues dans les registres

  du Z80.

  La suivante désassemble l'instruction en cours à la position du PC 

  (le Compteur de Programme, pas l'ordinateur !).

  Et la dernière est un "prompt" qui attend votre prochaine entrée (le "f" 

  indique que vous êtes dans le mode rapide de l'émulation).





  Préliminaires

  -------------



  Les paramètres entre crochets carrés sont optionnels : [opt].

  N'utilisez que des valeurs hexadécimales, comme <adresse> = 0000-ffff.

  "<ret>" indique que vous êtes dans un mode spécial : vous pouvez appuyer

  sur <Return> pour continuer ; <chaîne_quelconque><Return> quitte ce mode

  (utilisez par exemple b<Return>).

  Les commandes sont des lettres, et sont souvent suivies par une adresse 

  optionnelle. Entre la lettre et cette adresse doit figurer un espace ou 

  une tabulation. Si la commande est donnée sans adresse, c'est celle du PC 

  (voir plus haut !) qui est prise par défaut.

  



  Aperçu des commandes

  --------------------



  R)un:

  r [<adresse>] : lance l'émulation à partir de l'adresse du PC ou de

    l'adresse optionnelle que vous donnez.

    Exemples :

    -f-> r      lance l'émulation à partir de l'adresse du PC.

    -f-> r 100  place l'adresse 0x100 dans le PC et lance l'émulation.



  T)race ("trace into"):

  t [<adresse>] : exécute uniquement l'instruction affichée.

    Utilisez <Return> pour continuer dans ce mode, et ainsi de suite.

    <chaîne_quelconque><Return> revient au mode normal.

    Toutes les commandes pas à pas sont exécutées par l'émulation lente

    (même si "-f->" est affiché), parce qu'il n'y a plus de compteur

    dans l'émulation rapide.



  S)tep ("step over"):

  s [<adresse>] : exécute la prochaine instruction.

    Ou plutôt, toutes les instructions, jusqu'à ce que l'adresse du PC 

    soit égale à celle de la prochaine instruction (cas d'un appel de sous- 

    programme). Ce qui peut prendre "un certain temps", par exemple après

    un "Ret". Dans ce cas, la touche F10 peut aider (comme toujours).

    Toutes les commandes pas à pas sont exécutées par l'émulation lente,

    comme dit 11 lignes plus haut.



  A)ssemble (en réalité : désassemble) :

  a [<adresse>] : désassemble les 16 instructions suivantes.

    Utilisez <Return> pour continuer dans ce mode, et ainsi de suite.

    <chaîne_quelconque><Return> revient au mode normal.



  D)ump:

  d [<adresse>] : affiche un dump en hexa/ASCII des 256 octets suivants,

    à partir de l'adresse spécifiée ou contenue dans le PC.

    Utilisez <Return> pour continuer dans ce mode, et ainsi de suite.

    <chaîne_quelconque><Return> revient au mode normal.



  I)nput (modifiant la mémoire) :

  i [<adresse>] : affiche l'adresse mémoire donnée et son contenu, que vous

    pouvez conserver avec <Return> ou modifier avec <valeur-hexa><Return>.

    Quittez ce mode en donnant un nombre invalide, tel que "-1" : -1<Return>.



  L)oad (charger un programme) :

  l [<adresse>]  : attend que vous donniez un nom de fichier, et le charge 

    à partir du sous-répertoire TAPE_PATH (il doit donc s'y trouver !), 

    à l'adresse spécifiée.

    Un en-tête AMSDOS est reconnu comme tel.

    Si vous appuyez sur <Return> après la demande du nom de fichier, le menu 

    de sélection de fichier (bien connu) apparaît...

    Exemples :

    -f-> l<Return> demo<Return>         :

        charge le fichier "demo" à l'adresse contenue dans le PC.

    -f-> l a000<Return> monprog<Return>  :

        charge le fichier "monprog" à l'adresse 0xA000.



  saV)e (sauvegarder un programme) :

  v [<adresse>]  : attend que vous lui donniez un nom de fichier, et la 

    longueur de la zone de mémoire à sauvegarder. Cette zone sera

    sauvegardée depuis <adresse> (ou celle contenue dans le PC), en tant

    que fichier binaire, dans le sous-répertoire TAPE_PATH, avec un

    en-tête AMSDOS.

    Exemple :

    -f-> v<Return> demo<Return> 4000<Return> :

        sauvegarde un fichier "demo" commençant à l'adresse du PC et de 

        longueur 0x4000.



  M)ode (changer le mode d'affichage) :

  m : bascule entre les modes d'affichage : affichage des registres, 

    marche/arrêt du désassemblage de l'instruction.



  F)ast (sélection du type d'émulation) :

  f : bascule entre l'émulation rapide du Z80 (développée en assembleur

    par Juergen Weber, et prise par défaut) et l'émulation lente (écrite

    en C).

    Le "prompt" bascule entre "-f->" pour "fast" (rapide) et "-s->" pour

    "slow" (lente).

    Les commandes r, s, t se réfèrent au type d'émulation sélectionné.



  Q)uit (quitter le programme) :

  q : abandonne l'émulateur.





  Manipulation des registres

  --------------------------



  Outre les commandes ci-dessus, vous pouvez modifier le contenu des

  registres du Z80 avec la syntaxe "<registre>=<valeur-hexa>".

  Exemples :

  - af=345        : place 0x0345 dans le registre AF.

  - pc=a000       : fixe le compteur de programme à l'adresse 0xA000.



  Vous pouvez également écrire "<registre><espace><valeur-hexa>".

  Vous pouvez modifier tous les registres affichés c'est-à-dire AF, BC, DE,

  HL, IX, IY, SP, PC, IR, AF', BC', DE', HL', et aussi IFF1, IFF2 et IMD.











7.4  La gestion de la mémoire

=============================





  7.4.1  Une fois de plus : la configuration EMS

  ----------------------------------------------



    Il vous faut un gestionnaire de mémoire aceptant le standard LIM EMS 4.0. 

    Ce gestionnaire doit fournir des pages EMS étendues dans n'importe quelle 

    région de la mémoire, car CPCEMU cherchera 6 pages physiques sur des

    adresses consécutives.

    Si l'emploi de la mémoire EMS est possible, un décompte de ladite mémoire

    "EMS xxx Bytes ok." apparaîtra durant l'initialisation.



    Je vous ai conseillé, au début de cette documentation, d'employer les 

    réglages suivants sous OS/2 :



        EMS_FRAME_LOCATION = auto

        EMS_HIGH_OS_MAP_REGION = 32     (ou davantage)

        EMS_LOW_OS_MAP_REGION = 0       (ou davantage)



    Qu'est-ce que cela signifie ?

    La région basse est pour les pages EMS en mémoire conventionnelle.

    Si CPCEMU doit utiliser de telles pages, mettez au moins 6*64K = 384K.



    La région haute est pour les pages EMS au-dessus de la limite des 640K, 

    en plus du frame standard de 64K. Mettez au moins 2*16K = 32 K.





    Avec le DOS, je vous ai conseillé d'inclure les lignes suivantes dans 

    votre CONFIG.SYS :



        DEVICE=C:\DOS\HIMEM.SYS

        DEVICE=C:\DOS\EMM386.EXE 1024

        ...



    Modifiez le "1024", selon la mémoire dont vous disposez sur votre

    ordinateur.



    Notes :

    EMM386 fournit plusieurs pages additionnelles en mémoire conventionnelle.

    L'adresse minimale peut être changée avec l'option /B=<segment> (par

    défaut, 4000).

    Avec /P<nombre>=<segment>, il est possible de changer les segments des

    pages physiques.









  7.4.2  Comment s'effectue la commutation de banques ?

  -----------------------------------------------------



    La commutation de banques se pratique sur les ordinateurs "familiaux"

    qui ont de la RAM et de la ROM à la même adresse. 

    Ainsi, les lectures se font en ROM, et les écritures en RAM. Les CPCs

    464 et 664 d'Amstrad ont 64K de RAM, une ROM de 16K aux adresses

    (hexa) 0-3fff, et une seconde aux adresses c000-ffff :



        0 RAM 0000-3fff

        1 RAM 4000-7fff

        2 RAM 8000-bfff

        4 RAM c000-ffff

        L ROM 0000-3fff

        U ROM c000-ffff



    L'idée maîtresse pour CPCEMU est d'avoir des segments et offsets 

    différents pour la lecture et l'écriture. Pour chaque accès en lecture,

    un offset de lecture est additionné à l'adresse désirée, et on fait

    de même avec un offset d'écriture.



                        état 0                  état 1



        bloc 5   M       L   c                W  0       <

        bloc 4   M    W  C   c                W  C   c    | commute au

        bloc 3   M    W  8 b c                W  8 a c    | changement

        bloc 2   M    W  4 b c                W  4 a c    | d'état

        bloc 1   M    W  0 b                     L a c   <

        bloc 0   M       U b                     U a





    (M = mémoire conventionnelle, ou pages physiques EMS)



    a = ROM basse activée,    ROM haute activée

    b = ROM basse désactivée, ROM haute activée

    c = ROM basse activée,    ROM haute désactivée

    W = ROM basse désactivée, ROM haute désactivée



    Pour basculer entre les deux états, les blocs "0" et "L" doivent

    être commutés. Pour la commutation des banques de RAM, un nouveau

    bloc "0" doit être commuté avec l'ancien. La sélection de ROM est

    effectuée en copiant la nouvelle ROM vers le bloc "U".



    Avec la mémoire EMS, toutes les commutations de banques sont faites

    par le matériel EMS (ou son émulation). Cela augmente la vitesse

    de l'émulation en Basic et avec CP/M Plus. 

    Maintenant, vous comprenez pourquoi 6 pages physiques EMS consécutives

    sont nécessaires : le frame standard avec 4 pages est insuffisant.











7.5  Modifications de la ROM

============================





  7.5.1  Dérivation de la ROM pour la cassette

  --------------------------------------------



    Après la commande "|TAPE" (Azerty : "ùTAPE"), ou si la ROM de l'AMSDOS 

    est désactivée, c'est la cassette qui est active. Les accès-cassette 

    avec CPCEMU sont transformés en accès à un fichier dans un simple 

    sous-répertoire.

    Cette redirection est accomplie par une dérivation de la ROM. 

    Avec "TAPE_BYPASS=1", vous activez la dérivation des vecteurs-cassette 

    en ROM.

    Si CPCEMU trouve une ROM connue de CPC 464/664/6128, elle est modifiée

    en conséquence. La dérivation est nécessaire si vous voulez employer la 

    cassette.



    Des instructions spéciales sont implantées dans l'émulation du Z80. 

    Elles appellent des fonctions spéciales qui ne sont fournies que par

    l'émulateur ; elles ont été entrées directement en ROM, mais il est

    toujours possible de modifier les vecteurs en RAM.

    Les instructions suivantes sont disponibles :

    ED FC xx  USER &BCxx    (valide seulement pour quelques vecteurs en RAM)

    Elles équivalent à une instruction CALL vers une des fonctions internes.

    Les valeurs hexa suivantes pour xx sont légales :

        65      :       CASSETTE INIT (BC65)

        77      :       CASSETTE IN OPEN (BC77)

        7A      :       CASSETTE IN CLOSE

        7D      :       CASSETTE IN ABANDON

        80      :       CASSETTE IN CHAR

        83      :       CASSETTE IN DIRECT

        86      :       CASSETTE RETURN

        89      :       CASSETTE TEST EOF

        8C      :       CASSETTE OUT OPEN

        8F      :       CASSETTE OUT CLOSE

        92      :       CASSETTE OUT ABANDON

        95      :       CASSETTE OUT CHAR

        98      :       CASSETTE OUT DIRECT

        9B      :       CASSETTE CATALOG



    En outre, vous pouvez employer le "break utilisateur" codé ED FC FC  

    (USER &BCFC) : il stoppe immédiatement l'émulation.







  7.5.2  Modifications de la ROM de l'AMSDOS

  ------------------------------------------



    - Avec "AMSDOS_DISABLE=1" dans le fichier de configuration, vous faites

      "oublier" l'initialisation de l'AMSDOS.

      Dans ce cas, la modification des vecteurs-cassette, effectuée par 

      l'AMSDOS lorsqu'on ordonne "|TAPE" ou "ùTAPE", est désactivée (ainsi,

      les vecteurs-cassette pointent toujours sur la cassette, bien que la

      ROM de l'AMSDOS ait été initialisée). C'est nécessaire si vous désirez

      continuer à charger des fichiers à partir de la cassette après un

      reset-disc, mais sans avoir à donner la commande "|TAPE" auparavant

      (bidouille réalisée avec "poke &CCF2,&18 : poke &CCF3,&05" dans la

      ROM de l'AMSDOS).

      Les instructions de secteur ne sont pas affectées, elles adressent 

      toujours la disquette.



    - "AMSDOS_SPEEDUP=1" active une modification de l'AMSDOS, laquelle

      minimise le délai d'attente du moteur du lecteur de disquettes, 

      afin de rendre plus rapides les accès-disque (ici, tout est fait

      par le DOS, on n'a donc pas besoin de délai d'attente).

      Pour y parvenir, on a modifié les octets suivants, toujours dans

      la ROM de l'AMSDOS :

          poke &C5D4,&01  :'délai pour le moteur

          poke &C5D8,&01  :'délai pour le formatage d'une piste

          poke &C5D9,&01  :'court délai

          poke &C5DA,&01  :'court délai

          poke &C602,&01  :'1 seul "Retry" en cas d'erreur

          poke &C784,&01  :'recherche rapide

          poke &C7E2,&01  :'recherche rapide









7.6  Divers

===========







  7.6.1  Une fois de plus: le fichier de configuration

  ----------------------------------------------------



    Peut-être vous souvenez-vous que les commentaires commencent par un

    point-virgule ";" et peuvent prendre place à n'importe quel endroit

    d'une ligne : le reste de la ligne est alors ignorée.

    Les espaces, tabulations, sauts de ligne et ";" sont des délimiteurs,

    et peu importe combien vous en utilisez.

    Beaucoup de définitions ont la forme syntaxique :

                 <mot-clé> = <valeur> {T}

    {T} est une séquence d'au moins un délimiteur.

    Exemple :

                 ROM_PATH = .\ROM



    <nombre> peut être donné en décimal, hexadécimal (avec le préfixe 0x) 

    ou binaire (%).

    <chemin> peut avoir une longueur de 80 caractères et <fichier> jusqu'à

    20 caractères.



    Dernière information sur un mot-clé :



    BREAK_MASK = <nombre>               (3)

      réservé au déboguage.

      Certains événements ("events") interrompent l'émulation normale. 

      Avec ce drapeau, vous pouvez désactiver ces événements. A utiliser

      avec précaution !

      Laissez tous les bits à 1, sauf ceux concernant les événements

      que vous ne voulez pas voir intervenir.

      b2 = 0 -> désactive l'affichage des erreurs sur les ports 

                (utilisez 3)

      La signification de ces bits pourra changer dans l'avenir !











  7.6.2  L'adaptateur parallèle

  -----------------------------



    Voyons d'abord la construction de l'adaptateur, avec la description

    des fonctions de chaque fil :





    PC  D-SUB   Cent.   CPC             Fonction

    --------------------------------    ---------------------------

    GND    19 ---- 19   GND             GND

    BUSY   11 <--- 1    -STROBE         Synchro (Donnée disponible)

    -ACK   10 <--- 8    D6              |

    PE     12 <--- 7    D5              | Données

    SELECT 13 <--- 6    D4              |

    -ERROR 15 <--- 5    D3              |

    D0      2 ---> 11   BUSY            Synchro (Prêt à recevoir)





    Sens CPC->PC

    ------------



    Normalement, l'adaptateur est conçu pour fonctionner dans ce sens 

    seulement. Envoyer une donnée depuis le CPC équivaut en principe 

    à envoyer du texte sur la ligne de l'imprimante.

    Si le PC signale "Not-BUSY" (non occupé), le CPC écrit un quartet

    (4 bit d'un octet) sur le port, positionne STROBE pour signaler que 

    la donnée est là, et l'efface ensuite. 

    Ainsi, le PC a seulement besoin d'effacer le signal BUSY (par la

    ligne D0), d'attendre le STROBE (sa ligne BUSY), de prendre le

    quartet (sur les lignes d'entrée imprimante->PC), et de positionner

    BUSY.

    Question : pourquoi scinder l'octet en deux quartets ? Pourquoi

    ne pas envoyer les 8 bits en une seule fois ?

    Réponse :

    1. Le port imprimante du PC doit être reprogrammé en entrée, et je

       ne suis pas sûr que c'est possible sur tous les PCs    

       et

    2. Le CPC n'a que 7 bits sur sa sortie imprimante (* Note du

       traducteur : sauf le 6128 Plus, et encore son utilisation est-elle

       acrobatique, puisqu'il faut passer par le registre 12 du CRTC ! *).





    Sens PC->CPC

    ------------



    J'ai pensé un jour à la possibilité d'envoyer des données dans l'autre 

    sens. Malheureusement, le CPC n'a qu'une seule ligne (un seul bit) en

    entrée sur le port-imprimante : le signal BUSY.

    Aussi, cela n'améliorerait pas la situation si vous tentiez de

    concevoir un meilleur adaptateur pour ce sens. Ainsi, faites avec ce

    que vous avez déjà, et tentez plutôt d'améliorer le protocole de

    transfert.

    Une interface série, également, n'a qu'une ligne pour chaque sens.

    Mais elle utilise une synchronisation matérielle, habituellement avec

    un quartz, et les deux côtés doivent employer exactement la même vitesse 

    de transmission, par exemple 1200 bauds. 

    Il est difficile de réaliser cela avec seulement un logiciel.

    Que faire alors ?                     

    L'idée maîtresse consiste à utiliser l'avantage de la vitesse du PC 

    sur le CPC. Chaque octet est partagé en 8 bits, et transmis en série,

    le PC devant se charger de positionner le signal BUSY au rythme voulu. 

    Durant la transmission de ces 8 bits, le CPC fournit sa vitesse

    maximale, et le PC doit se régler sur lui. Le CPC écrit un "bit de

    requête" avec une instruction en assembleur, et le PC doit réagir

    rapidement en positionnant le signal BUSY en concordance avec le

    bit suivant, puisque, avec l'instruction "suivante-moins-une" (?),

    le CPC le lira.

    Afin de ne pas désactiver les interruptions pendant tout le transfert,

    pour chaque octet, une "connexion" est établie : le CPC dit "Envoie-moi

    quelque chose !", et le PC répond "D'accord, j'attends jusqu'à ce que tu

    sois prêt à le recevoir !" en basculant le signal BUSY.

    Tout le processus est protégé par un timer, pour éviter qu'aucun des

    deux partenaires n'aille se planter en attendant un signal qui n'a

    jamais été envoyé.

    Ainsi (puisque les interruptions ne sont pas désactivées), vous pouvez

    sortir du programme avec <ESC> ou <CRTC>+<BREAK> à tout moment.

    







  7.6.3  CPCTRANS

  ---------------



    Une autre option non mentionnée, à propos de CPCTRANS, est "/d 0" 

    ou "/d 1". Avec 1, le mode double-pas spécial est sélectionné, et, 

    sur les lecteurs de disquettes 80 pistes, chaque seconde piste est

    sautée lorsqu'on travaille avec des disquettes de 40 pistes.

    Cette option ne devrait pas être nécessaire, puisque CPCTRANS commute

    automatiquement en double-pas quand il détecte une disquette 5,25 pouces

    et 360 K.

    

    Normalement, il est très simple de lire et d'écrire des secteurs en

    utilisant le BIOS. Mais le BIOS ne peut pas gérer les faces B des

    disquettes avec une marque de tête égale à 0.

    Aussi ai-je programmé moi-même les fonctions du FDC, avec l'aide de

    la source MINIX. Malheureusement, cette source MINIX contient des 

    erreurs, et le "timing" de certaines sections critiques est effectué

    par de simples boucles d'attente qui ont peut-être été prévues pour 

    un 8086, beaucoup plus lent que les microprocesseurs actuels.









7.7  Structure des fichiers CPCEMU

==================================





  7.7.1  Images de disquettes

  ---------------------------



    Ces fichiers se composent d'un bloc de 256 octets d'infos sur la

    disquette, et, pour chaque piste, d'un bloc de 256 octets d'infos

    sur la piste, suivi par les données pour chaque secteur de chaque 

    piste.

    Le nouveau format "étendu" de disquettes est conçu pour la copie

    de disquettes protégées. Les éléments nouveaux de ce format

    étendu sont signalés par un *E* (à partir de notre "Extended DISK

    Format Proposal, Rev.5).



    Le bloc d'Information Disquette

    -------------------------------

    Octet (hexa) :  Signification :

    00 - 21         MV - CPCEMU Disk-File\r\nDisk-Info\r\n

                    ("MV - CPC" est caractéristique

                    pour la reconnaissance du fichier)

               *E*  "EXTENDED CPC DSK File\r\n\Disk-Info\r\n"

               *E*  ("EXTENDED" est caractéristique pour

                    la reconnaissance du fichier)

    22 - 2F         inutilisé (0)

               *E*  Créateur de DSK (nom de l'utilitaire)

                    (sans \0 de fin nécessaire !)

    30              nombre de pistes (40, 42, peut-être 80)

    31              nombre de têtes (1 ou 2)

    32 - 33         taille d'une piste (incluant 256 octets d'info-piste)

                    Avec 9 secteurs * 512 octets + 256 octets d'info-piste

                    = 0x1300.

               *E*  inutilisé (0)

    34 - FF         inutilisé (0)

               *E*  octets forts des taille de piste pour toutes les pistes

                    (calculé de la même façon que 32-33 pour le format

                    normal).

                    Pour les formats simple face, la table contient les

                    tailles de piste d'une seule face ; sinon, pour les deux

                    faces alternées.

                    Une taille de valeur 0 indique une piste non formatée.

                    Longueur réelle de la piste = valeur de la table * 256.

                    Gardez à l'esprit que l'image contient en plus 256 octets

                    d'information sur la piste.



    Le bloc d'Information Piste (pour chaque piste)

    -----------------------------------------------

    Octet (hexa) :  Signification :

    00 - 0C         Track-Info\r\n

    0D - 0F         inutilisé (0)

    10              numéro de piste (de 0 à "nombre de pistes - 1")

    11              numéro de tête (0 ou 1)

    12 - 13         inutilisé (0)

    Paramètres de formatage de piste :

    14              BPS (octets par secteur) (2 pour 512 octets)

    15              SPT (secteurs par piste) (9, jusqu'à 18)

    16              GAP#3 de formatage (0x4E)

    17              Octet de remplissage (pendant le formatage, 0xE5)

    Info secteur (pour chaque secteur) :

    18+i            numéro de piste  \

    19+i            numéro de tête    | information ID de secteur

    1A+i            numéro de secteur |

    1B+i            BPS              /

    1C+i            état 1, code d'erreur (0)

    1D+i            état 2, code d'erreur (0)

    1E+i , 1F+i     inutilisé (0)

               *E*  Longueur du secteur en octets (notation "petit Indien",

                    c'est-à-dire l'octet faible avant l'octet fort).

                    Cela permet d'avoir des secteurs de différentes tailles

                    sur la même piste. Calculé comme (0x0080 << BPS réel).



    Notes :

    Les données enregistrées sur le secteur doivent suivre le bloc

    d'Information-Piste dans l'ordre des IDs de secteur. Aucune piste,

    aucun secteur ne doit être omis. 

    Avec les formats double face, les pistes alternent, par exemple :

    piste 0 tête 0, piste 0 tête 1, piste 1 tête 0, etc.

    Employez CPCTRANS pour copier des disquettes CPC vers ce format.







  7.7.2  Fichiers Snapshots

  -------------------------



    Les fichiers snapshots se composent d'un en-tête de 256 octets,

    suivi du dump de la mémoire entière.



    L'en-tête Snapshot :

    Octet (hexa) :  Signification :

    00 - 07         "MV - SNA" (pour reconnaître ce type de fichier)

    08 - 0F         inutilisé (0)

    10              version de snapshot (2, auparavant 1)

    11 - 1A         registres du Z80 AF, BC, DE, HL, R, I

    1B - 1C         drapeaux du Z80 IFF0, IFF1 (0=désactivé, 1=activé)

    1D - 24         registres du Z80 IX, IY, SP, PC

    25              mode d'interruption IMD du Z80 (0 - 2)

    26 - 2D         registres du Z80 AF', BC', DE', HL'

    2E              Gate Array : registre du numéro d'encre

    2F - 3F         Gate Array : registre de valeur d'encre (0, 1,..., 15, 16)

    40              Gate Array : registre multi-configuration

    41              Gate Array : registre configuration de la RAM

    42              CRTC : registre d'adresse

    43 - 54         CRTC : registre de données (0, 1,..., 17)

    55              numéro de ROM haute

    56 - 59         PIO : port A, port B, port C, port de contrôle

    5A              PSG : registre d'adresse

    5B - 6A         PSG : registre de données (0, 1, ..., 15)

    6B - 6C         taille du dump de la mémoire (64K ou 128K)

    (les paramètres suivants n'existent que depuis la version 2.0)

    6D              type de CPC où le snapshot a été généré

                    (0=CPC 464, 1=CPC 664, 2=CPC 6128, 3=inconnu)

    6E              numéro d'interruption (0..5), la dernière interruption

                    durant un cycle de rafraîchissement de l'écran.

    6F - 74         6 octets de multi-mode : le mode d'écran (0..2) pour

                    les interruptions 0..5.

    75 - FF         inutilisé (0), peut-être plus tard pour la configuration

                    de l'émulateur











  7.7.3  En-tête AMSDOS

  ---------------------



    Octet (hexa) :  Signification :

    00              numéro d'user (0 ; valeurs possibles : 0-15)

    01 - 0F         nom + extension (zéros de remplissage le cas échéant)

    10              numéro de bloc (0)

    11              drapeau "dernier bloc" (0)

    12              type de fichier (0=Basic, 1=Basic protégé, 2=binaire,

                    etc.)

    13 - 14         longueur de bloc (0)

    15 - 16         adresse de chargement (0-FFFF)

    17              drapeau "premier bloc" (0)

    18 - 19         longueur logique (0-FFFF)

    1A - 1B         adresse du point d'entrée (0-FFFF)

    1C - 3F         libres pour l'utilisateur (0)

    40 - 42         longueur réelle du fichier (1-FFFFFF)

    43 - 44         somme de contrôle des octets 00-42

    45 - 7F         inutilisé (valeurs aléatoires venant du tampon secteur)



    Note :

    Un en-tête précède tout fichier non-ASCII. Il est identifié comme tel

    en calculant la somme de contrôle.

    Les octets 00-3F ont pour origine la "zone cassette", où les fichiers 

    étaient divisés en blocs.

    Les octets 12, 15-16, 1A-1B, 40-42, 43-44 sont nécessaires.





  7.7.4  Base de données de Pokes

  -------------------------------



  Une entrée (une ligne) consiste en 7 rubriques, chacune étant limitée

  par des guillemets, et séparées par des virgules.

  1. numéro de rubrique (1 caractère, 0-F) : la première a le numéro 0

     et peut être sélectionnée. Si un programme nécessite plus d'un poke, 

     les entrées suivantes ont les numéros 1, 2, etc.

  2. Nom du programme (jusqu'à 20 caractères).

  3. Description (jusqu'à 20 caractères).

  4. Type (1 caractère) : "t"=Tape (cassette), "d"=disquette, "a"=all (tous). 

     Ignoré en général.

  5. Adresse du poke (4 caractères, hexadécimal) : donne l'adressse en

     mémoire dont le contenu doit être modifié.

  6. Valeur à "poker" (2 caractères, hexadécimal ou "??") : si c'est "??",

     vous devrez fournir vous-même la valeur, pas exemple un nombre de vies.

  7. Ancienne valeur, à modifier (2 caractères, hexadécimal ou "??") :

     permet de vérifier si le poke modifie l'environnement correct. Si la 

     valeur trouvée à l'adresse du poke diffère de cette ancienne valeur, 

     un avertissement est affiché. Il n'y a pas de vérification avec "??". 



  Exemple :

    "0","Devils Crown","inf oxygen","t","863b","00","??"

    "1","","","t","863c","00","??"

    "2","","","t","863d","00","??"



    Il y a trois pokes pour le programme "Devils Crown", tous fonctionnant

    ensemble. Les anciennes valeurs sont inconnues, donc on a mentionné "??".

    Vous pouvez omettre le nom et la description dans les entrées qui suivent.











7.8  Historique interne

=======================

                                             



  Z80EMU (seulement un Z80, beaucoup moins qu'un CPC)

  ---------------------------------------------------



  - v1.0 (1991) :

    Première version en Pascal (uniquement une émulation de Z80).

  

  - v1.2 (12.8.1992 - 16.8.1992) :

    Première version en C (traduite avec TPTC).

    Problèmes Z80 : ADD HL..., DAA, LDIR positionnent de façon incorrecte

    le drapeau P. BIT... positionne de façon incorrecte le drapeau Z.

    Les instructions de rotation positionnent de façon incorrecte les 

    drapeaux Z et S. On peut à présent employer les ROMs.

  

  - v1.3 (18.8.1992) :

    Mauvais adressage de port : octet faible incorrect. 

    Nouvelle gestion de la mémoire avec 128 K de RAM, 32 K de ROM.

  

  - v2.0 (18.8.1992 - 22.8.1992) :

    Implantation de la technique CO-CPU pour trouver les erreurs (CO-CPU 

    utilise de la mémoire séparée, et n'est active que dans un mode de 

    débogage spécial). 

    Problèmes Z80 : AND... positionne de façon incorrecte le drapeau H. 

    CPI... positionne de façon incorrecte le drapeau N. 

    A l'origine, l'écran était seulement en noir et blanc, à présent il est 

    bleu et jaune comme sur un vrai CPC.

  

  - v2.1 (25.8.1992 - 27.8.1992) :

    Emulation de tous les PENs et de toutes les couleurs, dans tous les 

    modes. 

    Ecriture seulement sur l'écran actif (celui que vous voyez).

    CO-CPU a trouvé une erreur : toutes les instructions contenant

    (IX+zz) avec un déplacement négatif étaient fausses ! J'avais oublié

    de prendre en compte les octets "signés".

  

  - v2.2 (30.8.1992 - 3.9.1992) :

    Nouvelle routine pour le clavier.

    Palette fixée, sans clignotement (attente pour HSYNC).

    "Need-ROM" avec COPYMATE introduite.

  

  - v2.3 (15.9.1992 - 19.9.1992) :

    Emulation du FDC pour "charger/sauver secteur". 

    CO-CPU a trouvé une erreur : LD XH,... était LD H,...

  

  - v2.3b (19.9.1992) :

    Fait le rafraîchissement de l'image seulement si l'écran est en RAM,

    blocs 0..3 (et non 4..7).

    Fait de "port FCxx" un alias pour FBxx (pour CP/M Plus). 

    A ce moment, je ne savais pas que OUTI... prédécrémentait le registre B.

  

  - v2.4 test (25.10.1992) :

    Emulation du registre seulement si on le désire (avec "DEFINE").

    A présent, rafraîchissement de l'écran à chaque interruption "n", et non 

    pour chaque octet écrit en mémoire (toujours très lent, parce que tout 

    est écrit en C).

    Nouvelle gestion de la mémoire, avec les blocs alignés sur les segments.

  

  - v2.5 test (31.10.1992) :

    Changé la gestion de la mémoire. Scrolling "hard" et différentes tailles 

    d'écran possibles.

  

  - v2.6 test (5.11.1992) :

    Nouveau gestionnaire du clavier, de Arnt Gulbrandsen : toutes les

    combinaisons de touches possibles. 

    Rafraîchissement de l'écran en assembleur.

  

  - v2.7 test :

    Essayé, sans succès, d'inclure l'émulation rapide du Z80 due à Juergen 

    Weber.

  

  - v2.8 :

    Rafraîchissement de l'écran amélioré : seules les zones modifiées en 

    mémoire-écran sont modifiées à l'écran. 

  

  - v2.9 :

    Utilisation du timer du PC pour générer les interruptions sur 300 Hertz. 

    L'émulation rapide fonctionne seulement si on n'a besoin d'aucune ROM

    (commutation de banques).



  CPCEMU (un CPC, à présent)

  --------------------------

  - v0.2 (23.12.1992), succédant à Z80EMU v2.9 :

    Après presque quatre heures d'analyse avec Turbo Debugger, j'ai trouvé 

    l'erreur qui plantait l'émulation rapide : PUSH ES au lieu de PUSH DS.

  

  - v0.3 (28.12.1992 - 29.12.1992) :

    Positionné le drapeau N pour INI, OUTI. 

    CPI en émulation rapide positionnait mal les drapeaux. 

    RL (HL) utilisait le segment de lecture (dans DS) au lieu du segment 

    d'écriture (dans ES). 

    LD A,R produit à présent des nombres aléatoires.

    Implanté toutes les routines-cassette (mais CASSETTE IN CHAR est fausse).

  

  - v0.4 (1.1.1993) :

    IN A,(n) : A sur les bits b8..b15 (au lieu de B).

    Configuration de la RAM 0xC3 : corrigée vers 0,3,2,7 (pour CP/M Plus). 

    KC-Compact (un compatible CPC de l'ancienne Allemagne de l'Est) utilise

    le port EE00 - EE3D, mais pour quoi faire ?

  

  - v0.5 (28.1.1993 - 8.2.1993) :

    INIR, ... : l'incrémentation du registre R dépend de B, pas de BC. 

    CASSETTE IN CHAR corrigée ("patch" défectueux pour CPC 6128).

  

  - v0.6 (23.3.1993 - 24.5.1993) :

    Quelqu'un me fait savoir que les instructions OUTI prédécrémentent 

    le registre B !

    Compilation des parties en C vers le code 386 (avec Borland C++ v3.1). 

    Les images de disquettes ont le suffixe "DSK". 

    CPCREAD.PAS corrigé (tête non initialisée avec 0) et renommé CPCREAD.C.

    Adressage de port du PIO amélioré (le microprocesseur peut lire même si

    le port est programmé en sortie, etc..)

  

  - v0.7 (26.7.1993 - 29.8.1993) (pas sortie) :

    Source totalement nouvelle, modulaire, etc.  

    Fichier de configuration : davantage de ROMs possible. 

    Changé le nom de la firme de "Schneider" en "Amstrad" (on peut choisir

    entre sept noms).

    Enlevé l'erreur de commutation de banques-RAM.

    Nouvelle documentation en allemand.

  

  - v0.8 (30.8.1993 - 9.9.1993) :

    Emulation lente : instructions de parité améliorées en utilisant une 

    table, pas seulement pour la parité.

    Z80 : ED xx avec "xx" illégal est ignoré. 

    Nouvelle documentation en anglais.

  

  - v0.8a (10.9.1993 - 15.9.1993) :

    Erreur fatale dans l'émulation rapide : si une instruction DD CB xx 

    est exécutée et qu'une interruption survient, l'instruction est ignorée !

  

  - v0.8b (16.9.1993 - 21.9.1993) :

    Implanté une "vraie" VSYNC, si VSYNC_CT = 0. 

    Corrigé le problème du port A du PIO : OUT &F400,xx avec le Port A en

    mode entrée était ignoré. 

    Nouvelle routine pour le joystick par Martin Zacho.

  

  - v0.8c (22.9.1993 - 13.12.1993) :

    Vérifié la documentation avec "ispell". 

    L'émulation ne démarrair pas si "USE_JOYSTICK=YES" et si un joystick 

    n'était pas présent (PUSH AX à la mauvaise position). 

    Emulation lente : DAA corrigée (les parenthèses manquaient depuis la

    version v0.8). 

    Mauvaise modification dans la routine d'interruption pour le CPC 664. 

    Remplacer EI par NOP évite le problème avec EI (active les interruptions 

    une instruction plus tard). Maintenant corrigé pour tous les CPCs.

  

  - v0.8d (14.12.1993 - 29.12.1993) :

    Emulation du FDC réécrite pour les formats double face. 

    CPCTRANS remplace l'ancien CPCREAD, et permet de lire les disquettes

    Vortex après que vous ayez installé le patch 720KB.COM. En plus de cela,

    vous pouvez réécrire les images de disquettes sur la disquette.

    Nouvelle sélection de fichiers avec la touche F3. 

    Introduit quelques aliases d'adresses de port, par exemple &7000 - &7f00 

    pour adresser le Gate Array, &0c00, &1c00, &2c00, &3c00, &bc00 pour le

    CRTC.    

    Activé l'émulation du registre R.

  

  - v0.9 alpha (30.12.1993 - 20.1.1994) :

    Mémoire EMS possible avec une configuration spéciale EMS/UMB.

    Nombres binaires dans le fichier de configuration. 

    Corrigé l'adressage de la commutation des banques de RAM : l'émulateur

    acceptait &d0-&ff comme &c0-&c7. 

    A présent, jusqu'à 576 K de RAM avec EMS.

  

  - v0.9b (21.1.1994 - 31.1.1994) :

    Utilisation de EMS simplifiée avec EMS étendue (ou LIM EMS 4.0), avec 

    plus de 4 pages physiques EMS. 

    Sélection de fichiers ajoutée aux options "l" (menu Debug) et RUN".

  

  - v0.9c (1.2.1994 - 29.4.1994) :

    Du son, mais horrible, sur le haut-parleur du PC (désactivé avec F4).

    Sélection de fichiers aussi avec l'option "v" du menu Debug.

    Documentation anglaise corrigée.

    Son avec la carte Soundblaster (peut être amélioré).

    Nouveau CPCTRANS avec paramètres sur la ligne de commande. 

    Accès direct au FDC.

    Adaptateur parallèle testé, et le logiciel qui va avec, amélioré.

    Emulation rapide du Z80 : INC (HL), DEC (HL), INC (IX+n), DEC (IX+n) 

    pour la RAM au-dessous de la ROM, corrigée. 

    <PgPréc>,<PgSuiv> déplacent les écrans agrandis.

    Affichage de parties d'overscan.

    Maintenant possible : snapshots de 64 K.

  

  - v0.9d (30.4.1994 - 12.5.1994) :

    Les interruptions durant un DI ne sont pas oubliées, et elles ne sont

    plus activées directement après une instruction EI. 

    Nouvelles fonctions de couleurs : à présent sans "neige" sous OS/2. 

    Emulation rapide du Z80 : code accéléré.

  

  - v1.0 (13.5.1994 - 20.5.1994) :

    Partie écran améliorée : différentes tailles de caractères, de 1 à 8. 

    Sélection de fichiers ajoutée à SAVE ; ajouté une sélection rapide en 

    tapant une lettre. 

    Amélioré CPCTRANS, avec une option de vérification. 

    Nouveau menu de réglages si on appuie sur F7. Ainsi, on peut désactiver

    le papillonnement des couleurs.

  

  - v1.0a (21.5.1994 - 9.6.1994) :

    Amélioré le menu des réglages avec entrée directe ou par les flèches

    du curseur. Ajouté une possibilité de clavier allemand, et une option

    simple délai.

    Corrigé l'affichage d'écrans de taille plus petite (sans parties d'écrans 

    plus grands).

    Amélioré en partie l'émulation rapide du Z80 : RRA, RLA et autres

    instructions CB xx. 

    Ajouté davantage d'instructions illégales (ED xx) : LD D,XH et LD YL,YH 

    manquaient ! 

    Corrigé CPDR, CPIR avec BC=0 (0 signifiant 65536 sur un Z80, mais bien 0

    pour le préfixe REPE du 80x86 !). 

    Drapeaux DAA corrigés. 

    Nouveau logiciel pour l'adaptateur parallèle : à présent, il est possible 

    de transmettre vers le CPC. 

    Merci à Bernd Schmidt pour avoir attiré mon attention sur le fait qu'une

    interruption ajoute 1 au registre R. Avec son aide, l'émulation du port C 

    du PIO a été améliorée.



  - v1.1a (10.6.1994 - ) :

    CPCEMU entre dans une nouvelle ère : Amstrad a autorisé l'utilisation

    de ses ROMs !

    Changement dans le fichier de configuration : ROM_BLOCKS -> ROM_BLOCK, 

    DISC_BYPASS-> DISABLE_ADOS, plus d'espace nécessaire pour séparer "=". 

    Changement dans la partie son et la partie graphique : taille verticale

    par VGA-CRTC. 

    Le calibrage du joystick se trouve à présent dans le menu des réglages.

    Amélioration des routines de sauvegarde sur "cassette".

    Partie FDC améliorée : maintenant, vous pouvez employer COPYMATE.

    Insertion sans erreur de lecture avec les disquettes au format autre 

    que DATA (sans recherche de la piste 0).

    Un autre délai d'attente dans CPCTRANS : j'espère que vous n'aurez plus

    besoin du commutateur turbo de votre PC. Formatage d'images de disquettes.

    Corrigé une nouvelle fois le port C du PIO : il est effacé après un

    "OUT &7f00,n".                                            

    Changements importants dans le fichier de configuration : à présent,

    il comporte une configuration conditionnelle (#IFCPC, #ENDIF). Quelques 

    mots-clés changés (VSYNC_CT -> /, DISC_PATH -> /, SNAP_PATH -> SNAPSHOT, 

    DRV_A -> DRIVE_A, DRV_B -> DRIVE_B). 

    Chargement de programmes depuis une archive ZIP, nécessitant PKUNZIP.



  - v1.1b (17.8.1994 - 2.9.1994) :

    Multi-mode introduit, ce qui signifie différents modes sur le même écran. 

    Le rafraîchissement de l'écran est partitionné jusqu'à six zones, et

    chacune est rafraîchie quand une interruption survient (peut être 

    amélioré).

    Possible maintenant : snapshots de 128K, étendus pour multi-mode. 

    CPCPARA amélioré : on peut maintenant transférer les fichiers binaires

    avec un en-tête. 

    Détection du CPC 6128 Plus incluse.

    Davantage d'aliases de ports.



  - v1.2 (3.9.1994 - ) :

    Principalement, quelques changements dans le menu d'aide.



  - v1.2a (27.9.1994 - ) : était disponible dans UPD12A.ZIP :

    Sélection de fichiers : seuls les lecteurs disponibles étaient affichés.

    Et : avec le pilote ANSI.SYS, le fond du texte était noir.

    TMP_PATH : vous pouvez spécifier un lecteur, sans chemin.

    DOS Shell (F7) : CPCEMU est d'abord permuté vers XMS, EMS ou le disque 

    dur, ainsi vous disposez de plus de mémoire dans le Shell du DOS

    (cette particularité vient du programme du domaine public SWAP300.ZIP, 

    de Marty Del Vecchio).

    Le rafraîchissement de l'écran pouvait être corrompu, si la largeur de

    l'écran n'était pas divisible par 4.

    Une autre version de CPCEMU est encore plus rapide : C2.EXE. Elle

    utilise une gestion différente de la mémoire, avec deux frames EMS de

    64 K chacune. Mais elle ne tourne qu'avec EMS.

    Les ROMs sont aussi "(c) by Locomotive Software", pas seulement Amstrad.



  - v1.2b (  ) :

    Il n'y avait pas de son stéréo sur une carte Soundblaster Pro, même si 

    la configuration l'affirmait. Si aucune carte Soundblaster n'était 

    trouvée, il n'y avait pas de son du tout jusqu'à ce que vous utilisiez 

    USE_SB=NO.

    Z80 rapide : remplacé l'accès à un mot par l'accès à un octet. C'est 

    un peu plus lent, mais on ne plante plus l'ordinateur chaque fois qu'on 

    accède à un mot à l'adresse 0xffff. Egalement, problème corrigé avec 

    "EI HALT DI" : l'adresse où HALT était PUSHé au lieu de celle de DI.

    Corrigé la documentation anglaise.

    Amélioré CPCPARA et PCPARA v1.1 : test de l'adaptateur, vitesse plus 

    grande de CPC vers PC (approximativement 1600 octets par seconde lors 

    de la lecture sur la disquette, avec un 486/66), statistiques. Ainsi, 

    vous pouvez transférer 16 K en 10 secondes ! Merci à Klaus Weber pour 

    m'avoir fait remarquer qu'avant, c'était beaucoup trop long. Dans PCPARA, 

    il y avait un DELAY(1) après chaque quartet, pour attendre une 

    milliseconde, et ce n'était pas nécessaire.



  - v1.2c (28.2.1995 - ) : était disponible dans UPD12C.ZIP :

    Parties de CPCEMU réécrites en C++. Cela permet des fonctions "inline" 

    et des interfaces améliorées, pour garder un meilleur aperçu sur le

    projet.



  - v1.2d (16.3.1995 - ), réservée aux correspondants :

    Z80 rapide : changements internes, invisibles à l'utilisateur, sauf une 

    petite amélioration de la vitesse. Toutes les données sont gardées dans

    le segment de données, à présent, au lieu du segment de code.

    Introduit finalement le mode absolument nécessaire pour les ordinateurs

    rapides : le "realtime CPC" (vitesse réelle du CPC, à sélectionner dans

    le menu des réglages ou avec REALTIME=1).



  - v1.3 (16.4.1995 - ) :

    Base de données de POKEs pour les jeux.

    Documentation sommaire en français.

    Commandes pour le FDC (reformater des images de disquettes à la même

    taille).

    Nouveau système de menu acceptant la souris (MOUSE=1).

    Insertion d'images de disquettes avec l'attribut DOS "read-only", et qui 

    conservent cet attribut.

    Menu Debug : ajouté l'option "find".



  - v1.3a (30.4.1995 - )     (était disponible sous UPD13A.ZIP)

    Avec la version v1.3, "Boulder Dash" ne marchait pas, alors qu'il

    fonctionnait avec v1.2.

    Le mode 2 d'interruption du Z80 n'était pas simulé correctement

    (oublié PUSH/POP).

    L'émulation lente du Z80 avait une bogue similaire.

    CPCTRANS : option -f 6 activée.



  - v1.3b (20.5.1995 - )      (disponible sous UPD13B.ZIP)

    Certains utilisateurs ont signalé qu'il n'y avait pas de sortie de son

    SoundBlaster depuis la version 1.3.



  - v1.4 (v1.3c)

    Support de son GUS par Ulrich Doewich.

    Système d'aide en ligne en anglais, allemand, français et

    espagnol. Documentation complète en français.

    Support pour deux joysticks.

    Modes vidéo VESA pour résolutions supérieures.

    Amélioré le menu des réglages et le fichier de configuration.

    Configuration "load" et "save" ajoutées dans le menu des réglages.

    Amélioré les routines du FDC pour les formats non standard.

    Format de disquette étendu.

    Couleurs et touches paramétrables par l'utilisateur.

    Nouveau SNA2GIF (v1.1) pour récupérer l'image-écran d'un snapshot.

    CPCTRANS amélioré (v2.3).

    Emulation rapide du Z80 : parfois, l'écran n'est pas complètement

    effacé après un reset (problème avec HALT).







  CPCEMU est écrit en C++ et en assembleur, à l'aide de Borland C 3.1, 

  optimisation 386 et Turbo Assembler. Pour le débogage, on a employé

  Turbo Debugger.

  Les couleurs ont été composées avec le programme VGAMETER de J. Stephen

  Shattuck, Jr., le CPC étant connecté à un téléviseur avec un adaptateur 

  Scart.







------------------------------------------------------------------------







(A partir d'ici, vous pouvez reprendre votre lecture sans danger.)







Appendice

_________







A.1  Glossaire

______________



Ici, quelques termes relatifs aux ordinateurs sont expliqués. Je ne prétends 

pas donner des définitions complètes ou précises. Les termes sont décrits du 

point de vue du CPC.

Les références sont marquées d'un "»".





386/33 (AT 386/33)

  Abréviation pour »PC AT avec processeur 80386, cadencé à 33 MHz.

  A cause d'une vitesse d'horloge "élevée", ce devrait être un 386DX, 

  avec un vrai bus de données sur 32 bits, et non un 386SX bon marché

  avec un bus de données de 16 bits.



Adresse de Base

  C'est celle que vous devez spécifier dans de nombreux réglages si vous

  possédez une carte-son.

  CPCEMU cherchera une variable d'environnement qui contienne ces réglages.



AMSDOS (Amstrad DOS)

  Type de »DOS développé par »Amstrad, pour les ordinateurs »CPC.



Amstrad

  Constructeur britannique d'ordinateurs, qui a conçu les »CPCs.



Archive

  Stockage de fichiers.

  Ou : un fichier qui en contient plusieurs autres.

  Dans les archives »ZIP, les fichiers sont compressés avant d'y être inclus.



ASCII (Abréviation de : American Standard Code of Information Interchange)

  Sur un ordinateur, tous les caractères, y compris les chiffres, sont 

  représentés de façon interne sous forme de nombres.

  Beaucoup d'ordinateurs emploient le code ASCII, avec la lettre "A" codée 65. 

  »PC et »CPC également emploient l'ASCII. Avec le Basic »Locomotive, vous

  pouvez sauvegarder un fichier Basic en ASCII, en tapant SAVE"<nom>",A.



BASIC (Abréviation de : Beginners All purpose Symbolic Instruction Code)

  Langage de programmation largement utilisé sur les ordinateurs "familiaux"

  et personnels. Facile à apprendre. A l'origine, chaque ordinateur avait

  son propre langage Basic.

  Les Basics modernes, comme le QuickBasic, permettent la programmation 

  structurée, de sorte que vous n'êtes plus obligé de fabriquer des 

  "programmes spaghetti".

  Le »CPC a aussi son propre Basic, le Basic Locomotive, du nom de la firme 

  qui l'a créé.



Boîte de cavaliers (Jumper box)

  Un boîtier adaptateur destiné à réaliser toute connexion entre deux

  connecteurs, en employant de courts fils métalliques qui doivent être 

  soudés. Voir aussi »Wiring Box.



Boîte OS/2 DOS

  Une fenêtre sous le système d'exploitation pour 32 bits d'IBM nommé OS/2. 

  Est capable de faire fonctionner les programmes DOS. 

  La boîte de compatibilité avec DOS.



C64:

  Ordinateur familial de la firme Commodore, avec 64 K de »RAM, très

  populaire. En raison de la quantité prodigieuse de programmes qu'il

  a suscitée, il est resté l'ordinateur de jeu par excellence, et durant

  des années. Plus tard, il a été relégué par l'Amiga de Commodore, mais, 

  en dépit de sa technique dépassée, il a survécu longtemps.



Chemin de recherche du DOS

  Le DOS utilise un chemin au long des sous-répertoires, pour trouver

  un fichier. Ce chemin est placé dans la variable d'environnement "PATH".



Circuits hardware

  Composants à l'intérieur de l'ordinateur, comme le processeur, les

  circuits de mémoire, le contrôleur de disquettes, etc.

  Le CPC contient le processeur Z80, le Gate Array, le CRTC 6845 pour

  adresser la mémoire de l'écran, le PIO 8255 pour les entrées/sorties,

  le circuit sonore PSG AY 3-8912, le contrôleur de disquettes FDC 765,

  etc.



Compilateur Turbo Pascal

  Le Pascal est un langage de programmation de haut niveau qui permet

  la programmation structurée. Aujourd'hui utilisé dans beaucoup d'écoles.

  Lorsqu'on parle de "Pascal", on entend le plus souvent Turbo Pascal, même

  si ce terme désigne seulement le Pascal étendu de la firme Borland. 

  Le compilateur Turbo Pascal est particulièrement rapide, car il compile

  le programme en une seule passe.



Configuration

  Ici : configurer un programme pour les besoins de l'utilisateur.

  Vous pouvez le faire dans le menu des réglages ou dans le fichier de

  configuration.



CPC (Abréviation de : Colour Personal Computer)

  Développé par la firme »Amstrad, était disponible dans différents modèles. 

  Relisez l'introduction si VRAIMENT vous n'avez pas encore compris.



CP/M Plus (Abréviation de : Control Program for Microcomputers)

  Système d'exploitation de la firme Digital Research, consacré aux

  micro-ordinateurs 8 bits. Largement utilisé jusqu'à ce qu'IBM décide

  d'utiliser MS-DOS pour ses PCs.

  CP/M Plus (CP/M 3.0) était le successeur de CP/M 2.2, et fut inclus 

  sur les disquettes fournies avec le »CPC 6128.



CTRL/SHIFT/ESC (control/shift/escape)

  Combinaison de trois touches permettant le reset sur un »CPC. Il équivaut

  à "Ctrl/Alt/Suppr" sur un PC. Certains programmes bloquent un tel reset,

  de sorte que vous devez éteindre l'ordinateur ou utiliser le bouton de 

  reset. Les CPCs n'avaient aucun bouton de reset, mais il était facile

  d'en construire un.

  Dans CPCEMU, la touche de fonction F8 remplit cet office.



Curseur

  Caractère qui montre, à l'écran, la position courante d'écriture.

  Sur le clavier, des touches fléchées servent à déplacer le curseur.



Définitions de formats

  Définitions de formats de disquettes.



D-Sub

  Connecteurs de forme spéciale.



Dk'tronics

  Firme britannique qui offrait des extensions matérielles pour le »CPC, 

  notamment des extensions de mémoire.



DMA (Abréviation de : Direct Memory Access)

  Accès direct de l'ordinateur à la mémoire, sans passer par le 

  microprocesseur. Utilisé par les lecteurs de disquettes, mais, par

  mesure d'économie, non implanté sur les CPCs (sauf le dernier modèle,

  le CPC+).

  La carte Soundblaster peut aussi utiliser un canal DMA, par lequel passe

  le son numérique.

  

DOS (Abréviation de : Disk Operating System)

  Système d'exploitation de disquettes, par exemple AMSDOS, DRDOS, MS-DOS.

  Est aujourd'hui synonyme de MS-DOS.



DRDOS

  Un »DOS compatible avec MS-DOS, vendu par la firme Digital Research.



E-Mail (Abréviation de : Electronic Mail)

  Utilisation d'un ordinateur comme boîte aux lettres.



EMM (Abréviation de : Expanded Memory Manager)

  Equivaut à »EMS.



EMS (Abréviation de : Expanded Memory System)

  Extension de mémoire pour le »PC, destinée à outrepasser la limite

  des 640 K. Au moyen de la technique de commutation de banques, des

  pages supplémentaires de mémoire sont ménagées dans une fenêtre EMS.

  Ce système a été développé par Lotus, Intel et Microsoft, aussi est-il

  appelé LIM-EMS.

  Il existe de l'EMS matérielle, émulée ou simulée.

  Des cartes de mémoire spéciales fournissent de l'EMS matérielle,

  utilisée principalement sur les anciens PCs XT. Sur un PC AT avec 

  au moins un processeur 80386, il est possible d'avoir de l'EMS émulée 

  en utilisant le mécanisme des pages pour la commutation de banques.

  Ce type d'EMS est fournie par EMM386.EXE, et devrait être employé 

  pour accélérer CPCEMU.

  L'EMS simulée est trop lente, elle doit copier les pages de mémoire.



Emulateur

  Le système qui en émule un autre.



Emuler

  Imiter un système (par matériel ou par logiciel) par un autre.

  Le système qui imite obtient les mêmes résultats, à partir des mêmes 

  données, que le système imité.

  CPCEMU émule un »CPC sur un »PC.



Fichier

  Collection de données. Sur le »CPC, il existe des fichiers de différents 

  types, par exemple les fichiers Basic (des programmes Basic sauvegardés

  avec l'extension BAS), des fichiers ASCII contenant des textes, et

  des fichiers binaires contenant des octets et signalés par une extension 

  BIN. Les fichiers binaires peuvent contenir des programmes en langage 

  machine ou des données.

  

Fichier Batch

  Contient des instructions que normalement vous tapez sur le clavier de

  votre ordinateur. Si vous appelez un tel fichier, les instructions sont

  exécutées l'une après l'autre.



Fréquence d'horloge

  Le processeur est connecté à une "horloge", qui détermine sa vitesse

  de façon significative. Aujourd'hui, les processeurs 486DX2/66 sont

  cadencés de manière interne à 66 MHz.

  Le Z80A du »CPC a une vitesse de 4 MHz, mais il tourne en réalité à 3,3 MHz

  à cause des attentes qu'il subit périodiquement pour le rafraîchissement

  de l'écran.



FTP (Abréviation de : File Transfer Protocol)

  Un protocole de transfert de fichiers sur les réseaux d'ordinateurs.

  Le programme qui fait tourner ce protocole est également appelé "FTP".



Gestionnaire de clavier

  Un programme appelé chaque fois que le clavier génère une interruption. 

  Il se sert du numéro de la touche appuyée ou relâchée.



Hardware

  Matériel, en français. Par exemple, les périphériques comme l'imprimante

  ou le moniteur. Aussi interne, comme le processeur et les autres circuits.

  

Image de ROM

  Fichier renfermant le contenu d'une »ROM. Si vous lisez une ROM et écrivez

  les octets trouvés dans un fichier, vous aurez une image de ROM.



Initialiser

  Remplir la mémoire avec des valeurs particulières, par exemple, pour

  définir les variables.



Instructions du Z80

  Instruction "machine" que le Z80 comprend.

  Elles sont codées sous forme de nombres, aussi, pour s'en souvenir plus

  facilement, on a introduit des "mnémoniques", qui seront traduits lors

  de l'assemblage (et par un "assembleur") en code binaire.

  Ainsi, l'instruction "LD A,B" charge ("LoaD") le registre A avec le contenu

  du registre B, et se traduit en code binaire par le nombre 0x78.



Interface

  Connexion de l'ordinateur à un de ses périphériques, ou d'un programme à 

  un autre. Il y a donc des interfaces matérielles et logicielles. 

  Ce qu'on "interface Centronics" est une interface parallèle (qui transmet

  les bits d'un octet en parallèle, c'est-à-dire tous en même temps).

  Avec les interfaces "série", il est nécessaire de transférer les bits

  les uns après les autres.

  

Internet

  Un "Internet" est composé de plusieurs sous-réseaux d'ordinateurs.

  Ici : *THE* Internet, un réseau mondial de communication par ordinateurs.



Interruption

  Si le processeur reçoit un signal avec un priorité supérieure, il

  interrompt le programme en cours, et appelle un gestionnaire spécial

  d'interruption. Lorsque l'interruption est terminée, il revient au

  programme interrompu.

  Sur un PC, il y a différents signaux d'interruptions, par exemple,  

  lorsque vous appuyez sur une touche, quand une minuterie arrive à

  terme, quand une donnée arrive par l'interface série, quand on déplace

  la souris, quand la carte-son a terminé d'émettre son dernier échantillon 

  et a besoin d'autres données, etc.

  Le Z80 dans le CPC est interrompu 300 fois par seconde.



Locomotive

  Firme britannique qui a écrit le Basic pour les »CPCs.



Liste de correspondants

  Un service que j'offre, et par lequel j'ajoute votre adresse électronique 

  à ma liste de correspondants. Ainsi, vous serez informé des dernières

  nouvelles concernant CPCEMU.



Manuel du firmware du CPC

  Un livre sur le »CPC qui décrit spécialement le système d'exploitation du

  CPC.



Microcanal

  Architecture spéciale de bus.



MS-DOS (Abréviation de : Microsoft Disk Operating System)

  Système d'exploitation développé par la firme Microsoft pour les

  processeurs de 16 bits (8086). Le système le plus employé sur PC.

  Toujours en usage sur les processeurs de 32 bits 80386 et 80486.



Multiface II (Abréviation de : Multipurpose Interface)

  Une extension matérielle pour le CPC. Permet d'interrompre tout programme 

  à tout moment, pour l'analyser ou le sauvegarder en l'état.

  Développée par la firme britannique Romantic Robot.



Multi-Mode

  Technique de programmation, permettant d'avoir différents modes d'écran

  simultanément affichés. Le mode d'écran est changé plus d'une fois durant

  le rafraîchissement de l'écran. Sur le CPC, on obtient des zones avec

  une haute résolution et peu de couleurs, et de basse résolution avec

  beaucoup de couleurs.



Newsgroup CPC

  Un newsgroup (forum ou conférence électronique) réservé au »CPC. 

  Il s'appelle "comp.os.amstrad.8bit" et a été créé en août 1994.



Numéro d'interruption IRQ (IRQ, abréviation de : Interrupt Request)

  Sur un PC, des interruptions différentes ont des numéros différents.

  Par exemple, l'interruption-clavier a le numéro 9, l'interruption-timer

  a le numéro 8. Si vous appuyez sur une touche, le clavier envoie une

  "requête d'interruption" au processeur, qui en est ainsi informé.



OS (Abréviation de : Operating System, système d'exploitation)

  Un programme nécessaire à l'ordinateur. Il fournit des fonctions de

  base aux programmes d'application. Les nouveaux systèmes d'exploitation

  accomplissent des tâches compliquées, tels les programmes d'agenda

  dans les systèmes multitâche, etc.



Overscan

  Le bord qui entoure la zone de l'écran où l'on peut écrire.

  Sur un PC, il est très petit, mais on peut changer sa couleur, par

  exemple sous CPCEMU avec "BORDER 10". Sur le CPC, l'overscan est bien

  plus large, aussi les programmeurs ont-ils cherché des possibilités pour

  y écrire. Avec un truc de programmation, il est en effet possible 

  d'écrire sur tout l'écran.

  Cette technique de programmation est aussi appellée "overscan".



Paramètre

  Variable possédant une signification. Le comportement du programme est 

  en relation avec elle.



Paramètres de la ligne de commande

  Paramètres que vous donnez sur la ligne de commande, après le nom du

  programme que vous appelez.



PC (Abréviation de : Personal Computer, ordinateur personnel)

  Ordinateur avec un microprocesseur comme processeur (ou CPU : Central 

  Processing Unit). Aujourd'hui synonyme du PC d'IBM, avec un processeur

  8086 ou 8088.

  Le PC AT (Advanced Technology) est un ordinateur avec un 80286, un 80386 

  ou un 80486.



PEEKs et POKEs

  Instructions »Basic modifiant directement la mémoire.

  "PEEK(<adresse>)" est utilisé pour lire un octet en mémoire,

  "POKE <adresse>,<nombre>" modifie la mémoire. Les programmes avec

  de nombreux PEEKs et POKEs sont difficiles à comprendre, mais parfois

  il est nécessaire d'outrepasser les limites du Basic, spécialement si

  celui-ci a peu d'instructions, comme celui du Commodore 64.



PKUNZIP

  Programme de PK-Software servant à décompacter les fichiers »ZIP.



Port-imprimante du CPC

  Interface Centronics »CPC, pour connecter, devinez quoi ?

  Malheureusement, les concepteurs du CPC ont été trop économes : elle a

  seulement 7 bits.

  Avec un bout de fil électrique, il était possible de l'étendre à 8. 

  Pour cela, le port-cassette était mis hors-circuit : on n'en a pas 

  besoin, de toute façon, lorsqu'on imprime.



RAM (Abréviation de : Random Access Memory).

  Circuit de mémoire "vive" : la mémoire de l'ordinateur, que l'on peut lire

  et où l'on peut écrire.

  Les CPCs ont 64K de RAM (Kilo-octets) ou 128K. Avec des extensions

  matérielles, ils pouvaient atteindre 576K de RAM.



Représentations des nombres

  Selon la base choisie, il y a plusieurs représentations possibles pour un

  même nombre.

  La plus connue est la représentation décimale, de base 10, avec les 

  chiffres de 0 à 9.

  Les ordinateurs utilisent la représentation binaire (base 2), avec les 

  chiffres 0 et 1.

  Les programmeurs apprécient la représentation hexadécimale, à base 16, 

  parce que 16 est une puissance de 2 (2 puissance 4). Ainsi, les

  représentations binaire-hexa peuvent être aisément converties entre

  elles. En outre, un octet ne nécessite que 2 chiffres "hexadécimaux"

  (0 à 9 et A à F) dans la notation hexadécimale.



ROM (Abréviation de : Read-Only-Memory).

  Circuit de mémoire, mais qu'on peut uniquement lire, sans rien y changer. 

  Disponible directement après avoir allumé l'ordinateur.

  Les CPCs ont 16K de ROM pour le système d'exploitation, 16K de ROM pour 

  l'interpréteur Basic, et 16K de ROM pour l'AMSDOS, dont seuls 7K sont

  utilisés (les 9K restant sont remplis avec des octets de valeur hexa "FF").



RS-232

  Interface série servant à connecter des moniteurs ou des imprimantes à un

  ordinateur (RS 232 C).



Schneider

  Firme allemande qui vendait les CPCs en Allemagne.



Scrolling hardware

  Déplacement de l'écran sans que le processeur ait à copier des parties

  de mémoire d'un endroit à un autre. Là, le processeur se contente de

  modifier l'adresse de base de l'écran, le reste est fait par un circuit

  matériel.



Setup (réglages)

  Changement des paramètres d'un programme, pour qu'il se comporte 

  différemment. On peut appeler le menu des réglages quand on a une

  carte-son, ou quand on utilise un joystick, etc.



SIMTEL

  Importante archive de programmes aux Etats-Unis.

  Le "SimTel Software Repository" est assuré par "Coast to Coast

  Telecommunications, Inc." (CCT) sur son ordinateur hôte, sur le réseau

  Internet d'adresse "SimTel.Coast.NET". Cette archive est "mirrored" 

  (copiée) des deux côtés.  Un site miroir se trouve à l'Université

  d'Oakland, à l'adresse "OAK.Oakland.Edu".



Snapshots

  Un dump de la mémoire, complété par l'état interne des circuits matériels.

  Il contient un "instantané" complet de l'état momentané de l'ordinateur.

  Si le snapshot est rechargé, l'ordinateur est ainsi remis dans l'état

  décrit dans le snapshot.



Software

  Programmes d'un système d'ordinateur.



Soundblaster

  Carte-son de la firme Creative Labs.



Spectrum

  Le Spectrum (il y en a eu plusieurs modèles) de Sinclair était un 

  ordinateur familial développé par la firme Sinclair.



Standard LIM (Abréviation de : Lotus Intel Microsoft)

  Extension de mémoire (»EMS), développée par Lotus, Intel et Microsoft.



Utilitaire

  Programme-outil.



VGA (Abréviation de : Video Graphics Array)

  Standard graphique sur le PC. Succède à CGA (Colour Graphics Adapter), 

  MCGA (Multi Colour Graphics Adapter) et EGA (Enhanced Graphics Adapter). 

  Etendu à SVGA (Super VGA) avec une résolution plus haute.



VGA-BIOS (Abréviation de : VGA Basic Input Output Operating System)

  Le système d'exploitation pour les cartes graphiques »VGA.



Wiring box

  Un adaptateur permettant de réaliser toute connexion entre deux connecteurs 

  avec de courts fils métalliques. Au contraire de la boîte de cavaliers

  ("jumper box"), les fils n'ont pas besoin d'être soudés.



Z80

  Un processeur de 8 bits construit par la firme Zilog. Il est compatible

  avec le 8080 d'Intel, et a été très populaire.

  Sur le »CPC, il y avait un Z80A cadencé à 4 MHz.



ZIP

  Un procédé spécial de compression de fichiers. Les archives obtenues ont

  l'extension "ZIP".











A.2  Bibliographie

__________________





Le manuel du CPC est indispensable aux débutants :

- Spital Ivor und Perry, Roland und Poel, William und Lawson,Cliff:

    CPC 6128 Benutzerhandbuch, Schneider Computer Division 1985,

    Originalausgabe (c) 1985 (le mien mentionne 1895 !)

    by AMSOFT, AMSTRAD Consumer Electronics plc and Locomotive

    Software Ltd.



Un excellent listing commenté de la ROM, avec les premiers chapitres

fournissant des informations sur le côté "software" du CPC :

- Janneck, Joern W. und Mossakowski,Till: ROM-Listing CPC 464/664/6128,

    Markt & Technik Verlag 1986



Au contraire : composé sans souci du lecteur, rarement commenté, abordant 

davantage l'aspect matériel du CPC :

- Brueckmann, Englisch, Gertis: CPC 464 Intern mit kommentiertem

    ROM-Listing, Data Becker 1985



Bon pour apprendre le langage C, avec beaucoup d'exercices :

- Kellay, Al and Pohl, Ira: A Book on C, Second Edition, 1990 by

    Benjamin/Cummings Publishing Company, Inc.



Le livre standard du C++ :

- Stroustrup, Bjarne: The C++ Programming Language, Second Edition,

  Addison-Wesley, 1992



Un autre bon livre sur le C++ :

- Eckel, Bruce: C++ Inside & Out, 1993 by Osborne McGraw-Hill



Suggestions, comment écrire un manuel bon et compréhensible :

- Boedicker, Dagmar: Handbuch-Knigge, Software Handbuecher schreiben

    und beurteilen. Wissenschaftsverlag 1990











A.3  Index

__________



Les nombres suivant les entrées indiquent le chapitre où elles sont décrites.



(Incomplet)



#ENDIF 4.2

#IFCPC 4.2

22DISK 5.1.2

Adaptateur, parallèle 5.2

AMSDOS_DI 4.2

AMSDOS_SPDUP 4.2

BREAK_MASK 4.2

Cassette 3.2.2

Clavier 3.1

CPC 1.3

CPCEMU.CFG 4.2

CPCPARA.BAS 5.2

CPCREC.BAS 5.2

CPCTRANS.EXE 5.1.1

DELAY  4.2

DRIVE_A 4.2

DRIVE_B 4.2

EMS_EI 4.2

Fichier de configuration 4.2

Image de Disquette 3.2.1

INT_FREQ 4.2

INT_RESUME 4.2

JOY_CALIBRATE 4.2

KBD_LANGUAGE 4.2

Mémoire EMS 2.3.1

Menus 3.2.1

Menu Debug 7.3

Menu des réglages 4.1

Multi-Mode 4.1

MULTIMODE 4.2

Newsgroup CPC 6.2

PCPARA.EXE 5.2

PIO_PORT_B 4.2

PRINTER 4.2

RAM_SIZE 4.2

ROM_BLOCK 4.2

ROM_PATH 4.2

SBLASTER 4.2

SB_DELAY 4.2

SHOW_CONFIG 4.2

SNAPSHOT 4.2

Snapshot 3.2.3

SOUND 4.2

Soundblaster 2.3.2

TAPE_BYPASS 4.2

TAPE_PATH 4.2

TMP_PATH 4.2

Touches de fonction 3.1

Variable d'environnement BLASTER 2.3.2

VSYNC Bit 4.1

