######+ ########++ ######+ ########+ #### ####++ ##++ ##++ ##++++++ ##+++++##++ ##++++++ ##++++++ ##+## ##+##++ ##++ ##++ ##++ ##++ ##++ ##++ ##+++ ##++ ##++ ##++ ##++ ##++ ##++ ########++ ##++ ########+ ##++ +++ ##++ ##++ ##++ ##++ ##++++++ ##++ ##++++++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ######+ ##++ ######+ ########+ ##++ ##++ #########++ +++++++ ++++ +++++++ +++++++++ ++++ ++++ ++++++++++ v1.6 beta D O C U M E N T A T I O N (c) Marco VIETH 2001 (Traduit par Jean-Pierre MARQUET, 16 juin 1998) ------------------------------------------------------------------------------- Table des matières : 1. Introduction 1.1 Suggestions sur la lecture de cette documentation 1.2 Copyright, garantie 1.3 Qu'est-ce qu'un CPC ? 1.4 Que vous offre CPCEMU ? 2. Installation de CPCEMU 2.1 Fichiers composant l'environnement CPCEMU 2.2 Equipement nécessaire et installation 2.3 Suggestions sur la mémoire et les cartes-son 2.3.1 Utiliser la mémoire EMS 2.3.2 Définir la variable d'environnement BLASTER 2.3.2 Définir la variable d'environnement ULTRASND 3. Différences entre CPC et CPCEMU 3.1 Le clavier 3.2 Charger des programmes, Menus 3.2.1 Charger depuis une disquette, Menus - Le menu Insérer une Disquette - Le menu Sélection de Fichier 3.2.2 Charger depuis et sauvegarder sur cassette 3.2.3 Charger depuis et sauvegarder sur des snapshots 4. Changer la configuration 4.1 Le Menu des Réglages (Setup Menu) 4.2 Le fichier de configuration 4.3 Les paramètres de la ligne de commande 5. Transfert de données entre CPC et PC 5.1 La disquette comme intermédiaire 5.1.1 Le programme de transfert de disquette CPCTRANS 5.1.2 L'utilitaire de formatage et de copie 22DISK de SYDEX 5.2 L'interface parallèle - L'adaptateur parallèle 5.3 L'interface série 5.4 Autres possibilités 6. Sources d'approvisionnement, Aide, Remerciements 6.1 Où trouver des programmes pour CPC ? 6.2 Dernières nouvelles, échanger des expériences 6.3 Si vous avez des questions ou des suggestions 6.4 Autres émulateurs pour l'Amstrad CPC 6.5 Projets pour les prochaines versions de CPCEMU 6.6 Remerciements 6.7 Marques déposées 7. Information interne à propos de CPCEMU ("Boîte Noire", avec sa propre table des matières) Appendice : A.1 Glossaire A.2 Bibliographie A.3 Index --------------------------- 1. Introduction ________________ Bienvenue dans le monde des émulateurs ! Vous désirez savoir ce qu'est CPCEMU, et ce que vous pouvez faire avec cet étrange programme qui se présente en lettres jaunes sur fond bleu, et qui affiche des "Syntax Error" après chaque manipulation du clavier ? Pour vous éviter de longues recherches, voici : CPCEMU "émule" un Amstrad CPC 464, 664 ou 6128, avec plusieurs extensions. En d'autres termes, le programme imite le comportement des anciens ordinateurs d'Amstrad, mais sur votre PC. Pour quoi faire ? Eh bien, si vous n'en avez aucune idée... vous n'avez pas besoin de CPCEMU ! Blague à part, voici quelques raisons valables : - la nostalgie (ah, qu'il était extra, mon bon vieux CPC, sniff...) - de meilleures performances, comparées à l'original - un meilleur environnement pour développer des programmes - JOUER ! - travailler (Mais oui, un CPC est suffisant pour faire tourner un traitement de textes, par exemple) - [.............................] <- écrivez ici d'autres raisons que vous auriez trouvées. 1.1 Suggestions pour lire cette documentation ============================================== Vous pourriez commencer par consulter l'aide "en ligne" dans CPCEMU, ou continuer si vous désirez une information plus précise... J'ai tenté d'écrire une documentation disposée clairement. Mais si vous avez toujours des questions (après l'avoir lue plusieurs fois !), vous pouvez me contacter. Vous pouvez d'ailleurs le faire, même si tout est clair pour vous. Voyez au chapitre 6 (Sources d'Approvisionnement, Soutien...) comment me joindre. Au chapitre 1 (Introduction), j'explique comment lire cette documentation, je précise qui a le copyright, et j'ajoute deux ou trois choses à propos du CPC en général. Au chapitre 2 (Installation), on entre dans le vif du sujet : vous lirez comment installer et lancer CPCEMU. Le chapitre 3 (Différences entre CPC et CPCEMU) traite de quelques détails que vous devriez connaître sur l'émulateur, si vous êtes un familier du "vrai" CPC. Sont décrits, principalement, le clavier, les disquettes, les cassettes et les "snapshots". Au chapitre 4 (Changer la Configuration), je montre de quelle façon adapter CPCEMU à vos besoins. Peut-être votre programme préféré tournera-t-il mieux avec cela. Au chapitre 5 (Transfert de données entre CPC et PC), vous saurez comment transférer vos anciens programmes pour CPC sur votre PC. Les utilitaires fournis avec CPCEMU sont décrits ici. Au chapitre 6 (Sources d'Approvisionnement, Aide, Remerciements), vous apprendrez comment vous procurer la plus récente version de CPCEMU, et qui contacter si vous voulez poser des questions. Le chapitre 7 (Information interne sur CPCEMU) est réservé aux experts. La partie "officiellement" consacrée à l'utilisateur courant prenait fin au chapitre précédent. Ici, je décris comment programmer un émulateur, et ce que vous avez besoin de savoir pour ce faire. Je décris aussi le menu "Debug" de CPCEMU, lequel vous permet d'analyser le processeur et la mémoire à *n'importe quel* moment durant l'émulation. Les utilisateurs occasionnels sauteront ce chapitre, au moins lors de la première lecteure. L'appendice A.1 contient un glossaire avec la description des termes techniques les plus importants. L'appendice A.2 contient la bibliographie, et A.3 est un index. 1.2 Copyright, garantie ======================== CPCEMU a été développé par (voir aussi la section 6.3) : Marco Vieth Auf dem Uekern 4 33165 Lichtenau Germany et Rainer Loritz Rosenbachweg 4/Whg. 1 D-37075 Göttingen CPCEMU est un "freeware", libre de droits, ce qui signifie que vous pouvez donner le programme à vos amis et connaissances *en toute liberté*. Les conservateurs d'archives sont autorisés à inclure CPCEMU dans leurs collections de programmes à télécharger. Les distributeurs de sharewares sont autorisés à distribuer CPCEMU, s'ils ne facturent à leurs clients qu'une modeste contribution pour les frais de copie. Comparé au domaine public, le "freeware" ne signifie pas que tout est gratuit et que vous pouvez faire n'importe quoi. Le copyright reste ma propriété. Tous les programmes et leur documentation sont fournis tels quels, sans garantie d'aucune sorte. Bien que CPCEMU soit en freeware, j'accepterai toute forme d'aide, quelle qu'elle soit, technique ou financière. Voir le chapitre 6 pour plus de détails. 1.3 Qu'est-ce qu'un CPC ? ========================== Si vous le savez déjà, sautez cette section et continuez votre lecture en 1.4. Toujours là ? Je ne veux pas entrer maintenant dans des détails tehniques, mais simplement donner un aperçu rétrospectif pour vous faire mieux saisir ce qu'est un CPC. "CPC" est l'abréviation de "Colour Personal Computer", in french : ordinateur personnel en couleurs. Les premiers ordinateurs de ce type ont été construits en 1984 par la firme britannique Amstrad, et vendus sous différents noms dans différents pays. C'était l'époque des ordinateurs "familiaux" : le Commodore C64, le Spectrum de Sinclair, l'Atari 800XL... Alors naquit le CPC 464. Il avait autant de mémoire que le Commodore C64 (64 K), un magnétophone à cassette incorporé, et le Basic Locomotive 1.0. Ensuite vint le CPC 664, avec un lecteur de disquettes trois pouces incorporé, et le Basic Locomotive 1.1, légèrement étendu par rapport au précédent. Le CPC 6128 vint au monde en 1985, avec 128 K de RAM et à peu près les mêmes particularités que le 664. Les disquettes 3 pouces étaient horriblement chères, mais plus stables que les disquettes 5,25 pouces ; en fait, presque aussi stables que les disquettes 3,5 pouces d'aujourd'hui. En outre, elles étaient beaucoup plus rapides que les cassettes, au contraire de celles du C64. Les trois modèles de CPC étaient vendus avec un écran couleurs ou vert, qui renfermait aussi l'alimentation électrique. Plus tard, deux ou trois autres modèles (le CPC+, par exemple) furent mis sur le marché. Mentionnons enfin les derniers modèles, les CPC 464+ et 6128+ (* Note du traducteur : avec le son stéréo, et aussi des instructions plus étendues pour le graphisme, malheureusement gardées secrètes par Amstrad, qui entendait les réserver aux programmeurs professionnels. Circonstance qui n'a pas été sans rapport avec son échec commercial et la disparition d'Amstrad du marché des ordinateurs familiaux. *) Selon le modèle, le Basic comportait quelque 178 instructions, puissantes et rapides. On pouvait programmer du graphisme, des sons, et même manipuler les interruptions sous Basic, en évitant les PEEKs et les POKEs qui rendaient calamiteux le C64. Le nombre de programmes consacrés aux CPCs n'a fait qu'augmenter d'année en année. 1.4 Que vous offre CPCEMU ? ============================ Ce qui suit est un court aperçu de ce que CPCEMU vous offre. Dans les sections suivantes de la documentation, la signification de tout cela sera précisée en détail. Graphiques : 3 modes d'écran différents (X x Y x Couleurs) : Mode 0: 180 x 200 x 16 Mode 1: 320 x 200 x 4 Mode 2: 640 x 200 x 2 (Avec un BIOS VESA, les graphismes peuvent être affichés dans les résolutions de 640 x 480 x 16 jusqu'à 1280 x 1024 x 16, selon les possibilités de votre moniteur et de votre carte VGA) Son : soit par le haut-parleur du PC, soit par une carte SoundBlaster (3 canaux + un de bruit, stéréo, ou 3 canaux FM, stéréo), soit avec une carte Gravis Ultrasound (3 canaux + 1 canal de bruit, stéréo). Mémoire : ROM : Système d'Exploitation, Basic, AMSDOS, et jusqu'à 13 ROMs additionnelles (avec mémoire paginée, ou "EMS"). RAM : 64K, 128K, jusqu'à 576K de mémoire vive, compatible avec Dk'Tronics (avec EMS). Disquettes : images de disques spéciales, portant l'extension DSK. Cassette : fichiers standard sous DOS, par exemple en Basic, et fichiers binaires, avec les extensions BAS et BIN respectivement. Snapshots : vous pouvez faire un "dump" de la mémoire avec des programmes en train de tourner, et cela, afin d'interrompre une séance et de continuer plus tard. Les snapshots ont l'extension SNA. Vitesse : avec un 386/33 et de la mémoire paginée, CPCEMU est plus rapide que l'original. Avec le mode "realtime" (temps réel), vous pourrez ralentir l'émulation pour être à la vitesse exacte du CPC. Le mode "realtime" fonctionne très bien sur un 486 DX/66. 2. Installation de CPCEMU __________________________ Dans ce chapitre, vous apprendrez comment installer et lancer CPCEMU. A la section 2.2, vous lirez quelques suggestions sur l'utilisation de la mémoire EMS, et comment définit l'environnement SoundBlaster. L'installation complète définie par l'utilisateur, avec le fichier de configuration, est décrite au chapitre 4 (Changer la Configuration). 2.1 Fichiers fournis avec CPCEMU ================================= En voici la liste. Entre parenthèses est indiqué le sous-répertoire où se trouvent les fichiers après l'installation : COPYMATE.ROM ROM avec un programme de copie (ROM) CPC464.BAT fichier lançant un CPC 464 CPC464.ROM ROM (système d'exploitation, plus BASIC) du CPC 464 (ROM) CPC664.BAT idem, mais pour un CPC 664 CPC664.ROM (ROM) CPC6128.BAT idem, mais pour un CPC 6128 CPC6128.ROM (ROM) CPCADOS.ROM AMSDOS pour tous les CPCs (ROM) CPCEMU.CFG fichier de configuration pour tous les CPCs (ou CPCEMU0.CFG) CPCEMU.DAT fichier de données pour CPCEMU CPCEMU.DBF base de données contenant des pokes pour tricher aux jeux CPCEMU.EXE l'émulateur CPCEMU.HLP fichier d'aide, affiché avec la touche F1 CPCEMU.MSG le fichier des messages (nécessaire) CPCEMU_D.TXT documentation en allemand CPCEMU_E.TXT documentation en anglais CPCEMU_F.TXT documentation en français (le présent fichier) CPCEMU_S.TXT documentation en espagnol CPCPARA.BAS programme en Basic Locomotive pour l'adaptateur parallèle (UTILITY) CPCPD1.DSK image de disquette, avec quelques exemples de programmes du domaine public (DISC) CPCREC.BAS programme en Basic Locomotive, pour recevoir des programmes (UTILITY) CPCT0.BAT fichier batch pour CPCTRANS.EXE (exemple) (UTILITY) CPCTRANS.EXE programme de transfert d'images de disquette (UTILITY) CPMDISKS.DEF Définitions de formats pour 22DISK (UTILITY) FILE_ID.DIZ l'identification de CPCEMU pour les BBS INSTALL.BAT fichier batch pour l'installation KCC.BAT fichier de lancement KC compact PCPARA.EXE côté PC de l'adaptateur parallèle (UTILITY) README_D.TXT Présentation de CPCEMU en allemand README_E.TXT Présentation de CPCEMU en anglais LISEZMOI.TXT Présentation de CPCEMU en français README_S.TXT Présentation de CPCEMU en espagnol ROMGET.BAS programme en Basic Locomotive, pour sauvegarder des ROMs (UTILITY) SNA2GIF.EXE fournit un fichier GIF de l'écran CPC contenu dans un snapshot Les ROMs originales d'Amstrad sont également incluses. Le Système d'Exploitation ("Firmware") est sous copyright de Locomotive Software, le Basic est sous copyright d'Amstrad. Amstrad et Locomotive m'ont autorisé à distribuer leurs ROMs avec CPCEMU. 2.2 Equipement nécessaire et installation ========================================== Il vous faut au moins (pas de limite supérieure !) : - un PC AT 386 avec affichage VGA. - MS-DOS, si possible avec EMS, ou Novell DOS (DRDOS) ou Windows 95 (ou 3.1) dans une fenêtre DOS ou OS/2 2.x dans une fenêtre DOS. - Si vous voulez lancer des programmes contenus dans une archive ZIP, le programme d'extraction PKUNZIP doit être accessible par le PATH du DOS. L'installation elle-même est très simple : Copiez l'archive CPCEMUxx.ZIP sur votre disque dur, et décompressez-la avec "PKUNZIP CPCEMUxx.ZIP". Lancez ensuite INSTALL.BAT afin de créer les sous-répertoires nécessaires. Puis lancez CPC464.BAT, CPC664.BAT ou CPC6128.BAT, selon le modèle de CPC que vous préférez. Lorsque vous lancez l'émulateur pour la première fois, choisissez votre langage. (La configuration est sauvegardée dans le sous-répertoire TMP sous le nom de CPCEMU.CFG). Après avoir vu la configuration, appuyez sur , 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 , ou voir l'aide en ligne avec la touche . 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 . 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 : affiche le catalogue. - Avec RUN"", 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 . 2. Maintenir enfoncée la touche et appuyer sur la flèche gauche du curseur (le curseur bondit au début de la ligne). 3. Avec toujours la touche enfoncée, appuyer sur (pas ! Celle du clavier numérique) : apparaît la mention RUN"disc, et le programme démarre. - LOAD"" 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"" sauvegarde un programme Basic. Pour les programmes binaires, vous devrez spécifier davantage de paramètres. Par exemple : SAVE"",b,&c000,&4000 sauvegarde l'écran. - MERGE"" 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,"" pour voir le catalogue selon vos critères de sélection. Note importante : utilisez la syntaxe suivante sur un CPC 464 : a$="" : |DIR,@a$ - |ERA,"" efface un fichier. Note importante : utilisez la syntaxe suivante sur un CPC 464 : a$="" : |ERA,@a$ - |REN,"","" pour renommer un fichier. Note importante : utilisez la syntaxe suivante sur un CPC 464: a$="" : b$="" : |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 et , vous pouvez sélectionner une ligne. Vous pouvez aussi le faire en tapant en lettres (on corrige les erreurs de frappe avec ). Changez les chiffres avec les flèches et ou en tapant directement un chiffre. Un appui sur ou sur et sur n'importe quelle ligne, par exemple la première, prend en compte les modifications, alors qu'on les annule avec . "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 , 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. - place le curseur sur le premier nom de fichier, sur le dernier. - / font défiler les pages de la liste. - prend en compte le nom sélectionné, annule tout. Vous pouvez aussi sélectionner les noms directement en tapant leur première lettre. Si vous utilisez une souris, cliquez "[]" pour , "[]" pour , "[<]" pour , "[>]" pour et [ok] pour . Utilisez le bouton droit de la souris pour marquer une ligne (comme double-clic), et "[_]" comme . ".." 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 , 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 et . 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 , 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 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 . La 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 ... #ENDIF Pour , 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 = "" Prescrit le fichier de données (CPCEMU.DAT). - DRIVE_A = "" 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 = "" Comme pour DRIVE_A... masi pour le lecteur B. - DRIVE_B_AUTOSTART - DRIVE_B_SIDE - DRIVE_B_WRITEPROT - JOY0_CALIBRATE = , , , 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 = , , , Comme pour JOY0_CALIBRATE. - POKE_DATABASE = "" Fixe le fichier de base de données de POKEs (CPCEMU.DBF). - PRINTER = "" 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 prn:". - ROM_BLOCK = , "", 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. * est le numéro assigné à la ROM, celui qui est sélectionné par "OUT &DF00, ". 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. * est un fichier dans le sous-répertoire ROM_PATH, qui contient 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 = "" 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 = "" 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 = "" 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 = "" 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 : spécifier un autre fichier de configuration, en négligeant le fichier par défaut CPCEMU.CFG. Voir la section 4.2 /t : 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 ". 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 " 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 : envoie vers le CPC ; si vous utilisez "TRM:" en guise de nom de fichier, vous aurez un terminal. Tous les programmes contenus dans le sous-répertoire UTILITY affichent un aperçu de leurs options si vous les appelez sans paramètres. ATTENTION ! Même si la construction est très simple, je ne peux pas garantir que vous n'aurez aucun dommage. Si le port-imprimante de votre CPC est endommagé après cela, ce sera un "malheureux accident" ! Peut-être aurait-il, aussi, été endommagé si vous aviez simplement connecté une imprimante. Par exemple, je connais un ancien utilisateur de CPC dont le clavier ne fonctionnait plus correctement ; après la réparation, on lui a dit qu'il n'aurait pas dû brancher le joystick alors que l'ordinateur était allumé ! (Et alors, je le fais constamment ?!?) Pour revenir à nos moutons : J'ai construit l'adaptateur avec succès. Et j'ai même, parfois, "oublié" d'insérer l'adaptateur dans le connecteur, sans avoir eu aucun problème. Diagrammes de David Chapeau, si votre CPC n'a pas de prise Centronics : 34 <- - - - - - - - 18 \ ______________________ | | ________________ | | | |________________| | - | ---> Connecteur (femelle) |______________________| | de l'imprimante | 17 < - - - - - - - - 1 | | |||||||||||||||||| | |||||||||||||||||| \ |||||||||||||||||| > Câble "CPC 6128 vers DMP 2160" |||||||||||||||||| / |||||||||||||||||| | | 1 - - - - - - - - > 18 | ________________________ | \ ______________ / | \ |______________| / - | ---> Connecteur (mâle) Centronics \__________________/ | | 19 - - - - - - - -> 36 / 18 < - - - - - - - - 1 \ ________________________ | \ ______________ / | \ |______________| / - | ---> Connecteur (femelle) Centronics \__________________/ | | 36 <- - - - - - - - 19 | | |||||||||||||||||| | |||||||||||||||||| \ |||||||||||||||||| > Adaptateur parallèle PC |||||||||||||||||| / |||||||||||||||||| | | 1 - - - - - - - - > 13 | ________________________ | \ .................. / | \ ................ / - | ---> Connecteur Sub-D (mâle) \__________________/ | vers le PC (LPT1) | 14 - - - - - - - -> 25 / 13 < - - - - - - - - 1 \ ________________________ | \ .................. / | \ ................ / - | ---> Connecteur Sub-D (femelle) \__________________/ | | 25 <- - - - - - - - 14 | | |||||||||||||||||| | |||||||||||||||||| \ |||||||||||||||||| > "Wiring Box" RS 232 |||||||||||||||||| / |||||||||||||||||| | | 1 - - - - - - - - > 13 | ________________________ | \ .................. / | \ ................ / - | ---> Connecteur Sub-D (mâle) \__________________/ | vers le PC (LPT1) | 14 - - - - - - - -> 25 / Connecteur Centronics Centronics Connecteur Connecteur Connecteur Imprimante (femelle) (mâle) Sub-D Sub-D Sub-D 1 --------- 1 1 --------- 1 11 --------- 2 . . 8 --------- 10 . . 1 --------- 11 . . 7 --------- 12 17 --------- 17 14 --------- 14 6 --------- 13 18 --------- 19 19 --------- 19 5 --------- 15 . 21 --------- 20 19 --------- 19 . 23 --------- 21 . 25 --------- 22 34 --------- 35 27 --------- 23 29 --------- 24 30 --------- 25 31 --------- 16 32 --------- 15 33 --------- 18 36 --------- 17 Vitesse de transfert CPCPARA -> PCPARA (v1.1) : Temps de transfert d'un bloc de 0x4000 octets du CPC vers le PC avec l'adaptateur parallèle : Source sur CPC : Octets/sec : Bauds : ----------------------------------------------------------- Fichier sur disquette : 1600 12800 Bloc de mémoire : 2240 17920 Bloc de mémoire, sans 2445 19560 interruptions (poke &b941,&c9 sur CPC 664 et 6128) Le bloc envoyé était contrôlé en Basic (dans CPCPARA) : defstr a:a="test.$$$":call sstr,@a a=string$(&80):for i=1 to &80:call sstr,@a:next:call sbyte,0:stop Vous pourrez lire plus d'information sur l'adaptateur parallèle au chapitre 7. 5.3 L'interface série ====================== Si vous possédez une interface série pour le CPC, vous pouvez certainement l'utiliser pour le transfert de données vers le PC. 5.4 Autres possibilités ======================== Il y a encore d'autres moyens fantastiques pour avoir des programmes sur le PC : - Connecter le lecteur de disquettes 3 pouces au PC. Quelques (anciens) modèles pourraient correspondre à la connexion 5,25 pouces. - Avec un détour par le Spectrum+3 : lire la disquette 3 pouces sur le Spectrum+3, la convertir au format Spectrum, et employer un utilitaire pour la lire sur le PC. Cet utilitaire est compris dans l'émulateur Z80 du Spectrum, de Gerton Lunter. - Au temps où il était nécessaire (Amstrad n'ayant pas encore donné son autorisation) de se débrouiller pour avoir les ROMs, quelqu'un m'a parlé de ce moyen : il enlevait la puce de la ROM d'un CPC, et l'insérait à la place du BIOS VGA. Avec un petit programme, il pouvait en lire le contenu. - Peut-être avez-vous trouvé un autre moyen ? 6. Sources d'Approvisionnement, Aide, Remerciements _____________________________________________________________ Dans ce chapitre, vous lirez où vous procurer des programmes pour CPC, et à qui vous adresser si vous avez des questions. En outre, je mentionne d'autres émulateurs pour Amstrad. 6.1 Où puis-je avoir des programmes pour le CPC ? ================================================== Aucun problème si vous avez accès à Internet. Comme pour les émulateurs de Spectrum, un grand nombre d'archives "anonymes" existent, où vous trouverez des programmes pour CPC via FTP ou WWW. FTP --- - ftp.nvg.unit.no:/pub/cpc, merci à Arnt Gulbrandsen pour avoir créé le site, et à Noël Llopis pour en assurer la maintenance. C'est en Norvège, et c'est l'une des plus grosses archives concernant le CPC. Envoyez ce que vous avez à /pub/cpc/incoming. - sunshine.informatik.uni-wuerzburg.de:/pub/joscho/cpcemu Ceci est un miroir de ftp.nvg.unit.no. Si vous avez des problèmes pour vous connecter à la Norvège, vous pouvez essayer ça. - ftp://ftp.lip6.fr/pub/amstrad, merci à Remy Card. ftp://ftp.lip6.fr/pub/amstrad/frontend/menu.htm (HTML) - Toutes les questions concernant ce site doivent être adressées à roussin@genesis8.frmug.org. Tous les fichiers viennent de "Genesis the 8bit generation BBS" (voir ci-dessous). - ftp.demon.co.uk:/pub/cpm, merci à Paul Martin. Fichiers Amstrad en relation avec CP/M. Paul Martin (pm@nowster.demon.co.uk) enverra, à quiconque lui prouvera qu'il possède la disquette originale Amstrad CP/M Plus, les images binaires de la ROM de sa "CP/M Plus ROMs", et cela gratuitement. - oak.oakland.edu : /Simtel/msdos/emulator/cpcemu15.zip - autres miroirs Simtel : ftp.ibp.fr : /pub3/pc/SimTel/msdos/emulator/ ftp.demon.co.uk : /simtel/msdos. ftp.uni-paderborn.de WWW --- - http://andercheran.aiind.upv.es/~amstrad et un UK miroir: http://www.dcs.warwick.ac.uk/~divine/~amstrad/ - ... BBS --- - Aspects 2:250/107 : +44 617920260, au Royaume-Uni, sysop Dave Gorski, V32b, CPCEMU v1.2, programmes (principalement en Basic) - Genesis the 8bit generation, 2:320/220, +33 1 53 95 32 43, en France, up to VFC, sysop : Emmanuel Roussin. Dernières versions des émulateurs, ROMs Azerty et Qwerty, freeware, shareware, PD, disk-zines, pokes, solutions, démos, et quelques jeux du commerce (avec l'autorisation de leurs auteurs). Pour le moment, ils ont environ 29,5 Mo de programmes zippés. Pour les "fido users", vous pouvez consulter ALLFILES.ZIP, et là, voir ce qui vous intéresse. - ZNODE 51 : + 49 89 961 45 75, Allemagne, entre 15:00 et 3:00 CET (MEZ), up to V32b, fichiers CPC. - ... 6.2 Dernières nouvelles, échange d'experiences =============================================== Voulez-vous avoir toujours la dernière version de CPCEMU ? Voulez-vous être informé si une nouvelle version est sortie ? Nous avons monté un "newsgroup" (un forum électronique) spécialement pour le CPC ! Il s'appelle : "comp.sys.amstrad.8bit". Vous y trouverez des discussions sur les CPCs (et aussi sur CPCEMU), et vous pourrez parler de vos expériences avec les CPCs. Il y a un FAQ ("frequently asked question" : questions souvent posées) disponible (ftp://ftp.lip6.fr/pub/amstrad/amstrad.htm, FAQ en HTML). Si vous ne pouvez pas lire le newsgroup pour telle ou telle raison, écrivez-moi un "email" (courrier électronique). Vous trouverez mon adresse dans la prochaine section. Naturellement, vous pouvez aussi utiliser le courrier "normal" pour me poser des questions (ou à David, voir ci-dessous), mais, s'il vous plaît, n'oubliez pas les frais d'expédition du courrier ! A propos, si vous m'envoyez une contribution financière, je me sentirai obligé de vous faire parvenir la dernière version de CPCEMU au moins une ou deux fois. 6.3 Si vous avez des questions ou des suggestions ================================================== Alors, écrivez-moi directement : Marco Vieth Auf dem Uekern 4 D-33165 Lichtenau Germany téléphone/FAX : +49-5292-1366 (seulement les week-ends) Internet: cpcemu@hotmail.com (ali@uni-paderborn.de) Comme vous l'avez probablement deviné au vu de mon adresse Internet, j'étudiais les sciences informatiques à l'Université de Paderborn. J'ai terminé au printemps 1997. Au cas où vous parleriez ou écririez l'anglais, vous pouvez aussi écrire à David Cantrell : David Cantrell 116, London Road Bexhill-on-sea East Sussex TN39 4AA England téléphone : +44-1424-221015 Internet: david@diablo.eimages.co.uk ftp://ftp.eimages.co.uk/users/davidc/cpc/ http://www.ThePentagon.com/NukeEmUp/uaug David m'a offert d'aider un peu à répondre à la pile de lettres reçues. Il a numérisé le manuel du "firmware" pour le CPC, de sorte que chacun peut l'obtenir sous sa forme électronique. Bien que ce programme soit en freeware, j'accepterai naturellement toute espèce de soutien, financier ou technique (30-50 Deutschmarks seraient appropriés. Cela fait environ 20-33 dollars américains, ou 13-21 livres anglaises, ou 102-170 francs français). Même si vous n'envoyez pas d'argent, je réponds normalement à toutes les lettres, et j'essaie de garder vos suggestions à l'esprit (je suis sûr que David fait de même). Ainsi, n'hésitez pas à envoyer vos commentaires. 6.4 Autres émulateurs pour Amstrad CPC ======================================= Jusqu'au début de 1994, je croyais que CPCEMU était le seul émulateur pour l'Amstrad CPC. Aujourd'hui, j'en connais trois autres : - SIMCPC : Sans doute le premier qui fut écrit. Emulateur de CPC pour PC/XT/AT (c) 1989, 90 by GHE, Aachen. Il n'est qu'en noir et blanc, mais avec des ROMs additionnelles ; seulement une manifestation d'humour "après boire". - CPC2PCxx : En développement depuis Octobre 1993, par Paco Lopez (Espagne), et disponible sur sites à présent. Il est écrit entièrement en mode protégé, et utilise le même format de disquettes que CPCEMU. - CPE : En développement par Bernd Schmidt. En utilisant un mode d'écran spécial de 50 Hertz, des blocs de couleurs sont reproduits exactement. Un CPE2 "spécial 256 couleurs" affiche des blocs de couleurs exacts à plus de 50 Hertz. Egalement assurés : multi-modes, overscan. Dernière version : v5.2. 6.5 Projets pour les futures sorties de CPCEMU =============================================== - overscan - multi-mode amélioré - écran centré avec des modes vidéo supérieurs - scrolling "hard" rapide - les claviers américains n'ont pas de "<>", AltGr - simuler les ports d'extension du CPC - charger directement les disquettes CPC - charger directement les cassettes CPC (par le port imprimante ou la carte SoundBlaster) - transférer une image de disque entière avec l'adaptateur parallèle - contrôle de volume pour la SoundBlaster - émulation Digiblaster - touches du joystick personnalisables - utilisation de la souris comme joystick - auto-détection des fichiers SNA et DSK Peut-être cela ne sera-t-il jamais réalisé, car je suis entré maintenant dans la "vie active"... 6.6 Remerciements ================== - Remerciements particuliers à Juergen Weber, non seulement pour ses nombreuses suggestions, mais spécialement pour l'émulation rapide du Z80 faite avec son émulateur CP/M ZSIM. Juergen G. Weber Wiesentalstrasse 1 74523 Schwaebisch Hall Federal Republic of Germany email: weberj@dia.informatik.uni-stuttgart.de - Egalement merci à Bernd Schmidt. Parce que Bernd a écrit son propre émulateur, nous avons eu les mêmes problèmes de nombreuses fois. Vous ne pouvez imaginer ce que cela représente, et combien de détails posent problème, que si vous avez essayé d'écrire vous-même un émulateur. Aucune documentation sur le CPC n'est disponible, qui en donnerait toutes les caractéristiques : des parties entières du comportement du CPC n'ont été détectées que par l'expérimentation sur cet ordinateur. - Merci à Ulrich Doewich pour avoir inclus dans l'émulateur une sortie son Gravis UltraSound et parcouru la documentation. Ulrich a écrit un utilitaire analogue à CPCTRANS. Il recherche CPDREAD qui peut aussi lire les disquettes protégées. - Merci à Emmanuel Roussin pour son engagement total envers le CPC. Il a fait l'essentiel pour la constitution du "newsgroup", et m'a prêté sa Multiface II pendant des mois, pour que je puisse l'inclure d'une façon ou d'une autre dans l'émulateur. - Merci à Arnt Gulbrandsen pour sa source JPP, où j'ai trouvé des idées pour le gestionnaire du clavier et la routine du joystick. En fait, JPP est un très bon émulateur de Spectrum. - Merci à Martin Zacho de m'avoir fourni une routine pour le joystick. - Merci à Fernando J. Echevarrieta Fernandez pour avoir remarqué le premier que la version v0.8 n'émulait pas un CPC 664. - Merci à Gilles Molinari pour son programme de transfert par l'adaptateur parallèle. - Merci à Paul Martin d'avoir corrigé la documentation anglaise de la version 1.0. - Merci à Mark Haigh-Hutchinson pour son engagement de faire des programmes à partir du domaine public de la compagnie Vortex. - Merci à Martin Young pour ses éminentes idées à propos de l'émulation du Z80. - Merci à Linh Hsiesh pour ses nombreuses idées d'amélioration, dont beaucoup ont été adoptées. - Merci à Fred Harris d'avoir écrit à Amstrad à propos des ROMs. - Merci à Amstrad, spécialement à Cliff Lawson, pour m'avoir autorisé à distribuer la ROM Basic. Amstrad possède toujours le copyright. Amstrad plc, Brentwood House, 169 Kings Road, Brentwood, Essex CM14 4EF - Merci à Richard Clayton, de Locomotive, pour m'avoir permis de distribuer la ROM Firmware. Locomotive possède toujours le copyright. - Et merci à tous les nombreux utilisateurs pour m'avoir envoyé des suggestions ou des idées. Sans eux, CPCEMU aurait difficilement atteint la version 1.0. 6.7 Marques déposées ===================== CP/M, CP/M 2.2 et DRDOS sont des marques déposées de Digital Research. MS-DOS est une marque déposée de Microsoft. IBM PC, PC-XT, PC-AT et OS/2 sont des marques déposées de International Business Machines. CPC, AMSDOS par Amstrad, BORLAND C, TASM (Turbo Assembler) par Borland, 22DISK par SYDEX, Soundblaster par Creative Labs. ------------------------------------------------------------------------------ 7. Information interne sur CPCEMU __________________________________ Ce chapitre fournit quelques informations d'arrière-plan et répond à la question : "POURQUOI devrais-je faire ceci ou cela maintenant ?" Le puissant menu de débogage est aussi écrit. Vous trouverez également la structure des images de disquettes et des fichiers de snapshots. Cette information n'est pas destinée à ceux des utilisateurs de CPCEMU qui n'ont aucune connaissance de ce que contient un CPC. Peut-être, pourtant, leur sera-t-elle utile un jour. J'ai placé cette information à la fin, et même après les marques déposées, avec l'intention de montrer sa "relative insignifiance". Si vous n'avez aucun plaisir à lire des phrases inintelligibles et des informations en désordre, ne lisez pas plus avant ! Sautez directement à l'Appendice. ATTENTION : Vous continuez la lecture à vos propres risques ! 7.1 Table des matières du chapitre 7 ===================================== 7.2 Aperçu interne des particularités de CPCEMU 7.2.1 Le Z80 (le microprocesseur) 7.2.2 Le Gate Array (le "co-processeur") 7.2.3 Le PAL (Programmable Logic Array) 7.2.4 Le CRTC 6845 (Cathode Ray Tube Controller : contrôleur vidéo) 7.2.5 Le PIO 8255 (Programmable Input Output) 7.2.6 Le PSG AY 3-8912 (Programmable Sound Generator) 7.2.7 Le FDC 765 (Floppy Disc Controller : contrôleur de disquettes) 7.2.8 L'interface Centronics pour imprimante 7.3 Le menu Debug - Aperçu du menu Debug - Préliminaires - Aperçu des commandes - Manipulation des registres 7.4 Gestion de la mémoire 7.4.1 Encore une fois : la configuration EMS 7.4.2 Comment opère la commutation de banques ? 7.5 Modifications de la ROM 7.5.1 Dérivation de la ROM pour la cassette 7.5.2 Modifications de la ROM AMSDOS 7.6 Divers 7.6.1 Encore une fois : le fichier de configuration 7.6.2 L'adaptateur parallèle - Sens CPC->PC - Sens PC->CPC 7.6.3 CPCTRANS 7.7 Structure des fichiers CPCEMU 7.7.1 Images de disquettes - Le bloc d'informations Disque - Le bloc d'informations Piste 7.7.2 Fichiers Snapshot 7.7.3 En-tête AMSDOS 7.7.4 Base de données de Pokes 7.8 Historique interne 7.2 Aperçu interne des particularités de CPCEMU ================================================ A quel point CPCEMU est-il réellement compatible ? Voici les "plus" et les "moins". 7.2.1 Le Z80 (le processeur) ----------------------------- + Toutes les instructions du Z80 sont émulées, y compris celles dites "illégales". Vous avez le choix entre une émulation lente du Z80, écrite en C, et une émulation rapide, écrite en assembleur par Juergen Weber. Avec la technique CO-CPU, chaque instruction du Z80 est émulée simultanément par les versions lente et rapide, ce qui est très lent, mais, en comparant les registres après chaque instruction, bien des erreurs sont débusquées. Evidemment, on n'a fait cela que durant la phase de développement du programme. Vous pouvez activer l'émulation lente dans le menu Debug. + Instructions additionnelles codées "ED FC xx", qui n'existent que sur l'émulateur. Au nombre de ces instructions, le "break utilisateur" codé "ED FC FC", à traduire par "USER &BCFC". - Le temps d'exécution des instructions n'est pas exact. Mais il y a calibration du temps en mode "realtime". 7.2.2 Le Gate Array (le "co-processeur") ----------------------------------------- + Toutes les couleurs du CPC (32 théoriques, 27 différentes, en fait) + Les trois modes d'écran (X x Y x COULEURS) : mode 0 = 160 x 200 x 16 mode 1 = 320 x 200 x 4 mode 2 = 640 x 200 x 2 + Commutation de ROM (16K OS, 16K Basic, 16K AMSDOS et ROMs additionnelles) - La couleur provoque un scintillement 7.2.3 Le PAL (Programmable Logic Array) ---------------------------------------- Le PAL est à la même adresse logique que le Gate Array, mais en est physiquement séparé. + Commutation de RAM (128 K, jusqu'à 576 K) avec mémoire EMS ou conventionnelle. Avec de l'EMS émulée, les blocs sont "mappés" par le matériel, de sorte que la vitesse est bonne. CPCEMU vous offre une extension de RAM "compatible Dk'Tronics", jusqu'à 576 K. - Sans EMS, la commutation de RAM est très lente, puisque les blocs de mémoire doivent être déplacés dans la mémoire du PC. En outre, vous avez seulement 128 K de RAM. 7.2.4 Le CRTC 6845 (Cathode Ray Tube Controller : contrôleur vidéo) -------------------------------------------------------------------- + Base de l'écran et "offset" (décalage) par scrolling hard. + Plusieurs tailles d'écran, de 0x0 à 80x25, avec les registres 1 et 6. + Différentes tailles de caractères (1..7) avec le registre 9 du CRTC. + Multi-mode (il utilise d'autres registres). - L'overscan n'est pas encore assuré. 7.2.5 Le PIO 8255 (Programmable Input Output) ---------------------------------------------- + Clavier (connecté au PSG). + Emulation de la VSYNC : un bit mis à 1 entre deux interruptions, durant un rafraîchissement de l'écran. Vous pouvez changer la position. + La cassette est très rapide, une dérivation de la ROM permet l'accès à tous les fichiers DOS. - Le bit de VSYNC est positionné trop longtemps. - Les ports cassette ne sont pas émulés ; ainsi, beaucoup de programmes sur cassette qui accèdent directement aux ports ne fonctionnent pas. 7.2.6 Le PSG AY 3-8912 (Programmable Sound Generator) ------------------------------------------------------ + Du son, soit par le haut-parleur du PC (horrible, parce que trois canaux sont multiplexés en un seul, et que le volume ne peut pas être modifié) ou sur une carte GUS ou Soundblaster. Son numérique ave bruit ou partie Adlib compatible FM. - Pas de son numérique, ou alors trop lent. 7.2.7 Le FDC 765 (Floppy Disc Controller : contrôleur de disquettes) -------------------------------------------------------------------- + Toutes les commandes du FDC nécessaires pour contrôler deux lecteurs A et B (y compris lire/écrire secteur, chercher piste, lire ID-secteur, etc.) Formats de disquettes très souples (jusqu'à 18 secteurs par piste). Incluant les formats double face, par exemple de VORTEX. - Les formats compliqués destinés à la protection contre la copie ne sont pas reconnus. 7.2.8 L'interface-imprimante Centronics ---------------------------------------- + Sorties vers l'imprimante sur 8 bits, vers un fichier défini par la ligne PRINTER dans le fichier de configuration. 7.3 Le menu Debug ================== Le jeu complet des registres du Z80 est affiché, et leur contenu peut être modifié. Vous pouvez faire un "dump" de la mémoire, la désassembler ou la modifier. Vous pouvez charger ou sauvegarder des zones de mémoire. Et, le plus intéressant : vous pouvez exécuter les programmes pas à pas (comme sur un vrai débogueur) ! Aperçu du menu Debug -------------------- R)un T)race S)tep A)ssem D)ump I)nput L)oad saV)e M)ode F)ast Q)uit AF=0000 BC=0000 DE=0000 HL=0000 IX=0000 IY=0000 SP=0000 PC=0000 IR=0000 AF'=0000 BC'=0000 DE'=0000 HL'=0000 IFF1=0 IFF2=0 IMD=0 NZ NC PO P 0000 : 01 89 7F LD BC,&7F89 -f-> La première ligne affiche les commandes disponibles, sous forme de lettres majuscules. Les deux lignes suivantes montrent les valeurs contenues dans les registres du Z80. La suivante désassemble l'instruction en cours à la position du PC (le Compteur de Programme, pas l'ordinateur !). Et la dernière est un "prompt" qui attend votre prochaine entrée (le "f" indique que vous êtes dans le mode rapide de l'émulation). Préliminaires ------------- Les paramètres entre crochets carrés sont optionnels : [opt]. N'utilisez que des valeurs hexadécimales, comme = 0000-ffff. "" indique que vous êtes dans un mode spécial : vous pouvez appuyer sur pour continuer ; quitte ce mode (utilisez par exemple b). 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 [] : 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 [] : exécute uniquement l'instruction affichée. Utilisez pour continuer dans ce mode, et ainsi de suite. 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 [] : 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 [] : désassemble les 16 instructions suivantes. Utilisez pour continuer dans ce mode, et ainsi de suite. revient au mode normal. D)ump: d [] : affiche un dump en hexa/ASCII des 256 octets suivants, à partir de l'adresse spécifiée ou contenue dans le PC. Utilisez pour continuer dans ce mode, et ainsi de suite. revient au mode normal. I)nput (modifiant la mémoire) : i [] : affiche l'adresse mémoire donnée et son contenu, que vous pouvez conserver avec ou modifier avec . Quittez ce mode en donnant un nombre invalide, tel que "-1" : -1. L)oad (charger un programme) : l [] : 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 après la demande du nom de fichier, le menu de sélection de fichier (bien connu) apparaît... Exemples : -f-> l demo : charge le fichier "demo" à l'adresse contenue dans le PC. -f-> l a000 monprog : charge le fichier "monprog" à l'adresse 0xA000. saV)e (sauvegarder un programme) : v [] : 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 (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 demo 4000 : 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 "=". Exemples : - af=345 : place 0x0345 dans le registre AF. - pc=a000 : fixe le compteur de programme à l'adresse 0xA000. Vous pouvez également écrire "". 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= (par défaut, 4000). Avec /P=, 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 : = {T} {T} est une séquence d'au moins un délimiteur. Exemple : ROM_PATH = .\ROM peut être donné en décimal, hexadécimal (avec le préfixe 0x) ou binaire (%). peut avoir une longueur de 80 caractères et jusqu'à 20 caractères. Dernière information sur un mot-clé : BREAK_MASK = (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 ou + à 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. , 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