Table des matières

1. Introduction
1.1 Suggestions pour lire 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 fournis avec CPCEMU
2.2 Equipement nécessaire et installation
2.3 Suggestions à propos de la mémoire et des cartes-son
2.3.1 Utiliser la mémoire EMS
2.3.2 Définir l'environnement BLASTER :
2.3.3 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 à partir de la disquette, Menus
3.2.2 Charger depuis et sauvegarder sur cassette
3.2.3 Charger et sauvegarder des snapshots
4. Changer la Configuration
4.1 Le Menu des Réglages ("Setup Menu")
4.2 Le fichier de configuration
4.3 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 disquettes CPCTRANS
5.1.2 L'utilitaire de formatage et de copie 22DISK (de SYDEX)
5.2 L'interface parallèle
5.3 L'interface série
5.4 Autres possibilités
6. Sources d'Approvisionnement, Aide, Remerciements
6.1 Où puis-je avoir des programmes pour le CPC ?
6.2 Dernières nouvelles, échange d'experiences
6.3 Si vous avez des questions ou des suggestions
6.4 Autres émulateurs pour Amstrad CPC
6.5 Projets pour les futures sorties de CPCEMU
6.6 Remerciements
6.7 Marques déposées
7. Information interne sur CPCEMU
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 processeur)
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-imprimante Centronics
7.3 Le menu Debug
7.4 La gestion de la mémoire
7.4.1 Une fois de plus : la configuration EMS
7.4.2 Comment s'effectue 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 de l'AMSDOS
7.6 Divers
7.6.1 Une fois de plus: le fichier de configuration
7.6.2 L'adaptateur parallèle
7.6.3 CPCTRANS
7.7 Structure des fichiers CPCEMU
7.7.1 Images de disquettes
7.7.2 Fichiers Snapshots
7.7.3 En-tête AMSDOS
7.7.4 Base de données de Pokes
7.8 Historique interne
A. 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


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

- 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



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.)



A. 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