CODINGLA BIBLE DU CPC 6128

La bible du CPC 6128 : 2.05.02 Machine pack (MC)

C'est la partie du système d'exploitation qui est la plus proche de la machine.

C'est ici que sont traités les divers interfaces et éléments périphériques tels que PIO et PSG. Cette procédure présente l'avantage qu'en cas de modification éventuelle de l'électronique, seul le MACHINE PACK devra être adapté comme par exemple le BIOS en CP/M.

De ce fait,   seules   quelques   routines   peuvent être   utilisées souvent.

0591  ******************************************* Reset Cont'd
0592   Control 0597 Port A 059C Port C
05 Al Centronics
05A6 Port B
05AA   isoler LK4
05AC   fin table 60Hz
05AF   50Hz? sauter si pas
05B1 fin table 50Hz
05B7 charger adresse registres vidéo
05BC charger registres vidéo

05C5 ****************************************** table 60Hz

3F 28 2E 8E 26 00 19 1E
00 07 00 00 30 00 C0 00

05D5 ****************************************** table 50Hz

3F 28 2E 8E IF 06 19 1B
00 07 00 00 30 00 C0 00

05E5 démarrage à froid
05E8 à adresse de
05EB   continuation

05ED ******************************** MC BOOT PROGRAM

restaure le système d'exploitation et transmet la commande à une routine en (hl).

05F1 SOUND RESET
05F5 restaurer
05F8 périphérie
05FA   KL CHOKE OFF
0601   KM RESET
0604 TXT RESET
0607 SCR RESET
060A   KL U ROM ENABLE CONT'D
060E jp (hl)
0613 MC START PROGRAM
0617 erreur de chargement

061C ******************************* MC START PROGRAM

initialisation  complète du système et  appel  du  programme dont adresse de début en hl.

061C rencontre RET après 066F
0620 fixer mode d'interruption 1
0622   sauver contenu des registres
0623   restaurer pointeur palette
0628   reset de la périphérie
062B éventuellement connectée
062D réinitialiser
0630 configuration RAM
0632 Floppy-Motor on/off Flip/Flop
0636 déconnecter moteur disquette
0638 copier &7f9 octets de l'adresse de départ
063B &B100 à l'adresse objet
063E &B101
0641   charger contenu de l'accu dans &B100
0642   exécuter procédure de copie
0644 U ROM off & L ROM on
0647 Screen Mode 1
0649 restaurer ancien contenu des registres
0652 Restore High Kernel Jumps
0655 JUMP RESTORE
0658 KM INITIALISE
065B SOUND RESET
065E SCR INITIALISE
0661   TXT INITIALISE
0664 GRA INITIALISE
0667 CAS INITIALISE
066A MC RESET PRINTER
066F jp (hl)
0674 initialiser ROM supérieure

0677***********************************************demarrage à froid

067A   TXT SET CURSOR
067D   sortir noms de firme
0680 sortir messages
0683 message initial
0686 sortir messages

0688  *************************************** message initial

0689   128K
068E Microcomputer
069D   (v3)
06A4 Copyright
06B0 cl 985
06B6 Amstrad
06BE Consumer
06C7 Electronics
06D3 pic
06D9 and
06DD   Locomotive
06E8 Software 06F1 Ltd
06F9 message erreur de chargement

06FC ************************************* sortir message

0700 TXT OUTPUT 0703 sortir message

0705 ************************************ message erreur  de chargement
0705 ***

0709 PROGRAM
0711   LOAD
0716 FAILED
071E ***

0725 Port B
0728 isoler LK1 ... 3
072A /2
072B noms de firme

0738 ****************************************** noms de firme

0738 Arnold
073F Amstrad
0747 Orion
074D   Schneider
0757 Awa
075B Solavox
0763 Saisho
076A Triumph
0772 Isp

0776 **************************************** MC SET MODE

fixer mode écran.

0776 Mode>2?
0778 si oui retour
07 7B restaurer
077D   bits mode
07 7D   fixer
0781   nouveau mode

0786 ************************************* MC CLEAR INKS

fixer une couleur pour cadre écran et toutes les inks.

0786   placer contenu de hl sur la pile
0787   puis charger &0000 dans hl
078A   six octets plus loin

078C **************************************** MC SET INKS

Sortir couleur de toutes les inks et du bord écran.

078C placer contenu de hl sur la pile
078D   puis charger &0001 dans hl
0793 couleur bord
0796 sortir couleur
079A   Adresse Ink 0
079C sortir couleur
07A4   charger toutes les mémoires couleur

07AA *************************************** sortir couleur

07AA   pointeur de palette
07AD annuler bits 5, 6 et 7 de l'accu
07AF   puis mettre bit 6
07B1 couleur

07B4 ********************************** MC WAIT FLYBACK

attendre retour du faisceau.

07B6   Port B
07BA   VSYNC?
07BB   si non attendre

07C0 ********************************* MC SCREEN OFFSET

fixer offset écran.

07C3 annuler tous les bits sauf 4 et 5
07C8 annuler tous les bits sauf 0 et 1
07CE   Video Contr Register 12
07D1 début écran Hi
07D5 registre 13
07DC   début écran Lo

07E0 ********************************* MC RESET PRINTER

restaurer point de branchement indirect pour imprimante.

07E0 adresse de départ
07E3 adresse objet
07E6 21 octets
07E9 (copier)
07EE   Move (hl+3) vers ((hl+1)),cnt = (hl)
07F1 db 03 3 octets
07F2 dw BDF1 adresse objet
07F4 MC WAIT PRINTER
07F7 ********************************** convertir accents

La table suivante a été copiée par MC RESET PRINTER dans la RAM (adresse objet B804). Le premier octet de la table indique la longueur de la table en octets. Ensuite viennent plusieurs paires d'octets dont le premier indique chaque fois le code clavier et le second le caractère affecté de façon standard par l'électronique. Si cette table est modifiée dans la RAM, il est possible de manipuler les caractères affectés aux codes clavier de façon à produire, par exemple, un clavier français (AZERTY).

07F7 db 0A nombre d'octets

07F8 db A0 code clavier interne
07F9 db 5E caractère affecté A

07FA   db A1 code clavier interne
07FB db 5C caractère affecté 

07FC   db A2 code clavier interne
07FD   db 7B caractère affecté {

07FE db A3 code clavier interne
07FF db 23 caractère affecté #

0800   db A6 code clavier interne
0801   db 40 caractère affecté  @

0802   db AB code clavier interne
0803   db 7C caractère affecté |

0804   db AC code clavier interne
0805   db 7D caractère affecté }

0806   db AD code clavier interne
0807   db 7E caractère affecté  ~

0808   db AE code clavier interne
0809   db 5D caractère affecté ]

080A db AF code clavier interne
080B db 5B caractère affecté  [

080C ***************** MC AFFECTATION DE CARACTERES

C'est ici qu'est effectuée la manipulation de conversion des accents.

080C hl:  adresse de départ  de la nouvelle table de caractères (RAM)
0812 convertir accents (RAM)
0817   KL LDIR CONT'D

081B ************************************* MC PRINT CHAR

Sort le caractère en a sur le port Centronics. Après retour de cette routine, le carry est mis si le caractère a été transmis avec succès.

0826 accent?
0828 sauter si non
082F MC WAIT PRINTER

0835 *********************************** MC WAIT PRINTER

Envoie un caractère à l'imprimante; si celle-ci n'est pas prête, attendre une période de délai.

0838 MC BUSY PRINTER
083B MC SEND PRINTER

0844 *********************************** MC SEND PRINTER

Envoie un caractère à l'imprimante qui ne doit pas être occupée.

0847 octet sans strobe
0849 à l'imprimante
084E Strobe activé
0853 Strobe désactivé

0858 *********************************** MC BUSY PRINTER

Examiner si l'imprimante est occupée.

085A Port B
085E imprimante occupée
085F vers Carry

0863 ******************************** MC SOUND REGISTER

Fournir des données au Sound Controller. MC SOUND REGISTER est intéressant pour les amateurs de musique. Sans que vous vous torturiez l'esprit avec la transmission de données au PSG qui est relativement compliquée, il vous suffit de transmettre le numéro de registre et l'octet souhaités en les plaçant respectivement dans a et c.

0864 Port A
0866 Sound Register#
0868 Port C
086A   Sound Chip
086C sur entrée
086C & strobe activé
0872 Strobe désactivé
0874 Port A
0876 données sound
0878 Port C
087D   données
087F (insérer)

0883 ***************************************** Scan Keyboard

0883 Port A
0886 Sound Register 14 (Keyboard X Input)
0888 Port C
0891   Strobe activé
0893 Strobe désactivé
0896 Port A&B = Input
0898 Control
089D   Port C
089F Keyboard Y Output et X Input
08Al Port A
08A3 données (Keyboard X Input) vers accu
08AC   Keyboard Y+l
08B0 traité tous les canaux Y?
08B2 non alors canal suivant
08B5 Port A Output
08B7 Control
08BA   Port C

★ ANNÉE: ???

Page précédente : La bible du CPC 6128 : 2.05.01 KERNAL (KL)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 115 millisecondes et consultée 901 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.