Home
Télécharger - MSX Village
Contents
1. TRPTBL RTYCNT INTFLG PADY JIFFY INTVAL LOWLIM WINWID GRPHED ESCCNT INSFLG CSRSW CSTYLE CAPST KANAST KANAMD FLBMEM SCRMOD OLDSCR CASPRV BRDATR GXPOS GYPOS GRPACX GRPACY DRWFLG DRWSCL DRWANG RUNBNF SAVENT MNROM 78 N mm N r N N N e Adresse de la derni re case disponible en RAM Trap table Contr le d interruption Flag d interruption Valeur en X du paddle manette sp ciale Valeur en Y du paddle Petit compteur sympathique Valeur de l intervalle lors d une instruction lt ON INTERVAL GOSUB gt Compteur utilis par l instruction lt ON INTERVAL GOSUB gt Utilis durant la lecture cassette Idem ci dessus En t te pour la sortie des caract res graphiques Compteur pour une s quence d escape Flag de mode insertion Cursor display switch gt flag pour le curseur Forme du curseur 0 pour le curseur entier 1 pour un petit curseur insert Flag de mode 0 pour tre en minuscules 1 pour tre en majuscules Flag de mode kana Flag sp cifique au mode kana Flag de chargement 0 si un programme Basic se charge Mode d cran actuel Ancien mode d cran Utilis pour savoir dans quel mode texte il faut repasser apr s un mode graphique M moire de travail pour l
2. 0 1 KEE T O entr e 0 sortie 1 8 volume de la voie n 1 0 0 0 b4 b3 b2 bl b0 volume 0 15 1 0 volume normal 1 volume contr l par le g n rateur d enveloppe R9 volume de la voie n 2 voir 8 R10 volume de la voie n 3 voir 8 R12 et R11 fr quence de l enveloppe R13 forme de l enveloppe 0 4 8 10 11 12 13 ou 14 pour arr ter compl tement le son sur une voie il faut mettre le volume de voie 0 ET modifier le registre de contr le R7 afin de maintenir la compatibilit il ne faut en aucun cas utiliser les fonctions d entr e sortie du PSG 00096H RDPSG ReaD PSG Nom RDPSG Adresse 00096H ROM Type MSXI 1 lecture d un registre du PSG Entr e A num ro du registre Sortie A contenu du registre Modifie rien Note voir la routine WRTPSG pour le d tail des registres du PSG 00099 STRTMS Nom Adresse Type R le Entr e Sortie Modifie 0009 CHSNS Nom Adresse Type R le Entr e Sortie Modifie 0009 Nom Adresse Type R le Entr e Sortie Modifie Note STarT background task STRTMS 00099 MSX1 1 d marre le travail de fond pour PLAY rien rien tout CHSNS 0009CH ROM 1 mise jou
3. 1 Appel Fonct H DSKI routine DSKI lt DiSK Input gt utilis e par l instruction DSKI du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H ATTR Routine ATTR lt ATTRibute ai d tourn pour obtenir un acc s au lecteur de disquettes H LSET routine LSET Left SET utilis e par l instruction LSET du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes HRSET routine RSET Right SET utilis e par l instruction RSET du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H FIEL routine FIELD utilis e par l instruction FIELD du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H MKI routine MKI lt MaKe Integer gt utilis e par l instruction MKIS du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes 0 5 H MKSS Appel Fonct OFE3AH Non 8 Appel Fonct OFE3FH Appel Fonct OFE44H Non H CVS Appel Fonct OFE49H H CVD Appel Fonct OFE4EH Appel Fonct H MKS routine MaKe Simple gt utilis e par l instruction du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H MKD routine MKD MaKe Double gt utilis e
4. 226 B LESVARIABLES SY STEM DEE 229 KEE 233 D LES REGISTRES DU 9936 222400 nn ne ee eege st nes et 234 E CARTES MEMOIRES VIDEO ee EE 237 Ba TABLE ASCILETENDUE 240 Pratique du MSX2 par Eric VON ASCHEBERG retap par Granced original aimablement fourni par Metalion pour la communaut MSX fran aise
5. SCREEN 0 0 0 0 0 40 colonnes SCREEN OI 0 1 0 0 80 colonnes SCREEN 1 0 0 0 0 0 32 colonnes SCREEN 2 0 0 1 O 0 256 192 16 couleurs SCREEN 3 0 0 0 1 0 64 48 16 couleurs SCREEN 4 0 1 0 0 0 idem SCREEN 2 8 sprites SCREEN 5 0 1 1 O 0 256 212 bitmap 16 couleurs SCREEN 6 1 0 O O O 512 212 bitmap 4 couleurs SCREEN 7 1 0 1 O O 512x212 bitmap 16 couleurs SCREEN NI 1 1 1 O O 256 212 bitmap 256 couleurs Registre 2 0 16 5 4 2 0 MSXI MSX2 Sur MSX1 N14 N16 n existent pas N10 N13 codent les quatre bits de poids fort de l adresse du d but de la table des noms en VRAM L adresse v ritable s obtient en multipliant la valeur de ces 4 bits par 400H Par exemple si les bits sont 1001 soit 9 en hexa la table des noms se trouve en 9 400H 2400H L adresse peut varier dans ces conditions entre 0 et 3C00H Sur 5 2 N10 N16 codent les 7 bits de poids fort de l adresse du d but de la table des noms Le fonctionnement est le m me que sur MSX1 voir ci dessus L adresse varie entre 0 et 1FC00H Registre 3 Sur MSX1 C6 C13 Sur MSX2 C6 C13 Registre 4 Sur MSX1 F14 F16 F11 F13 Sur MSX2 F11 F16 Registre 5 12 C9 C8 C7 C6 MSXI MSX2 codent les 8 bits de poids fort de l adresse du d but de la table des cou
6. 0 800 OFOFFH 8 OFA9FH 24576 octets 27136 octets 128 octets 2048 octets 512 octets 32 octets 49152 octets 54272 octets 128 octets 2048 octets 512 octets 32 octets 49152 octets 54272 octets 128 octets 2048 octets 512 octets 32 octets TABLE ASCII ETENDUE Vous trouverez dans le tableau r capitulatif suivant le jeu de caract res MSX Il suit un code ASCII tendu 0 CDW 1 8 EOL 3 4 ESC CUPICRTICLT CD 2 JE SKI CIEN EA 5 2 1 6 1 1 7 2 i DEL 9 9 x R f 1 2 3 4 i S gt B o T C Z N D w Biel 1 Q 4 9 n F 1 n 2 LVC PRW place le curseur sur le mot pr c dente EFF efface la ligne droite du curseur NTW place le curseur sur le mot suivant CDW descend le curseur d une ligne HOM HOME positionnement du curseur en haut gauche EOL place le curseur en fin de ligne INS INS passage en mode insertion et retour CLL efface la ligne ou se trouve le curseur SEL SELECT comme la touche du m me nom CUP curseur vers le haut CRT curseur vers la droite CLT curseur vers la gauche CDW curseur vers le bas LVC curseur vivant image du curseur Pratique du MSX2 FLPESYSTEEMEMSX uu luan al ana ane 1
7. gt 00149 0014DH 0015 Nom Adresse Type R le Entr e Sortie Modifie SETPLT Nom Adresse Type R le Entr e Sortie Modifie PUTSPR Nom Adresse Type R le Entr e Sortie Modifie GET PaLeTte GETPLT 00149H SUBROM MSX2 r cup ration d une couleur depuis la palette num ro de la couleur B 4 bits de poids fort pour le rouge 4 bits de poids faible pour le bleu C A bits de poids faible pour le vert AF DE SET PaLeTte SETPLT 0014DH SUBROM MSX2 modification d une couleur dans la palette D num ro de la couleur 0 15 A 416 de poids fort pour le rouge 4 bits de poids faible pour le bleu E 4bits de poids faible pour le vert rien AF PUT SPRite PUTSPR 00151H SUBROM MSX2 affichage d un sprite HL pointeur de texte Basic HL pointeur r actualis tout 00155 00159 0015DH 00161H COLOR Nom Adresse Type R le Entr e Sortie Modifie SCREEN Nom Adresse Type R le Entr e Sortie Modifie WIDTHS Nom Adresse Type R le Entr e Sortie Modifie VDP Nom Adresse Type R le Entr e Sortie Modifie COLOR COLOR 00155H SUBROM MSX2 changement de couleurs de palette de couleur de sprites HL pointeur de texte Basic HL pointeur r actualis tout SCREEN SCREEN
8. 1 charger les registres ci dessus 2 mettre 01100000 060 le registre 46 3 lire le registre d tat 2 status 4 tester l tat du bit CE si celui ci est 1 il faut patienter on retourne l tape 3 Si le bit CE est 0 on continue 5 tester l tat du bit BD si celui ci se trouve 0 alors le processeur vid o n a pas trouv de pixel de la couleur recherch e Si au contraire BD est 1 le processeur vid o a bien rep r un pixel de la couleur cherch e L abscisse de ce pixel s obtient en lisant le contenu des registres d tat 8 et 9 Le premier renferme les 8 bits de poids faible de cette abscisse alors que le bit 0 du registre 9 donne le bit de poids fort Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem idem idem idem INSTRUCTION PSET Point SET Sch ma DX DY VRAM Fonction Source Destination Registres R36 R37 R38 R39 DY0 DY9 R44 PSET affiche un point dans la m moire vid o V9938 VRAM Voici la liste des registres du processeur vid o charger pour ex cuter la commande DX7 DX6 DX5 DX4 DX3 DX2 abscisse 0 0 o 0 o Dx8 0 511 abscisse du pixel origine DY7 DY6 DY5 DY4 DY2 Dei DY0 ordonn e 0
9. Nom Adresse Type R le Entr e Sortie Modifie Note INIMLT Nom Adresse Type R le Entr e Sortie Modifie Note INItialize GRaPhic mode INIGRP 000DDH SUBROM MSX2 initialisation du mode graphique 256x192 SCREEN 2 GRPNAM table des noms GRPCGP table des formes GRPCOL table des couleurs GRPATR table des attributs de sprites GRPPAT table des formes de sprites rien tout Il n est pas obligatoire de d finit GRPNAM etc car le MSX initialise leur valeur l allumage INltialize MuLTicolor mode 000E1H SUBROM MSX2 initialisation du mode graphique multicolore SCREEN 3 MLTNAM table des noms table des formes MLTCOL table des couleurs MLTATR table des attributs de sprites MLTPAT table des formes de sprites rien tout Il n est pas obligatoire de d finit MLTNAM etc car le MSX initialise leur valeur l allumage 000 5 000 9 SETTXT Nom Adresse Type R le Entr e Sortie Modifie Note SETT32 Nom Adresse Type R le Entr e Sortie Modifie Note SET TeXT mode SETTXT 000ESH SUBROM MSX2 passage direct en mode texte 40x24 TXTNAM adresse de la table des noms TXTCGP adresse de la table des formes rien tout Il n est pas obligatoire de d finit TXTNAM et TXTCGP car le MSX initialise leur valeur l allumage SET Text
10. 2 VO H HI Registre 18 HO H3 correction horizontale de l affichage SET ADJUST du Basic 7 6 5 1 0 15 14 10 9 8 gauche centre droite VO V3 correction verticale de l affichage SET ADJUST du Basic 8 7 6 1 0 15 14 9 8 7 bas centre haut IL7 16 15 4 IL2 ILI ILO MSX2 Registre 19 ILO IL7 donnent le num ro de ligne o une interruption programm e doit se produire Registre 20 0 0 0 0 0 0 0 0 MSX2 Registre 21 0 0 1 1 1 0 1 1 MSX2 Registre 22 0 0 0 0 0 1 0 1 MSX2 Les valeurs de ces 3 registres sont fixes Ne pas les modifier Seule exception la r gle si l on met ces 3 registres 0 l affichage dispara t Il suffit de remettre les 3 registres leur valeur initiale pour r tablir l affichage Registre 23 007 006 DOS 004 002 DOI MSX2 DO D7 donnent l offset de l affichage Cas normal Haut 000 Wu partie visible Wu Wu Bas Wu 191 ou211 259 Exemple avec 150 dans le registre 23 000 Bas partie visible 86 ou 106 150 255 Note ce registre permet de r aliser tr s facilement des scrollings verticaux Voici un petit programme Basic pour illustrer cette facilit 10 SCREEN 8 C 7 1 20 CIRCLE
11. 32 32 32 32 32 Table des formes forme 01 8 octets forme 65 p gt 8 octets matrice du A Ecran V I E La table des noms contient un octet par caract re l cran soit 40 colonnes fois 24 lignes soit 960 caract res donc 960 octets Chaque octet renferme le code ASCII du caract re afficher l cran Ainsi si l cran se trouvent uniquement les caract res VIE dans le coin sup rieur gauche la table des noms ressemblera 00000H 65 ou 041H code du gt 00001H 32 ou 020H code de l espace 00002H 86 ou 056 code du lt V gt 00003H 73 ou 049 code du 00004H 69 ou 045H code du Le reste de la table serait alors rempli de 32 020 code de l espace ou ventuellement de 0 La table des formes contient elle 2048 octets regroup s par paquets de 8 octets Ce qui donne 2048 divis par 8 soit 256 paquets Chaque paquet correspond un caract re code ASCII et en d finit la forme Par exemple le 65 me paquet code le caract re et ressemble Paquet n 65 donc octet 65 8 520 208 On trouvera donc l information qui nous int resse l adresse de d but de la table des formes 00800 plus 208 soit 00 08 00 08 contient 32 ou 020
12. n a jamais connu le probl me d un buffer clavier qui renvoie des caract res mauvais moment Effacer ce buffer est souvent utile En Basic POKE amp 8 POKE amp HF3FB PEEK amp HF3F9 En langage machine LD PUTPNT LD Voici un truc un peu plus sophistiqu l interdiction de l action combin e des touches CRTL STOP peut facilement tre obtenue en faisant croire au MSX que votre programme se trouve en cartouche de m moire morte POKE amp HFBB1 1 fera parfaitement l affaire Au contraire pour ceux qui d sirent acc der des programmes Basic prot g s contre le CTRL STOP il leur suffit de taper POKE amp avant de charger le programme Puis le programme ayant d marr il faut enfoncer simultan ment les touches CTRL SHIFT GRAPH et CODE Le MSX rendra alors la main Pour ceux que la pr sence du curseur rassure ils peuvent essayer POKE 9 mode direct Pour se rendre compte de l effet obtenu il suffit de rentrer le petit programme suivant 10 PRINT Hello 20 GOTO 20 et de faire RUN Le dernier exemple est un peu plus cons quent que les autres Il s agit d utiliser la zone r serv e la d finition des touches fonction au mieux de mani re pouvoir assigner n importe quelle cha ne de caract res une touche Notons qu on peut mettre au maximum 39 caract res par touche sachant que l on
13. R38 R39 DY0 DY9 R40 R41 NX0 NX8 R42 R43 NY9 R44 45 MXD DIY DIX Voici la liste des registres du processeur vid o charger pour ex cuter la commande DX7 DX6 DX5 4 DX3 DX2 0 0 0 0 0 0 0 DX8 abscisse du pixel origine DY7 DY6 DY5 4 DY3 DY2 DY1 0 0 0 0 0 0 DY9 DY8 ordonn e du pixel origine NX7 NX6 5 NSA NX2 NXI NX0 0 0 0 0 0 0 0 NX8 nombre de pixels allumer dans la direction horizontale NY7 NY6 5 NY4 NY3 NY2 NYO 0 0 0 0 0 0 NY9 NY8 nombre de pixels allumer dans la direction verticale CR7 CR 4 CR2 CRI CRO abscisse 0 511 ordonn e 0 1023 d placement horizontal 0 511 d placement vertical 0 1023 donn e SCREEN 5 et 7 seuls les bits CRO sont utilis s Ils codent la couleur d un pixel SCREEN 6 CRO et CRI codent la couleur d un pixel Les autres bits ne soont pas utilis s SCREEN 8 CRO codent la couleur d un pixel MXD DIY DIX 0 pour s lectionner la VRAM principale param tres 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 K
14. amp H2006 SHEI COLOR 2 1 1 2 40 LOCATE 20 5 PRINT lt Attention FOR J 3 1 STEP 1 LOCATE 23 7 PRINT J PLAY 180 gt FOR I 1 TO 800 NEXT I J LOCATE 20 5 PRINT 9 LOCATE 24 7 PRINT LOCATE 0 24 PLAY L206A 50 SC SC 1 SPRITE 1 X Y 8 I amp H1960 X 8 VPEEK D 79 OR 1 lt gt 79 THEN 100 ELSE D INT RND 14 3 D D T gt 2 AND T N lt 29 2 T lt 2 T N gt 29 ON D GOTO 70 80 60 PRINT 1 STRINGS N 1 lt O lt A gt GOTO 20 70 1 PRINT TAB T STRINGS N lt O lt gt GOTO 20 80 T T 1 PRINT 1 STRINGS N lt O lt N gt GOTO 20 90 SCREEN 1 WIDTH 32 COLOR 10 1 SPRITES 1 I 127 I gt CHR 8 I x CHR 127 CHRS 8 PRINT PRINT FOR I 1 TO 4 PRINT lt RALLY NEXT LOCATE 5 12 INPUT lt NIVEAU 1 ou 2 NN NN 1 IF NN 3 THEN N 4 DD 4 GOTO 30 ELSE N 8 DD 2 GOTO 30 100 amp H2007 amp H200A amp H72 amp H200C amp 72 amp H200D amp H72 amp 200 amp 72 LOCATE 1 23 PRINT lt Score SC 10 FOR 1 TO 100000 NEXT Voici l exemple parfait de ce que l on peut faire pour sa petite voisine par un apr s midi pluvieux gris SCREEN 2 R solution Texte Cou
15. E REECH 1 1 2UTIEISER CE LIVRE O 1 1 3CONSEILS AU DEVELOPPEUR DE LOGICIELS times 3 LE MAINTENANT de ne tunes einen at ete ad tie 4 2LES SLOTS ET LE MEMORY MAPPER uuu u guau huacas ab n p bas 5 2 DEPASSER LA LIMITE DES o kO a 5 BEE EE 5 2 SUTILISER ESSIQOTS EE 8 2 55 10 3LE BIOS BASIC INPUT OUTPU T SYSTEM ain aasan ana 12 Egeter gedet deene 12 E ER BIOS EN MAIN ROM EE 12 33I E BIOS EN SUB ROM one u nu bis uu Suay s 61 4LES VARIABLES SYSTEME ET LES HOOK S 101 4 IINTRODUCTION AUX VARIABLES SYSTEME 101 4 2LA LISTE DES VARIABLES SYSTEME e 101 4 EXEMPLES D UTILISATION DES VARIABLES SYSTEME 110 LAS BISTE DES HOOKS en 111 SLE PROCESSEUR GRAPHIQUE V9938 ae sen EE 129 SAV RE CR EE 129 S2IN FRODUCTION AU V993 8 129 3S 3FONCTIONNEMENT DU V9938 M sister etes Age 130 5 4 ACCEDER AUX REGISTRES DU 9938 130 5 5LECTURE ET ECRITURE DANS LA MEMOIRE VIDEO 133 5 6LES REGISTRES lt WRITE ONLY gt DU PROCESSEUR VIDEO V9938 135 5 71
16. OF66AH 0 668 0 666 0 669 0 939 0 93 1 N G H H N H 9 N N MSX1 MSX1 MSX1 MSX2 CPLOTF CRCSUM CRTCNT CS120 CSAVEA CSAVEM CSCLXY CSRSW CSRX XSRY CSTCNT CSTYLE CURLIN CXOFF CYOFF DAC DATLIN DATPTR DECCNT DECTMP DECTM2 DEFTBL DEVICE DIMFLG DORES DONUM DOT DPPAGE DRWANG DRWFLG DRWSCL DSCPTR DSCTMP ENDBUF ENDFOR ENDPRG ENSTOP 0F938H 0H93DH 0F3B1H 0F3FCH 0F942H 0F944H 0F941H 0FCA9H 0F3DDH 0F3DCH 0F93FH 0FCAAH 0F41CH 0F945H 0F947H 0F7F6H 0F6A3H 0F6C8H 0F7F4H OF7FOH OF7F2H OF6CAH OFD99H 0 662 0 664 0 665 0 6 5 5 0 699 0 698 0 660 OF6AIH OF40FH S L N N N e N e ra ra N N e interne 3 N MSXI1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX2 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 ERRFLG ERRLIN ESCCNT EXBRSA EXPTBL FACLO FBUFFER FILNAM FILNM2 FILTAB FLBMEM FLGINP FKNFLG FNKSTR FNKSWI FORCER 5 5 FUNACT GETPNT GRPACX GRPACY GRPATR GRPCGP GRPCOL G
17. X X X huit octets pour le premier quart du sprite n 0 huit octets pour le second quart du sprite n 0 huit octets pour le troisi me quart du sprite n 0 huit octets pour le dernier quart du sprite n 0 La r union des quatre parties donne le r sultat ci dessous X X X X X X X X X X X X X X x x x X X X X X X x i x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x X X X X X X X X x x x A X X X XX X X X X X X X X X X Une fois le sprite d fini on peut le manipuler souhait gr ce la table des attributs de sprites Cette table fonctionne avec des plans graphiques et compte 4 octets par plan On appelle plan graphique un espace comprenant un l ment graphique Il y a donc 32 plans num rot s de 0 31 avec chacun un sprite puis un plan avec les graphismes ordinaires enfin parfois un plan en entr e vid o La table des attributs de sprites code les caract ristiques de chaque plan sur 4 octets 7 6 5 4 3 2 1 0 01B00H ordonn e sprite plan 0 0 255 01B01H abscisse sprite plan 0 0 255 attributs 01B02H num ro de sprite 0 255 du plan 0 01B03H EC O O O couleur 0 15 01B04H ordonn e sprite plan 1 0 255 L ordonn e peut varier entre 0 et 255 Si le sprite sort de l cran le V9938 n affichera que la partie visible du sprite En r alit on utilise les coordo
18. 0 0 0 0 511 DX0 DX8 abscisse du pixel destination R38 R39 DY0 DY9 R40 R41 NX0 NX8 R42 R43 NY9 45 MXD MXS DIY DIX R46 LOO LO3 Ex cution DY7 DY6 DY5 DY4 DY3 DY2 DY1 DY0 ordonn e destination 0 0 0 0 0 0 DY9 DY8 0 1023 ordonn e du pixel destination 7 6 5 NX4 NX2 NX0 d placement horizontal 0 0 0 0 0 0 0 NX8 0 511 nombre de pixels copier dans la direction horizontale NY6 5 NY4 NY2 0 d placement vertical o 0 0 0 0 0 NY9 NY8 0 1023 nombre de pixels copier dans la direction verticale MXD MXS DIY DIX 0 param tres M moire vid o de destination 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM M moire vid o source 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM direction verticale pour NY 0 bas 1 haut direction horizontale pour NX 0 droite 1 gauche LO3 LO2 LOI 1 00 Commandes op
19. L adresse peut varier dans ces conditions entre 0 et 3800H codent les 6 bits de poids fort e l adresse du d but de la table de g n ration des sprites Le fonctionnement est le m me que sur MSX1 voir ci dessus L adresse varie entre 0 et 1F800H TC3 TC2 2 BD1 BDO MSX1 MSX2 donnent la couleur du texte dans les modes textes donnent la couleur du fond dans tous les SCREEN Note VDP 7 amp HA0 par exemple fait appara tre un texte jaune sur un fond transparent noir mais ce registre a une autre utilisation voir les registres 12 et 13 Registre 8 MS LP CB MS VR 0 SPD BW MSX2 mis 1 lorsqu on utilise une souris reste 0 dans le cas contraire lt MouSe enable gt idem pour le crayon optique lt Light Pen enable gt 0 couleur 0 transparent 1 couleur 0 red finissable bit du bus de couleur Color Bus 1 en entr e 0 en sortie VR donne le type de m moire vid o Video 1 64 1 bit ou 64Ko 4 bits 0 16 Ko 1 bit ou 16 Ko 4 bits SPD affichage des sprites lt SPrites Display gt 1 sprites teints 0 sprites affich s BW choix de la couleur ou du noir et blanc lt Black and White gt 1 affichage en noir et blanc 32 nuances de gris 0 affichage en couleur Le bit TP indique si la couleur n 0 est utilis e co
20. 01B04H ordonn e sprite plan 1 0 255 L ordonn e peut varier entre 0 et 255 Si le sprite sort de l cran le V9938 n affichera que la partie visible du sprite En r alit on utilise les coordonn es de 225 31 en compl ment 2 255 et 0 191 Ceci permet de faire entrer un sprite dans l cran 31 1 ou 225 255 ou au contraire de le faire sortir 183 191 pour un 8 sur 8 petit petit Notez que si l ordonn e de n importe quel sprite est 216 008 alors tous les sprites dans les plans sup rieurs deviennent invisibles Par exemple si l on met l ordonn e du sprite contenu dans 8 216 alors tous les sprites dans les plans 9 31 disparaissent L abscisse prend une valeur entre 0 et 255 Dans les modes 512 pixels de large SCREEN 6 et 7 un pixel sprite quivaut deux pixels graphiques Pour faire sortir le sprite on utilise les abscisses entre 247 et 255 pour un sprite 8 sur 8 Par contre pour le faire entrer il faut utiliser le bit EC dans la table des couleurs Le num ro de sprite donne la forme utiliser l affichage On peut d finir 256 sprites 8 sur 8 ou 64 sprites 16 sur 16 pour les sprites 8 sur 8 on choisit simplement le num ro de celui que l on d sire afficher Pour les sprites 16 sur 16 on donne le num ro de sprite multipli par quatre 5 11 LA SOURIS ET LE CRAYON OPTIQUE Ces deux p riph riques de pointage peuvent tre g r s directement par le processeur
21. DATA READ PRINT ne peut tre comprim Flag utilis pour la compression des nombres Sauvegarde temporaire du pointeur de texte Sauvegarde temporaire du code de l instruction en cours Constante sauv e type Constante sauv e valeur Adresse de la derni re case m moire disponible sous Basic Modifi par l instruction CLEAR Adresse de la derni re case m moire utilisable par la pile Modifi par CLEAR Adresse de d but des programmes Basic Pointeur du Basic Stockage provisoire Adresse du premier octet libre dans la table des cha nes de caract res Adresse de fin de table de cha nes de caract res M moire de travail M moire de travail Sauvegarde du pointeur de texte apr s un FOR pour pouvoir revenir au moment du NEXT Num ro de ligne du DATA en cours Flag pour FOR et les fonctions d finies par l utilisateur Flag pour INPUT et READ M moire de travail pour INPUT FOR NEXT LET et C Flag de mode 0 pas de num ro de ligne transformer 1 num ro de ligne transformer Flag pour AUTO 0 pas de mode auto 1 mode auto en cours OF6ABH OF6ADH OF6AFH OF6BIH 0F6B3H OF6B5H OF6B7H OF6B9H OF6BAH OF6BCH OF6BEH OF6COH OF6C2H 0F6C4H 0F6C6H 0F6C8H 0F6CAH AUTLIN AUTINC SAVTXT SAVSTK ERRLIN DOT ERRTXT ONELIN ONEFLG TEMP2 OLDLIN OLDTXT VARTAB ARYTAB STREND DATPTR DEFTBL N N N N N N D ND N
22. Type R le Entr e Sortie Modifie SETS Nom Adresse Type R le Entr e Sortie Modifie BEEP Nom Adresse Type R le Entr e Sortie Modifie PROMPT Nom Adresse Type R le Entr e Sortie Modifie Video PEEK VPEEK 00175H SUBROM MSX2 lecture de la m moire vid o HL pointeur de texte Basic HL pointeur r actualis tout SET Screen SETS 00179H SUBROM MSX2 acc s tous les SET SCREEN ADJUST TIME etc HL pointeur de texte Basic HL pointeur r actualis tout BEEP BEEP 0017DH SUBROM MSX2 mission d un bref bip sonore rien rien tout PROMPT PROMPT 00181H SUBROM MSX2 affichage de OK ou du message d fini par l utilisateur rien rien tout 00185 00189 0018DH 00191 SDFSCR Nom Adresse Type R le Entr e Sortie Modifie SETSCR Nom Adresse Type R le Entr e Sortie Modifie SCOPY Nom Adresse Type R le Entr e Sortie Modifie BLTVV Nom Adresse Type R le Entr e Sortie Modifie SDFSCR 00185H SUBROM MSX2 r cup ration des options largeur d cran couleurs etc sauvegard s dans la RAM CMOS de l horloge rien rien tout SET SCReen SETSCR 00189H SUBROM MSX2 idem SDFSCR avec en plus l affichage du message de d part l allumage rien rien tout Scr
23. Adresse Type R le Entr e Sortie Modifie SCANR Nom Adresse Type R le Entr e Sortie Modifie Note SCANL Nom Adresse Type R le Entr e Sortie Modifie Note PaiNT INltialize PNTINI 00129H ROM MSX1 1 initialisation de la proc dure de peinture rien rien AF SCAN Right SCANR 0012CH ROM MSX1 2 recherche vers la droite du premier pixel d une autre couleur DE nombre de pixels sur lesquels la recherche doit s effectuer DE position du pixel recherch tout Un exemple si vous chargez DE avec 100H et que le premier pixel d une autre couleur se trouve 4 pixels la routine renverra OFCH dans DE SCAN Left SCANL 0012FH ROM MSX1 2 recherche vers la gauche du premier pixel d une autre couleur DE nombre de pixels sur lesquels la recherche doit s effectuer DE position du pixel recherch tout Un exemple si vous chargez DE avec 120H et que le premier pixel d une autre couleur se trouve 9 pixels la routine renverra 117H dans DE 00132 00135 00138 Nom Adresse Type R le Entr e Sortie Modifie CHGSND Nom Adresse Type R le Entr e Sortie Modifie RSLREG Nom Adresse Type R le Entr e Sortie Modifie Note CHanGe CAPs lamp status CHGCAP 00132H ROM 8 1 allume ou teint le voyant CAPS LOCK A 0 po
24. Appel Fonct OFDFEH H KILL Appel Fonct Non ELIPL Appel Fonct OFEO8H Appel Fonct OFEODH Non H CMD Appel Fonct 2 H DSKF Appel Fonct routine lt reNAME y utilis e par l instruction 5 du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H KILL routine KILL KILL file utilis e par l instruction KILL du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H IPL routine IPL Initial Program Load d tourn pour obtenir un acc s au lecteur de disquettes H COPY routine COPY COPY files utilis e par l instruction COPY du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H CMD routine CMD CoMmanD routine non utilis e sur MSX1 et MSX2 aucune sur MSX1 et MSX2 hook libre disponible pour le programmeur H DSKF routine DSKF lt Free gt utilis e par l instruction DSKF du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes 7 H DSKI Appel Fonct OFEICH Appel Fonct OFE21H Non H LSET Appel Fonct OFE26H Appel Fonct OFE2BH Appel Fonct
25. Dans certains cas il peut tre utile de charger les registres la suite ou de charger plusieurs fois le m me registre L acc s indirect est possible le registre 17 du processeur avec le num ro du registre dans lequel vous d sirez crire avec la m thode pr c dente envoyez vos donn es les unes la suite des autres sur le port 3 du processeur vid o L op ration d auto incr mentation normalement lieu savoir que le num ro du registre dans le registre 17 augmente chaque fois Il est possible d annuler cette fonction de mani re toujours crire dans le m me registre Il suffit de mettre 1 le bit de poids fort du registre 17 ce qui revient ajouter 80H Un second exemple lt crire 0 dans le registre 9 gt lt attendre un peu gt lt crire 2 dans le registre 9 gt ORG 0 000 DEBUT LD 7 LD INC C LD A 80H 9 registre 9 sans auto incr mentation LD 80 17 dans registre 17 80H INC port 2 dans INC port 3 dans C LD 0 0 60 Hz sur port 3 ATTEND CALL ATTEND boucle d attente PUSH BC Sous programme de LD 0 boucle d attente BCL DEC BC pour voir un peu LD quelque chose OR CP 0 JR NZ BCL POP BC RET ECRIRE DANS UN REGISTRE DE PALETTE chargez le registre 16 avec le num ro de la couleur modifier 0 15 par une des deux mani
26. G0 G2 intensit de vert 0 7 RO R2 intensit de rouge 0 7 et B1 intensit de bleu 0 3 En Basic on peut calculer le num ro de la couleur d sir e avec la formule 100 C 32 G 4 R avec G et R de 0 7 entre 0 et 3 Le registre 2 du 9938 indique la page afficher 0 3 R2 0 0 A16 11111 A16 et AIS page afficher 0 1 5 10 LES SPRITES ET LEUR FONCTIONNEMENT Les sprites ou lutins graphiques sont des motifs graphiques pouvant tre affich s automatiquement n importe quel pixel dans n importe quelle couleur ceci en se superposant aux dessins dans l cran sans les effacer Ces facilit s les pr destinent au mouvement puisqu il suffut de modifier deux octets les coordonn es du sprite pour faire d placer tout un motif sans toucher au reste de l cran Le V9938 peut m moriser jusqu 256 sprites il peut en afficher simultan ment au maximum 32 Les sprites se trouvent d finis dans un matrice 8 sur 8 ou 16 sur 16 Ils peuvent tre de 2 tailles normale ou double 0 255 255 255 X Y spr 0 191 255 191 0 211 255 211 Attention les coordonn es des coins sup rieurs ne sont pas 0 0 et 255 0 mais bien 0 255 et 255 255 On gagne donc un pixel par rapport l cran normal Pour vous en persuader essayez donc ce petit programme 10 SCREEN 7 COLOR 10 0 0 20 LINE 0 0
27. II type de clavier ll 0 Japonais 1 international l 1 1 1 2 fran ais 3 anglais 4 allemand Pari version du basic 0 Japonais 1 international 0002DH 00030H 00038H MSXVER Nom Adresse Type R le Note RST 30 Nom Adresse Type R le Entr e Sortie Modifie Note KEYINT RST 38 Nom Adresse Type R le Entr e Sortie Modifie Note MSX VERsion MSXVER 0002DH ROM MSX2 donn e version de MSX contient 0 pour un MSX1 1 pour un MSX2 Les autres num ros sont r serv s pour les versions futures de MSX CALL Far CALLF 00030H ROM MSX1 1 appel inter slot une adresse rien rien IX registres auxiliaires diff re de CALSTL dans la mani re d appeler la routine Pour CALLEF il faut crire RST 30 DB DW Interruptions automatiquement interdites num ro du slot sous la forme F000SSPP adresse appeler Cette routine existe aussi sous MSX DOS Ne jamais passer d arguments un sous programme via les registres auxiliaires du 780 lorsque vous utilisez encode KEY board timer INTerrupt routine 00038H ROM MSX1 1 Interruption hard Rien Rien Rien Cette routine appelle les hooks H KEY1 et H TIMI Appel la Sub ROM pour les conversions roma kana Ce RST est r serv
28. INSTRUCTION SRCH SeaRCH for border color Sch ma SX SY VRAM Fonction Source Destination Registres R32 R33 5 0 5 8 SRCH permet de rechercher une couleur donn e sur une ligne horizontale Cette instruction est particuli rement utile lors du remplissage d une surface PAINT V9938 VRAM Voici la liste des registres du processeur vid o charger pour ex cuter la commande abscisse 0 511 5 7 SX6 8 5 SX4 SX3 SX2 1 5 0 0 0 0 0 0 0 O SX8 abscisse du pixel origine 34 SY7 SY6 5 5 5 4 SY3 SY2 SY1 SYO ordonn e R35 0 0 0 0 0 0 5 9 5 8 0 1023 SY0 SY9 ordonn e du pixel origine R44 6 5 4 2 CRI donn e SCREEN 5 et 7 seuls les bits sont utilis s Ils codent la couleur rechercher 0 15 SCREEN 6 CRO et CRI codent la couleur rechercher Les autres bits CR2 CRT ne sont pas utilis s SCREEN 8 codent la couleur rechercher 0 255 45 0 0 0 0 EQ 0 param tres MXD 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM DIX sens de la recherche 0 droite 1 gauche Ex cution pour ex cuter l instruction SRCH voici la marche
29. Le mode 2 MSX2 Fonctionnement Dans ce mode il peut y avoir 32 sprites l cran num rot s de 0 31 Plus un sprite a un num ro faible plus il est prioritaire Ceci signifie que si le sprite n 3 croise le sprite n 16 on verra le sprite n 3 passer dessus lorsque des pixels des deux sprites se trouveront aux m mes coordonn es c est les pixels du sprite n 3 qui seront affich s 8 sprites peuvent au maximum se trouver sur la m me ligne A partir du 9 me sprite toutes les portions communes aux 9 sprites disparaissent sur le ou les sprites de plus faible priorit Param tres Matrice des sprites bit 1 51 du registre 1 du VDP SI 0 sprites 8 sur 8 SI 1 sprites 16 sur 16 Taille des sprites bit 0 MAG du registre 1 du VDP MAG 0 taille normale MAG 1 taille double 16 sur 16 ou 32 sur 32 avec de gros pixels Etat des sprites bit 1 SPD du registre 8 du VDP SPD 0 sprites affich s enable SPD 1 sprites teints disable Collisions Lorsque deux sprites entrent en collision deux pixels ou plus ont les m mes coordonn es le bit 5 du registre d tat status n 0 passe 1 si le bit CC est 0 Le bit 5 est automatiquement remis 0 lors d une lecture du registre d tat n 2 Les registres d tat n 3 4 5 et 6 indiquent alors les coordonn es du pixel o la collision s est produite condition que les bits MS et LP du registre n 8 du processeur soient tous le
30. d placement vertical de la souris ou du track ball dans le port joystick n 2 rien renvoie toujours 0 Le Bios reconna t automatiquement si c est une souris ou un track ball qui est connect Il est indispensable de faire un appel la fonction 12 ou 16 pour le port joystick n 2 avant de lire le d placement de la souris ou du track ball Dans le cas contraire vous obtiendrez des valeurs qui n ont aucun sens GET time date amp kanji GETPUT 001B1H SUBROM MSX2 r cup ration de l heure et de la date et traitement des caract res kanji HL pointeur de texte Basic rien tout CHanGe MoDe vdP CHGMDP 001 5 5 MSX2 modifications des registres du VDP pour changer de SCREEN num ro du SCREEN 0 8 rien tout Par rapport cette routine initialise la palette RESerVed 1 5 001B9H SUBROM MSX2 R serv aux versions futures de MSX 001BDH 001 5 KNJPRT KaNJi PRinT Nom KNJPRT Adresse 001BDH SUBROM Type MSX2 R le affichage d un caract re kanji l cran Entr e BC code du caract re kanji A type d affichage Sortie rien Modifie AF REDCLK CLocK Nom REDCLK Adresse 001FSH SUBROM Type MSX2 R le lecture de la m moire vive non volatile contenue dans l horloge interne Entr e adresse m moire Sortie A contenu de la case m moire lue quatre bits de poids faible Modifie F Note L a
31. header court adresse de chargement 2 octets adresse de fin 2 octets adresse de d but d ex cution 2 octets programme en lui m me 000 000 000 000 6 Nom Adresse Type R le Entr e Sortie Modifie Nom Adresse Type R le Entr e Sortie Modifie STMOTR Nom Adresse Type R le Entr e Sortie Modifie LFTQ Nom Adresse Type R le Entr e Sortie Modifie TAPe OUT TAPOUT 000EDH ROM MSX1 1 criture d un octet sur la cassette A octet crire indicateur carry op ration interrompue tout TAPe Out OFf TAPOOF 000 MSXI1 fin d criture arr t moteur 1 MOTor STMOTR 000F3H ROM Max Changement d tat du moteur du magn tophone Sid A 000 pour arr ter le moteur 00 pour d marrer le moteur pour inverser l tat actuel rien AF LeFT in Queue LFTQ 000F6H ROM Max donne le nombre d octets restants dans une queue 24 A num ro de queue A nombre d octets AF BC HL 000 9 in Queue Nom PUTQ Adresse 000FOH ROM Type Max 1 empilage d un octet sur une queue Entr e A num ro de queue E donn e mettre Sortie indicateur z ro 1 la queue est enti rement remplie Modifie AF BC HL En 5 2 4
32. lecture d une case m moire de la VRAM HL adresse de la case m moire lire A contenu de la case m moire lue AF pour lire une case m moire de VRAM dont l adresse est sup rieure 03FFFH utilisez la routine NRDVRM WRiTe VRaM WRTVRM 0004DH ROM MSX1 1 criture dans une case m moire de la VRAM HL adresse de la case m moire 00000H 03FFFFH A donn e crire rien AF pour crire dans une case m moire de VRAM dont l adresse est sup rieure 03FFFH utilisez la routine NWRVRM 00050 SETRD Nom Adresse Type R le Entr e Sortie Modifie Note 00053H SETWRT Nom Adresse Type R le Entr e Sortie Modifie Note 00056H FILVRM Nom Adresse Type R le Entr e Sortie Modifie Note SET address for ReaD SETRD 00050H ROM MSX1 1 transfert dans le VDP de l adresse de la case m moire o doit s effectuer la lecture HL adresse de lecture 00000H 03FFFFH rien AF dans le cas d une adresse sup rieure 03FFFH utilisez la routine NSTRD SET address for WRiTe SETWRT 00053H ROM MSX1 1 transfert dans le VDP de l adresse de la case m moire o doit s effectuer l criture HL adresse d criture 00000H 03FFFFH rien AF dans le cas d une adresse sup rieure 03FFFH utilisez la routine NSTWRT FILI VRaM FILLVRM 00056H ROM MSX1 4 remplissage de la m moire vid o HL adresse de d b
33. utilis par le syst me d exploitation des disquettes H BAKU routine BAKUPT lt utilis par le syst me d exploitation des disquettes H PARD routine PARDEV lt PARse DEVice name gt permet de changer le nom du device logical device name OFEB7H H NODE Appel Fonct H POSD Appel Fonct OFECIH Non H DEVN Appel Fonct OFEC6H H GEND Appel Fonct OFECBH H RUNC Appel Fonct OFEDOH H CLEA Appel Fonct H NODE routine NODEVN NO DEVice Name pas de nom trouv dans la table des DEVICE permet de traiter le cas o le device n est pas trouv H POSD routine POSDSK lt POSsible DiSK gt utilis par le syst me d exploitation des disquettes H DEVN routine DEVNAM DEVice NAMe aucune hook non utilis H GEND routine GENDSP GENeral device DISPatcher traitement d un ce non li au disque permet d ajouter de nouveaux devices routine RUNC RUN Clear utilis e lors des instructions NEW et du Basic d tournement des instructions NEW et RUN H CLEA routine CLEARC CLEAR Clear utilis e lors de la remise z ro des variables Basic permet d viter l effacement des variables Basic OFEDSH H LOPD Appel Fonct OFEDAH H STKE Appel
34. 050H 051H 052H 053H 054H 055H 056 058 05 05 gt EF 057H 059H 05BH 05DH 05 05 6 11 TROUVER DE LA RAM PAGES 0 1 Un probl me incontournable sur les MSX d s que l on d sire utiliser plus de 32 Ko de m moire vive est la recherche et l utilisation de m moire vive aux adresses 0 0800 La recherche Le court programme suivant d termine dans quel slot se trouve de la m moire vive pour la page 1 04000 Si vous d sirez effectuer une recherche pour la page 0 il faut remplacer le LD HL 04000H sixi me ligne par LD HL 0 A la fin de cette routine HL contient
35. 5 REGISTRES lt READ ONLY DU V9938 esse 147 5 8LES COMMANDES INTERNES DU 9938 149 5 9LES DIFFERENTS MODES D AFFICHAGE SCREEN 0 SCREEN 8 176 5 10LES SPRITES ET LEUR FONCTIONNEMENT 193 5 LEA SOURIS LE CRAYON OPTIQUE Eege ee 203 ODES APPLICATIONS TYPES saca a asinda dan mi unit sol imite 205 6 1REVENIR A L INTERPRETEUR 205 le FOUMS TS aqa asa ui sss 205 6 3LE lt PRINT gt EN LANGAGE 2 206 6 4SYSTEME A DISQUETTES OU A CASSETTES ns net An nn tes 206 6 5TRAITER LES ERREURS LIEES AUX DISQUETTES ar 207 6 6FAIRE DE LA MUSIQUE EN LANGAGE MACHINE 207 6 7PASSAGE DE PARAMETRES BASIC LANGAGE MACHINE 208 6 8LES CODES DE CONTROLE CTRL 211 GOLES CODES ESC ler Re ar M 212 6 1I0UTILISER LE SECOND IEUDECARACTERES un 214 6 1ITROUVER DE LA RAM EN PAGES 1 218 6 12DETOURNER EERESET Sul au diner 220 6 T3AJOUTER DES MOTS CDEF AU BASIC Les metres 222 6 14MANIPUEER LA SOURIS een aQ u NT en 225 ANNBXEBS ae EE 226 DE LEBIOS XS LR E en
36. DY5 DY4 DY3 DY2 DY1 DYO registre 39 0 0 0 0 0 0 DY9 DY8 registre 40 NX7 NX6 NX5 NX4 NX2 NX1 NX0 registre 41 0 0 0 0 0 0 0 registre 42 NY7 NY6 NY5 4 NY3 NY2 NY1 NYO registre 43 0 0 0 0 0 0 9 NY8 registre 44 CL7 CL6 CLS CL2 CLO registre 45 0 MXS DIY DIX EQ MAJ registre 46 CM3 CM2 CM1 103 102 101 LOO Liste alphab tique nom registre fonction AI 17 1 auto incr mentation 0 normal BC3 BCO 12 cas de clignotement couleur 2nde partie BD3 BDO 7 drop color gt BL 1 affichage autoris 0 affichage interdit BW 8 1 et blanc 32 teintes 0 couleur CB 8 bus de couleur en entr e 0 en sortie 16 n de couleur lors d un acc s palette CL3 CLO 44 couleur lors d une commande CM3 46 commande ex cuter C13 C6 3 adresse table des couleurs 11 bits 16 4 10 poids fort sur les 17 de l adresse DC 1 en entr e 0 en sortie DG 1 bus de couleur en entr e 0 en sortie DIX 45 direction horizontale 1 gauche 0 droite DIY 45 direction verticale 1 haut 0 bas DO7 0 23 d calage vertical de l cran 0 255 DX7 DX0 36 abscisse destination 8 bits poids faible DX8 37 abscisse destination bit poids fort DY7 DYO 38 ordonn e destination 8 bits poids faible DY9 et DY8 39 ordonn e destination 2 bits poids fort E
37. R le Entr e Sortie BOX FILI BOXFIL 058 1 BASIC 5 trac d un rectangle plein GXPOS abscisse du pixel de d part GYPOS ordonn e du pixel de d part BC abscisse du pixel d arriv e DE ordonn e du pixel d arriv e rien HL Il est n cessaire d appeler SETATR 0011AH avant d utiliser cette routine BOXFIL fonctionne dans les SCREEN 2 4 Pixel SET PSET 057 5 BASIC 8 allumage d un pixel l cran BC abscisse du pixel allumer DE ordonn e du pixel allumer rien HL est n cessaire d appeler SETATR 0011 avant d utiliser cette routine PSET fonctionne dans les SCREEN 2 8 PAINT PAINT 059E3H ROM BASIC MSXI1 remplissage d une surface l cran BC abscisse du pixel o commence le remplissage DE ordonn e du pixel o commence le remplissage A couleur de motif remplir idem couleur de peinture de SCREEN 2 rien Modifie Note Il est n cessaire d appeler SETATR 0011AH puis PNTINI 00129 avant d utiliser cette routine PAINT fonctionne dans les SCREEN 2 8 Un exemple d utilisation 10 CLEAR 100 amp HD000 20 AD amp HD000 30 READ AS IF a lt FIN gt THEN 100 40 POKE AD amp H A AD AD 1 GOTO 30 100 SCREEN 5 2 1 1 CLS LINE amp HSF amp HSF amp H90 amp H90 7 B DEFUSR amp HD000 PRINT USR 0 110 GOTO 110 1000 DATA 3E 09 CD 1A 01 01 80 00 11 80 00 3E
38. l inverse du bit 8 du registre 3 Vous me suivez bien codent les 6 bits de poids fort de l adresse du d but de la table des formes Le fonctionnement est le m me que sur MSX1 voir ci dessus L adresse varie entre 0 et 1 800 514 513 512 51 510 89 58 57 5 5 2 Sur MSX1 S14 S7 S13 Sur MSX2 S7 S14 Registre 6 Sur MSX1 P14 P16 P11 P13 Sur MSX2 P11 PI6 Registre 7 TCO TC3 BD0 BD3 n existe pas codent les 7 bits de poids fort de l adresse du d but de la table des attributs de sprites L adresse r elle s obtient donc en multipliant le contenu du registre 5 par 80H Par exemple si l on lit 037H dans le registre 5 l adresse du d but de la table des attributs de sprites est 037H 80H 1B80H L adresse peut varier entre 0 et 3F80H s utilisent avec S15 et S16 du registre 11 du V9938 Ces 10 bits codent l adresse du d but de la table des attributs de sprites comme sur MSX1 voir ci dessus L adresse peut varier entre 0 et 1 00 P16 PIS 14 12 MSX1 MSX2 n existent pas codent les 3 bits de poids fort de l adresse du d but de la table de g n ration des sprites en VRAM L adresse v ritable s obtient donc en multipliant la valeur de ces 3 bits par 800 Par exemple si les bits sont 100 soit 4 en la table des formes de sprites se trouve 04 800 2000
39. ordonn e du pixel origine 0 7 DX6 DX5 4 DX3 DX2 DX1 abscisse destination 0 0 0 0 0 0 0 DX8 0 511 abscisse du pixel destination En SCREEN 5 et 7 le bit de poids faible est perdu En SCREEN 6 les bits DXO et 1 sont perdus DY5 DY4 2 DY1 DYO ordonn e destination 0 DY9DY8 0 1023 ordonn e du pixel destination NY7 NY6 5 4 2 NYO d placement vertical 0 0 0 0 0 0 NY9 NY8 0 1023 nombre de pixels copier dans la direction verticale 0 0 0 DIY DIX 0 0 param tres 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM direction verticale pour NY 0 bas 1 haut direction horizontale pour NX 0 droite 1 gauche pour ex cuter l instruction voici la marche 1 charger les registres ci dessus 2 mettre 11100000B dans le registre 46 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Une fois l instruction termin e les registres su pr
40. tout appel au hook H ERAF DiSPlay FuNction Key DSPEFNK 000 MSX1 2 affichage des touches de fonction rien rien tout appel au hook H DSPF force screen TO TEXT mode TOTEXT 000D2H ROM MSX1 1 passage de mode graphique en mode texte OLDMOD mode texte dans lequel nous tions avant le passage en mode graphique Nous retournons dans ce mode rien tout appel au hook H TOTE Cette routine n est pas modifi e sur MSX2 mais elle appelle CHGMDP et passe donc par la Sub ROM 00005 00008 GTSTCK Nom Adresse Type R le Entr e Sortie Modifie Note GTTRIG Nom Adresse Type R le Entr e Sortie Modifie Note GeT 8 status GTSTCK 000DSH ROM MSXI1 1 renvoi de la direction actuelle du joystick num ro du joystick 0 3 A direction du joystick tout le joystick num ro 0 correspond au clavier les quatre fl ches la direction du joystick est un nombre de 0 8 812 Lors de l utilisation du clavier comme joystick 0 1 faut appuyer simultan ment sur deux fl ches afin 7 0 3 d obtenir une diagonale Par exemple fl che vers le bas et fl che vers la droite donnent 4 654 GeT TRIGger button status GTTRIG 000D8H ROM MSX1 1 renvoi de l tat du bouton de tir A num ro du bouton de tir 0 4 A OFFH si le bouton n est pas enfonc 0 si ce n est pas le cas AF le bouton de tir 0 corresp
41. 00159H SUBROM MSX2 modification de tous les param tres d finis par l instruction Basic SCREEN HL pointeur de texte Basic HL pointeur r actualis tout WIDTH Screen WIDTHS 0015DH SUBROM MSX2 modification de la largeur de l cran HL pointeur de texte Basic HL pointeur r actualis tout VDP VDP 00161H SUBROM MSX2 criture dans un registre du VDP HL pointeur de texte Basic HL pointeur r actualis tout 00165 00169 0016DH 00171H VDPF Nom Adresse Type R le Entr e Sortie Modifie BASE Nom Adresse Type R le Entr e Sortie Modifie BASEF Nom Adresse Type R le Entr e Sortie Modifie VPOKE Nom Adresse Type R le Entr e Sortie Modifie VDP Fetch VDPF 00165H SUBROM MSX2 lecture d un registre du VDP HL pointeur de texte Basic HL pointeur r actualis tout BASE BASE 00169H SUBROM MSX2 criture dans un registre base du VDP HL pointeur de texte Basic HL pointeur r actualis tout BASE Fetch BASEF 0016DH SUBROM MSX2 lecture d un registre base du VDP HL pointeur de texte Basic HL pointeur r actualis tout Video POKE VPOKE 00171H SUBROM MSX2 criture dans la m moire vid o HL pointeur de texte Basic HL pointeur r actualis tout 00175 00179 0017DH 0018 VPEEK Nom Adresse
42. 2 CLO donnent la couleur 0 MXD DIY DIX MSX2 MSX2 MSX2 Registre de donn es pour les commandes du V9938 Nous verrons le d tail des bits dans le chapitre 5 8 Les commandes du V9938 Registre 46 CMO CM3 CM3 CM2 CMO 103 102 LOI 100 d finissent la commande du V9938 ex cuter LOO LO3 contiennent le code de l op rateur logique utilis 5 7 LES REGISTRES READ ONLY DU V9938 Voici la liste compl te tous les registres d tat lt status register gt accessibles en lecture l utilisateur et la signification des informations qu ils contiennent Registre 0 F 5S C SNO SN4 Registre 1 F 5S SN4 SN3 SN2 SN1 SNO chaque fois que le registre est lu ce bit passe 0 MSX2 MSX1 MSX2 lorsque 5 sprites 9 dans les SCREEN 5 8 se trouvent sur la m me ligne ce bit passe 1 quand 2 sprites entrent en collision ce bit passe 1 donnent le num ro du 5 me sprite ou du 9 me dans les SCREEN 5 8 lorsque le flag 55 se trouve 1 FL LPS ID4 103 02 1 1 0 MSX2 FL LPS IDO ID3 FH flag du crayon optique Pour que ce dernier fonctionne 1 faut que le bit IE2 soit 1 ce bit passe 1 lorsque le crayon optique d tecte de la lumi re Ce bi
43. 511 0 15 30 SPRITES 0 CHR amp HFF 40 FOR T 255 50 SPRITE 0 0 8 60 NEXT 70 GOTO 40 puis celui ci 10 SCREEN 7 COLOR 10 0 0 20 LINE 0 0 511 0 15 30 SPRITES 0 amp HFF 40 FOR I 0 TO 255 50 SPRITE 0 I 255 8 REM ici Y 255 60 NEXT 70 GOTO 40 Il existe deux modes de fonctionnement des sprites bien distincts Le V9938 choisit automatiquement le mode ad quat suivant le mode cran En SCREEN 1 2 et 3 c est le mode 1 appel aussi mode restreint qui correspond au MSX1 alors qu en SCREEN 4 8 c est le mode 2 ou mode tendu MSX2 Le mode 1 MSX1 MSX2 Fonctionnement Dans ce mode il peut y avoir 32 sprites l cran num rot s de 0 31 Plus un sprite a un num ro faible plus il est prioritaire Ceci signifie que si le sprite n 3 croise le sprite n 16 on verra le sprite n 3 passer dessus lorsque des pixels des deux sprites se trouveront aux m mes coordonn es c est les pixels du sprite n 3 qui seront affich s 4 sprites peuvent au maximum se trouver sur la m me ligne partir du 5 me sprite toutes les portions communes aux 5 sprites disparaissent sur le ou les sprites de plus faible priorit Param tres Matrice des sprites bit 1 51 du registre 1 du VDP SI 0 sprites 8 sur 8 SI 1 sprites 16 sur 16 Taille des sprites bit 0 MAG du registre 1 du VDP MAG 0 taille normale MAG 1 taille d
44. 7 5 A 29 L 9 9 H ra U N ra ra Ne ra FA b ra MSXI1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX2 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MLTNAM MLTPAT MNROM MODE MUSICF NAMBAS NEWKEY NLONLY NOFUNS NTMSXP NULBUF OLDKEY OLDLIN OLDSCR OLDTXT ONEFLG ONELIN ONGSBF OPRTYP PADX PADY PARMI PARM2 PATBAS PATWRK PDIREC PLYCNT PRMFLG PRMLEN PRMLN2 PRMPRV PRMSTK PROCNM PRSCNT PTRFIL PTRFLG 9 OF9SIH 0 922 5 0F87CH 0F7B7H 0F417H 0F862H 0FBDAH 0F6BEH 6 0F6BBH 0F6B9H 0FBD8H 0F664H 0FC9DH 0FC9CH 0F6E8H 0F750H 0F926H 0FC40H 0F953H 0FB40H 0F7B4H 0F6E6H 0F74EH 0F74CH 0F6E4H 0FD89H 0FB35H 0F864H 0F6A9H Z Mb ND ND N N N N 100 100 D N N Ne e c N N MSX1 MSX1 MSX2 MSX2 MSXI1 MSXI1 MSXI1 PUTPNT QUEBAK QUETAB QUEUEN QUEUES RAWPRT REPCNT REQSTP RGOSAV RGISAV RG2SAV RG3SAV RG4SAV RGS
45. Appel Fonct OFFO2H Appel Fonct OFFO7H HREAD Appel Fonct OFFOCH H MAIN Appel Fonct H DOGR routine DOGRPH DO GRaPH utilis e par les fonctions graphiques du Basic permet de d tourner la routine routine PRGEND lt PRoGram END y appel e la fin de l ex cution d un programme Basic permet n importe quelle action avant de rendre la main l utilisateur routine PRinT utilis e lors de l affichage par le Basic d un message d erreur permet de traiter les erreurs directement la fin de la routine affichant un message d erreur sous Basic permet une action suppl mentaire apr s une erreur routine READY utilis e chaque fois que le message Ok ou le prompt d fini par l utilisateur sur MSX2 est affich l cran permet de faire beaucoup de choses par exemple provoquer l mission d un bref bip sonore chaque affichage de H MAIN routine MAIN MAIN entry utilis e chaque acc s l interpr teur Basic autrement dit en permanence sous Basic permet de programmer une interruption par exemple H DIRD Appel Fonct OFFI6H Appel Fonct OFFIBH Appel Fonct OFF20H H
46. CLS 20 30X 25 Y 117 C 6 PSET X Y 7 FOR I 1 TO 1000 NEXT 40 INT Y 32 256 INT X 8 8 Y 32 4 C 16 X MOD 4 lt 2 C X 4 gt 1 140 GOTO 140 Pour ceux qui d sirent profiter des possibilit s offertes par la table des noms sachez que chaque octet de cette table contient le num ro de la forme utiliser Seulement on n utilise que deux lignes de la forme suivant la r gle lignes O et VRAM de 00800H 0081FH lignes 2et3 VRAM de 00820H 0083FH lignes 4 et 5 VRAM de 00840H 0085 lignes 6et7 VRAM de 00860H 0087FH lignes O et 1 VRAM de 00880H 0089FH lignes 2 et 3 VRAM de 008A0H 008BFH et ainsi de suite Voici un nouvel exemple Basic utilisant cette technique 10 SCREEN 3 COLOR 10 1 1 CLS 20 30 TABLE DES FORMES FORME N 0 40 0 amp HA8 1 amp H8A 2 amp HA8 3 amp H8A VPOKE 4 amp HAS 5 amp H8A 6 amp HA8 7 amp H8A 50 60 TABLE DES NOMS JOLI CADRE EN BRIQUES 70 FOR I 0 TO 31 amp H800 I 0 NEXT 80 FOR 0 TO 31 amp HA00 I 0 NEXT 90 FOR I amp H800 TO amp HA00 STEP 32 VPOKE I 0 NEXT 100 FOR I amp H81F TO amp HAIF STEP 32 VPOKE I 0 NEXT 110 120 CIRCLE 127 98 50 14 PAINT 127 98 14 130 140 GOTO 140 Notez qu en SCREEN 3 lorsque vous utilisez les instruct
47. DY7 DY6 DY5 DY4 DY2 DY1 DY0 ordonn e 0 0 0 0 DY9DY8 0 1023 ordonn e du pixel origine NET 6 5 NX2 NXO d placement horizontal 0 0 o 0 511 nombre de pixels allumer dans la direction horizontale NY6 5 4 2 NYO d placement vertical 0 0 0 0 0 0 NY9 NY8 0 1023 nombre de pixels allumer dans la direction verticale 5 4 CR2 CRI donn e SCREEN 5 et 7 seuls les bits CRO sont utilis s Ils codent la couleur d un pixel SCREEN 6 CRO et CRI codent la couleur d un pixel Les autres bits ne soont pas utilis s SCREEN 8 codent la couleur d un pixel 0 0 0 DIY DIX 0 0 param tres 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM direction verticale pour NY 0 bas 1 haut direction horizontale pour NX 0 droite 1 gauche R46 LO3 LO2 LOI 100 param tres LOO LO3 op rateur logique appliquer 0000 direct 1000 Tdirect 0001 AND 1001 TAND 0010 1010 0011 1011 0100 1100 TNOT Ex cution pour ex
48. N N NDN Ligne actuelle en mode auto Valeur de l incr mentation en mode auto Sauvegarde du pointeur de texte apr s une erreur pour RESUME Sauvegarde de l adresse de la pile apr s une erreur afin d tre dans la bonne situation au moment du RESUME Num ro de la ligne laquelle la derni re erreur s est produite Num ro de ligne actuelle Utilis dans LIST Pointeur de texte utilis par RESUME Num ro de ligne d finie par ON ERROR GOTO Flag d erreur 0 mode normal 1 traitement d erreur en cours M moire de travail pour le programme d valuation de formules Ancien num ro de ligne apr s un C un STOP ou un END Ancien pointeur de texte Le pointeur est dirig sur l instruction suivant celle o s est produit l arr t Pointeur sur le d but des variables simples Pointeur sur le d but des variables en tableaux arrays Adresse de la fin de la zone des variables Pointeur pour les DATA Modifi par RESTORE Type de variable entier cha ne simple ou double pr cision d fini par DEFSTR DEFINT DEFSNG DEFDBL pour chacune des 26 lettres de l alphabet Zone de travail pour manipuler les param tres de fonctions d finies par l utilisateur DEF FNX PRINT FNX p par exemple OF6E4H 0F6E6H 0F6E8H 0F74CH 0F74EH 0F750H 0F7B4H 0 7 5 0 7 7 0 7 8 7 OF7C4H PRMSTK PRMLEN PARMI PRMP
49. R le Entr e Sortie Modifie Note RIGHTC Nom Adresse Type R le Entr e Sortie Modifie Note SET Current SETC 0009DH SUBROM MSX2 allumage du pixel actuel CLOC abscisse du pixel actuel CMASK ordonn e du pixel actuel ATRBYT couleur du pixel rien AF Valide dans les SCREEN 3 et 5 8 Test RIGHT Current TRIGHTC MSX2 d placement d un pixel vers la droite apr s v rification de la validit des coordonn es CLOC et CMASK coordonn es du pixel actuel CLOC et CMASK nouvelles coordonn es AF Valide en SCREEN 3 uniquement RIGHT Current RIGHTC 000ASH SUBROM MSX2 d placement d un pixel vers la droite CLOC et CMASK coordonn es du pixel actuel CLOC et nouvelles coordonn es AF Valide en SCREEN 3 uniquement 000 9 O00ADH 000 Nom Adresse Type R le Entr e Sortie Modifie Note LEFTC Nom Adresse Type R le Entr e Sortie Modifie Note TDOWNC Nom Adresse Type R le Entr e Sortie Modifie Note Test LEFT Current TLEFTC 000A9H SUBROM MSX2 d placement d un pixel vers la gauche apr s v rification de la validit des coordonn es CLOC et CMASK coordonn es du pixel actuel CLOC et CMASK nouvelles coordonn es AF Valide en SCREEN 3 et 5 8 LEFT Current LEFTC 000ADH SUBROM MSX2
50. SUB lt lt UPC lt lt VDP VDPF VDPSTA VDP DR VDP DW VPEEK B LES VARIABLES SYSTEME 00105H 000B9H 00102H 000BDH 00161H 00165H 00131H 00006H 00007H 00175H ROM SUB ROM SUB SUB SUB SUB ROM ROM SUB VPOKE WIDTHS WRTCLK WRTPSG WRTSLT WRTVDP lt lt WRTVRM lt lt WSLREG Liste des variables syst me dans l ordre alphab tique 00171H 0015DH 001F9H 00093H 00014H 00047H 0012DH 0004DH 00109H 0013BH SUB SUB SUB ROM ROM ROM SUB ROM ROM ROM Nom Adresse Longueur Type ACPAGE 1 MSX2 ARG 0 847 16 MSX1 0F6C4H 2 MSX1 2 7 5 2 MSXI ASPCTI 4 2 MSX1 ASPCT2 0F40DH 2 MSX1 ASPECT 0 93 2 MSX1 ATRBAS 0 928 2 MSX1 ATRBYT 0F3F2H 1 5 AUTFLG 1 MSX1 AUTINC _ 0F6ADH 2 MSX1 AUTLIN OF6ABH 2 5 1 MSX2 BAKCLR 1 5 BASROM 1 MSXI BDRCLR 1 5 BOTTOM OFC48H 2 MSX1 BRDATR 2 1 5 0 55 256 MSXI BUFEND OFCI8H 0 MSXI BUFMIN 0 55 1 MSXI Nom Adresse Longueur Type CAPST CASPRV CENCNT CGPBAS CGPNT CLIKFL CLIKSW CLINEF CLMSLT CLOC CMASK CNPNTS CNSDFG CODSAV CONLO CONSAV CONTXT CONTYP CPCNT8 OFCABH 0F933H 0 924 0F91FH OFAFOH 9 0F935H 2 OF92AH 0 92 0F936H OF3DEH
51. aux interruptions hard 0003 Nom Adresse Type R le Entr e Sortie Modifie 0003EH INIFNK Nom Adresse Type R le Entr e Sortie Modifie 00041H DISSCR Nom Adresse Type R le Entr e Sortie Modifie 00044H ENASCR Nom Adresse Type R le Entr e Sortie Modifie INITialize Input Output INITIO 0003BH ROM MSX1 1 initialisation du PSG pour les entr es sorties rien rien tout INItialize FuNction Key INIFNK 0003EH ROM MSX1 1 r initialisation des touches de fonction leur valeur de d part rien rien tout DISable SCReen display DISSCR 00041H ROM MSX1 1 Extinction de l cran rien rien AF BC ENAble SCReen display ENASCR 00044H ROM MSX1 1 Allumage de l cran rien rien AF BC 00047 WRTVDP Nom Adresse Type R le Entr e Sortie Modifie Note 0004 RDVRM Nom Adresse Type R le Entr e Sortie Modifie Note 0004DH WRTVRM Nom Adresse Type R le Entr e Sortie Modifie Note WRiTe VDP WRTVDP 00047H ROM MSX1 2 criture dans un registre du VDP C num ro du registre du VDP 0 23 et 32 46 B valeur crire rien AF B appel la Sub ROM si le bit EV du registre 0 du VDP est modifi ou si le num ro de registre est compris entre 8 et 46 ReaD VRaM RDVRM 0004AH ROM MSX1 1
52. d placement d un pixel vers la gauche CLOC et CMASK coordonn es du pixel actuel CLOC et nouvelles coordonn es AF Valide en SCREEN 3 uniquement Test DOWN Current TDOWNC 000B1H SUBROM MSX2 d placement d un pixel vers le bas apr s v rification de la validit des coordonn es CLOC et CMASK coordonn es du pixel actuel CLOC et nouvelles coordonn es AF Valide en SCREEN 3 et 5 8 000 5 000 9 000BDH DOWNC Nom Adresse Type R le Entr e Sortie Modifie Note TUPC Nom Adresse Type R le Entr e Sortie Modifie Note UPC Nom Adresse Type R le Entr e Sortie Modifie Note DOWN Current DOWNC 000 5 5 MSX2 d placement d un pixel vers le bas CLOC et CMASK coordonn es du pixel actuel CLOC et nouvelles coordonn es AF Valide en SCREEN 3 uniquement Test UP Current TUPC 000B9H SUBROM MSX2 d placement d un pixel vers le haut apr s v rification de la validit des coordonn es CLOC et CMASK coordonn es du pixel actuel CLOC et nouvelles coordonn es AF Valide en SCREEN 3 et 5 8 UP Current UPC 000BDH SUBROM MSX2 d placement d un pixel vers le haut CLOC et CMASK coordonn es du pixel actuel CLOC et nouvelles coordonn es AF Valide en SCREEN 3 uniquement 000 000 5 000 9 SCANR Nom A
53. le Entr e Sortie Modifie Note CALATR Nom Adresse Type R le Entr e Sortie Modifie Note CLeaR SPRites CLRSPR 000FSH SUBROM MSX2 initialisation des sprites SCRMOD SCREEN actuel rien tout La table des formes de sprites est effac e les num ros de sprites sont mis aux num ros de plans la couleur des sprites est mise celle de la couleur du texte FORCLR et la position des sprites est r gl e 217 CALculate address of PATtern table CALPAT 000FOH SUBROM MSX2 calcul de l adresse du d but des formes d un sprite num ro de plan du sprite HL adresse cherch e AF DE HL Idem CALPAT en main ROM CALculate address of ATRibute table CALATR 000FDH SUBROM MSX2 calcul de l adresse du d but des attributs d un sprite num ro de plan du sprite HL adresse cherch e AF DE HL Idem CALATR en main ROM 00101 00105 00109 GSPSIZ Nom Adresse Type R le Entr e Sortie Modifie Note GETPAT Nom Adresse Type R le Entr e Sortie Modifie WRTVRM Nom Adresse Type R le Entr e Sortie Modifie Note Get SPrite SIZE GSPSIZ 00101H SUBROM MSX2 calcul de la taille des sprites rien A nombre d octets pour un sprite 8 ou 32 AF Idem GSPSIZ en main ROM GET PATtern GETPAT 00105H SUBROM MSX2 recherche du pattern d un caract re A code A
54. ligne permet de d tourner la routine H NOTR routine NOTRSV token NOT ReSerVed la suite de caract res examin e ne constitue pas un mot clef permet de d tourner la routine H SNGF routine SNGFOR acc s aux fonctions math matiques BCD permet d installer de nouvelles routines math matiques 5 routine NEWSTT NEW STaTement passage une nouvelle instruction Basic permet de d tourner la routine H GONE routine GONE2 instruction de d routement en cours permet de d tourner la routine H CHRG routine CHRGET CHaRacter GET saisie d un caract re au clavier permet de d tourner la routine OFF4DH Appel Fonct 0 52 Appel Fonct 0 57 Appel Fonct OFFSCH Appel Fonct OFF61H Appel Fonct OFF66H Appel Fonct OFF6BH Appel Fonct HRETU routine RETURN lt RETURN from subroutine gt utilis e lors de l instruction Basic RETURN permet de d tourner la routine H PRTF routine PRTFLD utilis e lors de l instruction Basic PRINT permet de d tourner la routine H COMP routine COMPRT boucle interne l instruction Basic PRINT permet de d tourner la routine routine FINPRT lt FINal PRin
55. option sont laiss es la discr tion du constructeur La touche DEAD n existe pas sur certains claviers sur d autres elle ne porte aucune inscription PHYSsical Disk I O PHYDIO 00144H ROM MSX1 1 rien sauf appel au hook rien rien rien appel au hook 00147 0014 0014DH FORMAT Nom Adresse Type R le Entr e Sortie Modifie Note ISFLIO Nom Adresse Type R le Entr e Sortie Modifie Note OUTDLP Nom Adresse Type R le Entr e Sortie Modifie Note disk FORMATter FORMAT 00147H ROM MSX1 rien sauf appel au hook ne rien rien rien appel au hook IS FiLe I O ISFLIO 0014AH ROM MSX1 1 v rification des entr es sorties rien indicateur z ro 0 entr e sortie en cours AF appel au hook H ISFL Do Line Printer OUTDLP 0014DH ROM MSXI1 1 sortie d un caract re sur imprimante code ASCII du caract re sortir rien F Par rapport LPTOUT cette routine transforme les TAB en espaces transforme les caract res graphiques lors de l utilisation d une imprimante non MSX et saute device error lors d un CTRL STOP 00150 00153 00156 00159 Nom Adresse Type R le Entr e Sortie Modifie GETVC2 Nom Adresse Type R le Entr e Sortie Modifie KILBUF Nom Adres
56. part DE ordonn e du pixel de d part GXPOS abscisse du pixel d arriv e ordonn e du pixel d arriv e ATRBYT couleur utiliser LOGOPR op rateur logique appliquer rien AF Valide dans les SCRENN 5 8 Voir DOGRPH pour l explication de LOGOPR CHanGe MODe CHGMOD 000D1H SUBROM MSX2 changement de mode d cran SCREEN X SCREEN d sir 0 8 rien tout La palette n est pas initialis e par cette routine utilisez la routine CHGMDP 001 5 en Sub ROM si vous avez besoin de l initialisation de la palette 00005 000D9H INITXT Nom Adresse Type R le Entr e Sortie Modifie Note INIT32 Nom Adresse Type R le Entr e Sortie Modifie Note INItialize TeXT mode 000DSH SUBROM MSX2 initialisation du mode texte 40x24 SCREEN 0 TXTNAM adresse de la table des noms TXTCGP adresse de la table des formes rien tout Il n est pas obligatoire de d finit TXTNAM et TXTCGP car le MSX initialise leur valeur l allumage INItialize Text 32 mode INIT32 000D9H SUBROM MSX2 initialisation du mode texte 32x24 SCREEN 1 T32NAM table des noms T32CGP table des formes T32COL table des couleurs T32ATR table des attributs de sprites T32PAT table des formes de sprites rien tout n est pas obligatoire de d finit T32NAM etc car le MSX initialise leur valeur l allumage 000DDH 000
57. rateur logique appliquer 1000 Tdirect 1001 TAND 1010 TOR 1011 TXOR 1100 TNOT 0000 direct 0001 AND 0010 0011 0100 pour ex cuter l instruction voici la marche suivre 1 charger les registres ci dessus sauf le 46 2 mettre 1001B 09H les 4 bits de poids fort du registre 46 charger les 4 bits de poids faible avec le code de l op rateur logique d sir 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 il faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif idem modif idem INSTRUCTION LMMV Logical Move to Memory from VDP Sch ma DX DY NX V9938 NY VRAM Fonction permet de remplir la m moire vid o une seule donn e la diff rence des routines du Bios BIGFIL ou la m moire vid o est d finie par des coordonn es en X et Y Le remplissage se fait pixel par pixel qui autorise l emploi d un op rateur logique V9938 Destination Registres R36 R37
58. traitement d une erreur sous Basic permet de traiter automatiquement une erreur OFFB6H H LPTO Nom H LPTO Appel routine LPTOUT lt Line PrinTer OUTput gt sortie d un caract re sur imprimante Fonct permet d utiliser une imprimante non MSX H LPTS Nom H LPTS Appel routine LPTSTT Line PrinTer STaTus test de l tat de l imprimante Fonct permet d utiliser une imprimante non MSX OFFCOH H SCRE Nom H SCRE Appel routine SCREEN set SCREEN utilis e lors de l instruction Basic SCREEN Fonct permet de d tourner la routine OFFCSH H PLAY Nom H PLAY Appel routine PLAY utilis e lors de l instruction Basic PLAY Fonct permet de d tourner la routine 5 LE PROCESSEUR GRAPHIQUE V9938 5 1 AVERTISSEMENT Avec le processeur graphique nous abordons un domaine plus sp cifique au MSX2 Les possesseurs de MSX1 trouveront n anmoins tous les renseignements n cessaires pour faire fonctionner correctement le processeur vid o du MSX1 V9929 ne tenant compte que des modes d cran du SCREEN 0 1 2 et 3 Quant aux registres ils seront d taill s aussi bien dans le cas du MSX1 que du 5 2 5 2 INTRODUCTION AU V9938 Le processeur vid o V9938 ou VDP pour Video Display Processor est sans aucun doute l l ment le plus excitant du syst me MSX2 Avec sa m moire vid o norme 128 Ko il offre une r solution graphique extraordinaire pour du mat riel grand public puis
59. 0 959 0 97 0 975 0 9 5 75 5 5 OFAF7H OFAFDH OFAFEH CRCSUM CSTCNT CSCLXY CSAVEA CSAVEM CXOFF CYOFF LOHMSK LOHDIR LOHADR LOHCNT SKPCNT MOVCNT PDIREC LFPROG RTPROG MCLTAB MCLFLG QUETAB QUEBAK VOICAQ VOICBQ VOICCQ R2SIQ DPPAGE ACPAGE AVCSAV EXBRSA ROMA MODE D ra N N N ra N N N N ra ra N N ra N 128 128 128 D e N e Somme du cercle Total de d part M moire de travail pour Adresse du premier pixel de couleur diff rente Utilis par l instruction PAINT Masque du premier pixel de couleur diff rente Utilis par l instruction PAINT D calage horizontal depuis la position sauvegard e D calage vertical depuis la position sauvegard e M moire de travail pour PAINT Idem ci dessus Idem ci dessus Idem ci dessus Idem ci dessus Idem ci dessus Direction dans laquelle on peint M moire de travail pour PAINT Idem ci dessus M moire de travail pour lt MACLNG gt Flag indiquant un PLAY ou un DRAW Quatre queues de six octets chacune Utilis par lt BCKQ gt Queue musicale pour la voie Queue musicale pour la voie B Queue musicale pour la voie C Queue d entr e du RS 232 Page affich e Page active sur laquelle on crit Sauvegarde du port de c
60. 0 0 0 0 0 0 NX8 0 511 nombre de pixels allumer dans la direction horizontale En SCREEN 5 et 7 le bit NX0 est perdu En SCREEN 6 les 2 bits et NX1 sont perdus 7 5 4 NY2 NN d placement vertical o 0 NY9 0 1023 nombre de pixels allumer dans la direction verticale CR5 4 CR2 donn e SCREEN 5 et 7 les bits CR4 codent la couleur du pixel d abscisse pair alors que CR0 CR3 donnent la couleur du pixel d abscisse impalr SCREEN 6 CR6 codent la couleur du premier pixel dont l abscisse doit toujours tre multiple de 4 CR4 et CRS donnent la couleur du pixel imm diatement droite du pixel pr c dent et ainsi de suite pour les bits C2 et C3 d une part et d autre part SCREEN 8 CRO codent la couleur d un pixel 0 0 MXD 0 DIY DIX 0 0 param tres MXD 0 pour s lectionner la principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM DIY direction verticale pour NY 0 bas 1 haut DIX direction horizontale pour NX 0 droite gauche pour ex cuter l instruction voici la marche 1 charger les registres ci dessus 2 mettre 11110000B le registre 46 3 env
61. 0 511 255 511 OR R 0 512 255 512 2 0 767 255 767 OR OR OR 0 768 255 768 3 0 1023 255 1023 R OR OR SCREEN 7 k K K K K 0 0 511 0 0 0 255 511 255 0 256 511 256 page 1 0 511 511 511 00000H 08000H 10000H 18000H 20000H VRAM 00000H 10000H 20000H SCREEN 6 k o lt ok gt k gt k gt k 0 0 511 0 0 0 255 511 255 K K K K K K R OR OR 0 256 511 256 page 1 0 511 511 511 k ke R R K K K K K K K K K K ok gt k gt k OR 0 512 511 512 2 0 767 511 767 0 768 511 768 page 3 0 1023 511 1023 ok ok gt k gt k OR SCREEN 8 0 0 255 0 page 0 0 255 255 255 ke ke ke K K K 0 256 255 256 page 1 0 511 255 511 00195 BLTVM BLock Transfert Vram from Memory Nom BLTVM Adresse 00195H SUBROM Type MSX2 R le transfert de la m moire centrale vers la m moire vid o Entr e 0 562 Sortie rien Modifie tout Note Exemple d utilisation COPY amp HD000 16 32 ORG 0 000 EXTROM EQU 0015 BLTVM EQU 00195 DPTR EQU 0 562 adresse en m moire centrale DX EQU DPTR 4 abs
62. 00171H ROM MSX2 transfert dans le VDP de l adresse de la case m moire o doit s effectuer l criture HL adresse d criture 00000H 0FFFFH rien AF New ReaD VRaM NRDVRM 00174H ROM MSX2 lecture d une case m moire de VRAM HL adresse de la case m moire 00000 contenu de la case m moire lue F 00177 NWRVRM Nom Adresse Type R le Entr e Sortie Modifie New WRite VRaM NWRVRM 00177H ROM MSX2 criture dans une case m moire de VRAM HL adresse de la case m moire 00000H 0FFFFH A donn e crire rien AF Voici en plus des routines du Bios quelques entr es dans la ROM Basic Celles ci sont garanties par ASCII How to use graphic routines of MSX du 05 02 86 058 LINE Nom Adresse Type R le Entr e Sortie Modifie Note LINE LINE 058FCH ROM BASIC MSX1 Trac d une ligne GXPOS abscisse du pixel de d part GYPOS ordonn e du pixel de d part BC abscisse du pixel d arriv e DE ordonn e du pixel d arriv e rien BC DE HL Il est n cessaire d appeler SETATR 0011AH avant d utiliser cette routine LINE fonctionne dans les SCREEN 2 8 058 057 5 059 BOXFIL Nom Adresse Type R le Entr e Sortie Modifie Note PSET Nom Adresse Type R le Entr e Sortie Modifie Note PAINT Nom Adresse Type
63. 020H 00100000B X 00A09H contient 80 ou 050 or 050 01010000B x X 00A0AH contient 136 ou 088 088H 10001000B X X contient 136 ou 088 088H 10001000B X X contient 248 ou OF8H 11111000B X X X X X O0AODH contient 136 ou 088 088H 10001000B X X contient 136 ou 088 088H 10001000B X X contient 0 ou 000H or 000 00000000B Les deux bits de poids faible doivent toujours rester 0 et ne sont de toute mani re jamais pris compte car tout caract re se trouve d fini dans une matrice 6 sur 8 Red finissons pr sent le caract re A faisons la d marche en sens inverse X X X X X X 11111100B OFCH X X x 10100100B 0 4 X donc en 10000100B 084 soit les valeurs X X x 10100100B 4 X X X binaire 10100100B OA4H en hexad cimal X X 10010100B 094H X X X X 11001100B 0CCH X X 10110100B 0B4H Il suffit pr sent d ex cuter le petit programme suivant 10 SCREEN 0 WIDTH 40 CLS AD amp HA08 20 FOR I 0 TO 7 READ A VPOKE ADHI VAL amp H gt A NEXT 30 PRINT AAAA 50 DATA 4 84 A4 A4 94 CC 4 Tous les de l cran se transforment en signes cabalistiques d un sot risme certain Un simple SCREEN 0 fera revenir les choses la normale SCREEN 0 80 colonnes MSX2 R solution Texte 6 x 8 80 caract res sur 24 ou 26 5 lignes Couleurs 4 couleur
64. 100 100 50 200 30 40 FOR 1 0 TO 50 50 OUT C OUT C amp H80 23 60 NEXT 70 FOR I 50 TO 0 STEP 1 80 OUT OUT amp H80 23 90 NEXT 99 GOTO 40 L quivalent en langage machine serait ORG 0C000H EXTROM EQU 0015 CHGMOD EQU 000D1H CHGCLR EQU 00062 CLS EQU 000C3H NVBXLN EQU 000C9H BREAKX 000 7 TOTEXT EQU 000D2H FORCLR EQU BAKCLR EQU BDRCLR EQU GXPOS EQU OFCB3H GYPOS EQU 5 EQU 2 LOGOPR EQU 0FB02H 2 INITIALISATION ECRAN COULEURS ETC DEBUT LD 8 LD IX CHGMOD CALL EXTROM LD 00 LD LD 0 LD BAKCLR LD BDRCLR TRACE D UN RECTANGLE LD 060H LD DE 060H LD 090 LD GXPOS HL LD GYPOS LD LD ATRBYT A LD LOGOPR A LD IX NVBXLN CALL EXTROM BOUCLE PRINCIPALE LOOP CALL UP CALL JR C OUT CALL DOWN CALL BREAKX JR C OUT JR LOOP CALL UP ER A 7 LD INC A LD 040 LD 040 SUB OUT LD 080 017 OUT CALL WAIT DINZ RET DOWN LD B 040H LOOP2 LD 040 OUT LD 080 017 OUT CALL WAIT DJNZ LOOP2 RET WAIT PUSH BC LD 002 DEC LD OR Ip NZ HEP POP BC RET Les quinze derniers registres du V9938 sont utilis
65. 27 106 efface l cran CLS ESC E 27 69 efface l cran CLS ESC K 27 75 efface jusqu la fin de la ligne ESC J 27 74 efface jusqu la fin de l cran ESC 1 27 108 efface toute la ligne ESC L 2776 ins re une ligne ESC M 27 77 d truit une ligne ESC 4 27 120 52 d finit un curseur de type entier ESC 5 27 120 53 teint le curseur ESC y4 27 121 52 d finit un curseur de type barre ESC y5 27 121 53 allume le curseur La s quence ESC Y est l g rement plus compliqu e utiliser faut en effet envoyer les deux octets de ESC Y 27 et 89 puis les faire suivre par deux octets qui d finissent la colonne n de colonne 020 ainsi que la ligne n de ligne 020 Affichons par exemple la cha ne gt la position 10 33 10 PRINT 27 Y AICI On envoie un CHR 27 puis Y suivi de code ASCII 42 soit 10 020 et code ASCII 65 soit 33 020H Tr s peu de gens connaissent l existence de ces codes ESC qui peuvent pourtant parfois rendre de grands services comme le d montre l exemple suivant 10 SCREEN 0 WIDTH 40 COLOR 10 0 0 CLS 20 E 27 30 FOR I 0 TO 17 PRINT LIGNE al NEXT 40 PRINT PRINT On peut effacer les derni res lignes PRINT 50 PRINT Comme dans une fen tre PRINT 60 PRINT TAB 5 gt aussi rapidement qu avec un CLS gt 70 FOR I 1 TO 1500 NEXT
66. 32 mode SETT32 000E9H SUBROM MSX2 passage direct en mode texte 32x24 T32NAM table des noms T32CGP table des formes T32COL table des couleurs T32ATR table des attributs de sprites T32PAT table des formes de sprites rien tout n est pas obligatoire de d finit T32NAM etc car le MSX initialise leur valeur l allumage O00EDH 000 SETGRP Nom Adresse Type R le Entr e Sortie Modifie Note SETMLT Nom Adresse Type R le Entr e Sortie Modifie Note SET GRaPhic mode SETGRP 000EDH SUBROM MSX2 passage direct en mode graphique 256x192 GRPNAM table des noms GRPCGP table des formes GRPCOL table des couleurs GRPATR table des attributs de sprites table des formes de sprites rien tout Il n est pas obligatoire de d finit GRPNAM etc car le MSX initialise leur valeur l allumage SET mode SETMLT 000F1H SUBROM MSX2 passage direct en mode graphique multicolore MLTNAM table des noms MLTCGP table des formes MLTCOL table des couleurs MLTATR table des attributs de sprites MLTPAT table des formes de sprites rien tout Il n est pas obligatoire de d finit MLTNAM etc car le MSX initialise leur valeur l allumage 000 5 000 9 000FDH CLRSPR Nom Adresse Type R le Entr e Sortie Modifie Note CALPAT Nom Adresse Type R
67. 41H code du A 01801 32 ou 020 code de 01802 66 ou 042 code du lt B gt 01803H 69 ou 045H code du E 01804H 78 ou 04 code du lt N gt Le reste de la table serait alors rempli de 32 020H code de l espace ou ventuellement de 0 La table des formes contient elle 2048 octets regroup s par paquets de 8 octets Ce qui donne 2048 divis par 8 soit 256 paquets Chaque paquet correspond un caract re code ASCII et en d finit la forme Par exemple le 32 me paquet code le caract re espace et ressemble ceci Paquet n 32 donc octet 32 8 256 100 On trouvera donc l information qui nous int resse l adresse de d but de la table des formes 00000H plus 100H soit 0100 Les cases m moire vid o de 00100 00107 sont toutes remplies avec des 0 espace rien Un simple VPOKE amp H100 255 devrait vous convaincre de l utilit de bien conna tre le processeur vid o Notez que dans ce mode tous les bits peuvent tre utilis s pour d finir un caract re voir les modes 40 et 80 colonnes car les caract res se trouvent cette fois d finis dans une matrice 8 sur 8 Essayez donc le programme Basic suivant tout fait d sopilant 10 SCREEN 1 WIDTH 32 20 LOCATE 12 12 PRINT COUCOU 30 FOR J 0 TO 7 40 FOR 1 0 TO 7 50 amp H100 I 277 60 NEXT L J 70 GOTO 30 Ce que l on f ait avec 7 lignes Basic c est fou Apr
68. 511 ou 255 pour X 191 ou 211 pour Y la routine prend la valeur maximale comme nouvelle coordonn e 00091 00095 00099 Nom Adresse Type R le Entr e Sortie Modifie Note READC Nom Adresse Type R le Entr e Sortie Modifie Note SETATR Nom Adresse Type R le Entr e Sortie Modifie MAP X amp Y to Current 00091H SUBROM MSX2 transformation des coordonn es d un pixel BC abscisse du pixel allumer DE ordonn e du pixel allumer en SCREEN 3 HL et CLOC adresse en m moire vid o du pixel A et CMASK masque appliquer l octet ci dessus pour allumer le pixel qui nous int resse dans les SCREEN 5 8 HL et CLOC abscisse du pixel allumer A et CMASL ordonn e du pixel allumer F Valide dans les SCREEN 3 et 5 8 READ Current READC 00095H SUBROM MSX2 lecture de l attribut du pixel actuel CLOC abscisse du pixel actuel CMASK ordonn e du pixel actuel A attribut AF Valide dans les SCREEN 3 et 5 8 SET ATRibute SETATR 00099H SUBROM MSX2 modification de l octet d attribut ATRBYT A valeur du nouvel attribut indicateur carry 1 attribut non valide gt 15 sauf en SCREEN 8 F 0009DH 000 5 Nom Adresse Type R le Entr e Sortie Modifie Note TRIGHTC Nom Adresse Type
69. CRUN Appel Fonct OFF25H H CRUS Appel Fonct OFF2AH Non HISRE Appel Fonct H DIRD routine DIRDO DIRect DO utilis lors de l ex cution d une instruction en mode direct permet toutes les manipulations sur le mode direct du Basic HEIN routine FININT lt Function INterpretation INiTialize gt utilis e lors de la traduction d une instruction Basic par l interpr teur permet de d tourner le traitement des instructions Basic routine FINEND Function INterpretation END utilis e la fin de l interpr tation d une instruction Basic permet de d tourner la routine H CRUN routine CRUNCH transformation d une ligne Basic en mots clefs permet de d tourner la routine H CRUS routine CRUSH recherche d un mot clef dans la liste alphab tique permet de d tourner la routine HISRE routine ISRESV 15 token RESerVed d couverte d un mot clef lors de l ex cution de la routine CRUNCH permet de d tourner la routine 2 H NTFN Appel Fonct 0FF34H H NOTR Appel Fonct OFF39H H SNGF Appel Fonct 5 Appel Fonct OFF43H Non H GONE Appel Fonct OFF48H Non H CHRG Appel Fonct routine 2 utilis e lorsqu un mot clef est suivi par un num ro de
70. Fonct OFEDFH Non H ISFL Appel Fonct OFEE4H H OUTD Appel Fonct OFEEOH H CRDO Appel Fonct OFEEEH H DSKC Appel Fonct H LOPD routine lt LOoP and set DeFaulT gt initialisation de la table des variables permet de d tourner la routine H STKE routine STKERR STacK ERRor utilis e lors des instructions Basic FOR et GOSUB lors de l initialisation du Disk Basic ou du MSX DOS le MSX v rifie si ce hook a t modifi par une ventuelle cartouche utilisant le lecteur de disquette contenu de OFEDAH diff rent de Si tel est le cas le MSX saute au hook JP lorsque l installation du DOS est termin e H ISFL routine ISFLIO IS FiLe test d existence d un fichier permet de d tourner la routine H OUTD routine OUTDO OUT sortie d un caract re sur cran ou imprimante permet de d tourner la routine H CRDO routine CRDO CRIf DO mission d un CR carriage return code puis d un LF line feed code permet par exemple d adapter les sorties sur une imprimante poss dant un line feed automatique H DSKC routine DSKCHI DiSK CHaracter Input permet de d tourner la routine H DOGR Appel Fonct OFEF8H H PRGE Appel Fonct OFEFDH
71. H CMD OFEODH OFEFDH OFDCCH HNTPL OFF6BH 0 57 OFF70H 9 0 08 H FIEL OFE2BH H KILL OFDFEH H OKNO OFF75H H CRDO OFEEOH OFE7BH OFDDIH OFDEAH HCRUN OFF20H H FILO 0 85 H LIST OFF89H H OUTD OFEE4H H CRUS OFF25H HEINE OFFIBH H LOC OFE99H H PARD OFEB2H H CVD OFE49H H FING H LOF OFE9EH H PHYD 0FFA7H H CVI HEIN OFFI6H H LOPD OFEDSH OFDDBH H CVS OFE44H H FINP 5 H LPTO OFFB6H H PLAY 5 H DEVN OFECIH OFFACH 5 H POSD OFEBCH H DGET OFFE8H H FPOS OFEASH 5 OFE21H H PRGE OFEF8H H DIRD OFFIIH H MAIN OFFS2H H DOGR OFF66H OFE67H H PTRG 2 H DSKC OFEEEH OFF93H H MKD H QINL OFDEOH H DSKF 12 H GEND OFEC6H OFE30H HREAD OFFO7H H RETU H RSET H RSLF H RUNC 0FF4DH 8 0FE26H 5 5 5 D LES REGISTRES DU V9938 Contenu des registres du VDP 9938 du MSX2 registre 0 registre 1 registre 2 registre 3 registre 4 registre 5 registre 6 registre 7 registre 8 registre 9 registre 10 registre 11 registre 12 registre 13 registre 14 registre 15 registre 16 registre 17 registre 18 registre 19
72. Type R le Entr e Sortie Modifie Note 00069H CLRSPR Nom Adresse Type R le Entr e Sortie Modifie Note CHanGe CoLoR CHGCLR 00062H ROM MSX1 1 changement des couleurs l cran FORCLR couleur de texte BAKCLR couleur de fond BDRCLR couleur de marge rien tout Cette routine n est r troactive qu en mode texte Non Maskable Interrupt NMI 00066H ROM MSX1 1 Proc dure d interruption non masquable rien rien rien appel au hook H NMI CLeaR SPRites CLRSPR 00069H ROM MSX1 3 initialisation des sprites rien rien tout La table des formes de sprites est effac e les num ros de sprites sont mis aux num ros de plan la couleur des sprites est mise celle de la couleur du texte FORCLR et la position verticale des sprites est r gl e 209 pour les crans 1 3 217 pour les screen 4 8 0006 Nom Adresse Type R le Entr e Sortie Modifie Note 0006 2 Nom Adresse Type R le Entr e Sortie Modifie Note INItialize TeXT mode INITXT 0006CH ROM 3 initialisation du mode texte 40x24 SCREEN 0 TXTNAM adresse de la table des noms TXTCGP adresse de la table des formes rien tout Il n est pas obligatoire de d finir TXTNAM et TX TCGP car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si
73. VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM direction verticale pour le trac partir du pixel origine 0 la ligne partira vers le bas 1 la ligne partira vers le haut direction horizontale pour le trac partir du pixel origine 0 la ligne partira vers la droite 1 la ligne partira vers la gauche c t le plus long 0 c t horizontal 1 c t vertical 0 1 1 1 LO3 LO2 101 100 commandes op rateur logique appliquer 0000 direct 1000 Tdirect 0001 AND 1001 TAND 0010 1010 TOR 0011 XOR 1011 TXOR 0100 NOT 1100 TNOT Ex cution pour ex cuter l instruction LINE voici la marche suivre 1 charger les registres ci dessus sauf le 46 2 mettre 0111B 07H les 4 bits de poids fort du registre 46 charger les 4 bits de poids faible avec le code de l op rateur logique d sir 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem idem idem idem
74. YO MSX2 Registre 6 YO Y8 Registre 7 C0 C7 Registre 8 Registre 9 contiennent l ordonn e du point de collision des sprites l ordonn e du point o pointe le crayon optique soit le d placement vertical relatif de la souris c7 C6 Cs 4 C3 C2 er CO utilis s lors des commandes lt POINT et lt LMCM 7 6 5 BX4 BX3 2 BX0 1 1 1 1 1 8 MSX2 MSX2 MSX2 MSX2 BX0 BX8 renferment lors d une recherche commande lt SRCH V9938 l abscisse du premier point trouv 5 8 LES COMMANDES INTERNES DU V9938 Le V9938 dispose d un jeu d instructions ou commandes tout comme le 780 Dans cette partie nous allons d tailler les instructions une une et voir comment on les met en uvre Le V9938 poss de 12 instructions distinctes ainsi qu une instruction d arr t STOP Voici un tableau r capitulatif Mn monique Source Destination Signification HMMC Z80 VRAM High speed Move to Memory from YMMM VRAM Y Move to Memory from Memory HMMM VRAM High speed Move to memory from memory HMMV 9938 High speed Move to Memory from VDP LMMC Z80 VRAM Logical Move to Memory from CPU LMCM Z80 Logical Move to CPU from Memory LMMM VRAM Logical
75. clignote Modifier la table des couleurs Cette table occupe 240 octets 800H 8EFH par d faut sachant que le MSX2 utilise 1 bit par caract re 24 lignes x 80 colonnes 1920 caract res d o 1920 bits soit 240 octets Si le bit est 1 le texte clignote alternance des couleurs contenues dans les registres 7 et 12 alors que s il se trouve 0 le caract re ne clignote pas R gler le registre 13 avec les temps d affichage ad quats Voici un exemple en Basic 10 SCREEN 0 WIDTH80 20 COLOR 10 0 0 FOR I amp H800 239 1 0 NEXT 30 C 7 C C 1 OUT C amp H10 OUT C amp H80 12 OUT C amp H44 OUT C amp H80 13 CLS 40 PRINT Ce petit programme permet de faireclignoter automatiquement un texte PRINT PRINT amp H804 amp H1F amp H805 0 Apr s avoir lanc le programme ci dessus vous pouvez continuer travailler Essayez de changer le amp H44 de la ligne 30 en amp H11 et refaites RUN Vous avez chang la vitesse dans le registre 13 Mettez maintenant amp HBB la place de amp H11 en m me temps changez le amp H10 en amp H67 Le mot appara t pr sent en jaune sur noir comme le reste puis en rouge sur fond cyan Vous avez agi sur le registre 12 Enfin transformez le amp H805 amp HF0 amp 805 amp l ex cution vous observerez que vous avez modifi des flags et que de nouveaux
76. contr leur 28 num ro de slot du quatri me contr leur Un MSX peut donc g rer jusqu 8 lecteurs de disquettes simultan ment S il y a moins de quatre contr leurs les variables syst me correspondant aux contr leurs inexistants contiennent 0 En cas d absence de lecteur de disquette cette zone m moire n est pas initialis e et contient donc n importe quoi 6 5 TRAITER LES ERREURS LIEES AUX DISQUETTES Il est fort d sagr able de voir s afficher au milieu d un programme en fran ais un message du genre Disk write protected ou Disk offline Il est heureusement possible de rem dier ce genre de d sagr ment Voici la marche suivre 1 modifier l adresse contenue en 0F323H et 0F324H pour d tourner le traitement des erreurs disque vers votre propre routine 2 votre routine pourra envoyer les messages ad quats sachant que l accumulateur contient le num ro du drive alors que le bit 0 du registre est un flag indiquant si l erreur s est produite lors d une lecture bit 0 ou d une criture bit 1 Les bits 1 2 et 3 indiquent le type d erreur suivant la table 3 2 type d erreur prot g e contre l criture Write protected pas pr t Disk offline erreur de CRC CRC error erreur de lecture Seek error fichier non trouv File not found 0 0 0 0 1 1 erreur d criture Write error 1 1 00 01 10 11 00 01 10 autre erreu
77. de VRAM toute adresse est cod e sur 17 bits 0 1FFFFH Charger le registre 14 avec les 3 bits de poids fort de l adresse qui vous int resse A16 A15 et A 14 envoyer sur le port 1 du VDP les 8 bits de poids faible de l adresse bits 7 AO envoyer sur le port 1 du VDP les bits manquants de l adresse bits A13 A8 ainsi que l instruction d criture ou de lecture octet b7 b6 b5 b4 b3 b2 bl b0 0 lecture 1 criture envoyer la donn e sur le port 0 du VDP L auto incr mentation ayant lieu il n est pas n cessaire de red finir l adresse chaque acc s dans le cas de blocs par exemple Exemple lt en SCREEN 0 40 colonnes envoyer des caract res dans la table des noms afin d afficher un message en haut droite de l cran gt ORG 0 000 DEBUT LD 7 LD CA INC C LD A 0 3 bits de poids OUT A fort dans LD 80H 14 OUT A registre 14 LD A 01FH 8 bits de poids OUT faible 31 LD 040 criture A autres bits 0 DEC C port 0 dans LD DATA LD Bo neuf lettres OTIR transfert auto incr ment RET DATA DB MARCHE END DEBUT 5 6 LES REGISTRES WRITE ONLY DU PROCESSEUR VIDEO V9938 Voici la liste compl te de tous les registres accessibles en criture l ut
78. de destination ARG EQU NY 3 LOGOP EQU 1 op rateur logique DEBUT LD 0D000H LD DPTR HL LD HL 10H LD SX HL LD HL 20H LD SY HL 10 60 10 1 calcul de la largeur LD HL LD 40H 20H 1 calcul de la hauteur LD NY HL XOR A ARG doit toujours tre mis z ro LD ARG A LD 2 LD LOGOP Idem pas oublier LD HL SX LD BLTMV CALL END DEBUT Vous trouverez en 00000 et 00001 la largeur du bloc en 00002 et 0D003H la hauteur du bloc Pour calculer le nombre d octets utilis s partir de 00004 pour stocker le bloc appliquez la formule ad quate en 5 nb octets largeur 2 hauteur 1 en SCREEN 6 nb octets largeur 4 hauteur 1 en SCREEN 7 nb octets largeur 2 hauteur 1 en SCREEN 8 nb octets largeur hauteur Pour plus de pr cisions voir la routine 0019DH BLTVD BLock Transfert Vram from Disk Nom BLTVD Adresse 0019DH SUBROM Type MSX2 R le transfert de la disquette vers la m moire vid o Entr e 0 562 Sortie Modifie tout Note Exemple d utilisation COPY 55 1 5 7 gt to 16 32 ORG 0C000H EQU 0015 BLTVD EQU 0019DH EQU 0 562 pointeur sur le nom de fichier DX EQU FNPTR 4 abscisse du pixel de destination DY EQU DX 2 ordonn e du pixel de destination ARG EQU DY 7
79. dessous X X X X X X X X X X X X X X x x x X X X X X X x i x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x X X X X X X X X x x x A X X X XX X X X X X X X X X X faut ensuite remplir la table des couleurs de sprites 12 25 3 72 1 0 OF800H CC IC 0 couleur igne0 OF801H CC IC 0 couleur ligne 1 couleur d 0F802H CC IC 0 couleur ligne 2 chaque ligne 0F803H CC IC O couleur ligne 3 HE 8 sur 8 ou 16 sur 16 OF80EH O couleur ligne 14 num ro 0 OF80FH CC IC 0 couleur ligne 15 OF810H CC IC 0 couleur ligne0 OF811H CC IC 0 couleur ligne 1 idem num ro 1 Le bit EC Early Clock sert d caler le sprite de 32 pixels vers la gauche Ceci permet de faire entrer un sprite l cran Le bit CC permet de choisir le mode d affichage des sprites lors d une collision CC 0 le sprite prioritaire est affich CC 1 un ou logique OR est effectu sur les portions de sprite entr s en collision Le bit IC sert avtiver la d tection de collision IC 0 d tection activ e IC 1 d tection interdite La couleur est toujours cod e sur 4 bits m me en mode d cran 6 SCREEN 6 bien que l on ne dispose que de 4 couleurs voir le mode d cran 6 pour plus de pr cisions fonction hardware tiling gt En SCR
80. du hook le nom de la routine qui l appelle ainsi que son utilit OFD9IAH Appel Fonct OFD9FH Appel Fonct OFDA4H H CHPU Appel Fonct OFDA9H H DSPC Appel Fonct OFDAEH Appel Fonct H DSPF Appel Fonct OFDB8H Appel Fonct HKEYI au d but de la routine qui g re les interruptions permet de g rer des interruptions suppl mentaires comme la RS 232 routine qui g re les interruptions du timer permet de g rer des interruptions suppl mentaires gr ce au timer H CHPU routine Character outPUT sortie d un caract re l cran permet de sortir le caract re sur un p riph rique autre que le moniteur vid o H DSPC au d but de la routine DSPCSR lt DiSPlay CurSoR gt affichage du curseur permet l acc s d autres p riph riques que le moniteur vid o routine ERACSR lt gt effacement du curseur permet l acc s d autres p riph riques que le moniteur vid o H DSPF routine lt DiSPlay FuNction Keys gt affichage du contenu des touches de fonction permet l acc s d autres p riph riques que le moniteur vid o routine ERAFNK FuNction Keys eff
81. la cassette Entr e rien Sortie A octet lu indicateur carry op ration interrompue Modifie tout 000 7 000 TAPIOF Nom Adresse Type R le Entr e Sortie Modifie TAPOON Nom Adresse Type R le Entr e Sortie Modifie Note In 000 MSXI1 BKS fin de lecture arr t moteur rien rien rien TAPe Out ON TAPOON MSXI1 24 D marrage du moteur du magn tophone et criture d un header A 0 pour un header court 1 pour un header long indicateur carry op ration interrompue apr s un CTRL STOP par exemple tout Il existe deux types de headers les longs et les courts Les premiers servent marquer les d buts de fichiers alors que les seconds s parent les diff rentes parties de fichier Trois types de fichiers cassettes sont disponibles sur MSX fichiers Basic fichiers ASCII et fichiers binaires Voici le d tail de chacun d eux fichier Basic puis fich ASCII puis fichier bin puis header long 10 OD3H nom du programme Basic 6 octets header court programme Basic condens et 7 x 000 header long 10 x OEAH nom du fichier 6 octets header court 256 x 1 octet de donn es header court 256 x 1 octet de donn es idem jusqu la fin du fichier header long 10 x nom du programme 6 octets
82. le num ro d une page logique du memory mapper On peut donc mettre n importe quelle page logique n importe o est galement possible de dupliquer des pages etc Le memory mapper contient en g n ral au minimum 7 pages logiques 128 Ko mais peut aller jusqu 256 pages 4096 Ko En utilisation normale le programmeur ne touchera pas la page physique 0 Bios ni la page physique 3 variables syst mes Par contre il pourra manipuler les pages physiques 1 et 2 loisir Utilisation du memory mapper La gestion du memory mapper est particuli rement simple on utilise les quatre ports d entr e sortie de effet contient la page logique du memory mapper correspondant la page physique 0 port OFDH donne la page logique pour la page physique 1 le port code l aviez vous devin la page logique utilis e pour la page physique 2 Le contenu de pr cisant la page logique que l on associe la page physique 3 page logique pour page physique 0 OFDH page logique pour page physique 1 page logique pour page physique 2 OFFH page logique pour page physique 3 Ces ports restent accessibles aussi bien en criture qu en lecture sous Basic le bit de poids fort est toujours 1 Si votre MSX ne poss de pas de memory mapper ces ports peuvent contenir ou autre chose mais ils seront s rement tous identiques A l initialisation le MSX s
83. lectionne les pages de la mani re suivante m moire centrale port I O contenu du port page logique page 0 003 page 3 page 1 OFDH 002H page 2 page 2 OFEH 001 page 1 page 3 000H page 0 Comme le memory mapper est une option sur MSX2 il n existe aucune variable syst me ou routine du Bios le concernant Si vous d sirez utiliser le memory mapper votre programme devra d terminer seul la pr sence ou absence du memory mapper ainsi que sa taille m moire Microsoft demande toute soci t commercialisant des logiciels MSX2 utilisant le memory mapper de porter sur l emballage la mention lt Requires K MEMORY MAPPER 3 LE BIOS BASIC INPUT OUTPUT SYSTEM 3 1 INTRODUCTION AU BIOS Le Bios Basic Input Output System a t con u afin de permettre au programmeur d acc der aux routines pr programm es de la ROM sans que cette derni re soit toujours la m me En effet le Bios constitue une sorte de tampon entre l utilisateur et le mat riel lt harware gt Actuellement le clavier du MSX est g r par un circuit sp cialis le 8255 A l avenir il se peut qu un constructeur MSX sorte un mod le avec clavier d tach liaison infrarouge Il coule de source que ce nouvel ordinateur ne sera pas muni d un 8255 Si un programme fait des acc s directs au PPI il ne fonctionnera pas correctement sur le nouveau mod le Au contraire si le programme passe par la routine lt lire l t
84. les 4 bits de poids fort du registre 46 charger les 4 bits de poids faible avec le code de l op rateur logique d sir 3 lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 1 alors l instruction n est pas termin e recommencer l tape 3 Lorsque le bit CE passe 1 on peut poursuivre avec l tape 4 4 lire le registre d tat 7 il contient le code de la couleur du pixel Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem idem code idem 5 9 LES DIFFERENTS MODES D AFFICHAGE SCREEN 0 SCREEN 8 Nous allons voir exactement comment fonctionne chaque mode d affichage SCREEN 0 R solution Texte Couleurs Sprites 40 colonnes Taille d une page cran Nombre de pages maximum MSX1 MSX2 4 6 x 8 40 caract res sur 24 lignes 2 couleurs parmi 15 MSX1 ou parmi 512 MSX2 32 avec 128 Ko de VRAM Table des noms 00000 003BFH Table des couleurs Table des formes 00800 00 Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette MSX2 Voici le sch ma de fonctionnement du mode texte les nombres sont tous en d cimal 00400 0041 Table des noms 960 octets 2048 octets 32 octets 65 32 86 73 69
85. les bits et sont perdus NY7 NY6 5 4 2 NYO d placement vertical 0 0 0 0 0 0 NY9 NY8 0 1023 nombre de pixels allumer dans la direction verticale 5 4 2 CRI donn e SCREEN 5 et 7 les bits 4 codent la couleur du pixel d abscisse pair alors que CRO CR3 donnent la couleur du pixel d abscisse impair SCREEN 6 6 codent la couleur du premier pixel dont l abscisse doit toujours tre multiple de 4 CR4 et CRS donnent la couleur du pixel imm diatement droite du pixel pr c dent et ainsi de suite pour les bits C2 et C3 d une part et d autre part SCREEN 8 CRO codent la couleur d un pixel Dans tous les modes il faut charger le registre 44 avec l octet crire en VRAM 0 0 0 DIY DIX 0 0 param tres 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM direction verticale pour NY 0 bas 1 haut direction horizontale pour NX 0 droite 1 gauche pour ex cuter l instruction voici la marche suivre 1 charger les registres ci dessus 2 mettre 11000000B le registre 46 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si cel
86. pendant l ex cution de la musique Num ro de la voie actuelle utilis par PLAY Sauvegarde du volume lors des pauses M moire de travail pour PLAY Idem ci dessus Num ro de la queue actuelle Flag d interruption musicale Nombre de PLAY ex cuter simultan ment Donn es pour la voie 0 Donn es pour la voie 1 Donn es pour la voie 2 D marrage chaud possible si diff rent de 0 Programme Basic en ROM si diff rent de 0 Table des lignes termin es 0 pour une ligne en cours une valeur non nulle pour une ligne termin e Premi re position utilis par QINLIN Sauvegarde du caract re lors de l affichage du curseur Indique quelle s rie de touches de fonction est affich e Dix flags utilis s par l instruction ON KEY GOSUB pour d router ou non Flag pour ON GOSUB Flag pour savoir si le click a d j eu lieu Statut de l ancienne touche Statut de la nouvelle touche Buffer pour le codage d une touche Zone de travail pour la gestion de l cran Zone de travail pour le convertisseur noms gt formes Adresse du d but de la RAM OFC9BH OFC9DH 9 2 OFCA4H OFCASH 7 8 OFCAA H OFCABH OFCACH 2 5 OFCB7H 9
87. pour toutes les routines graphiques qui suivent RIGHTC SCANL curseur graphique d signe un pixel d termin par deux variables syst me CLOC et CMASK La premi re donne l adresse en m moire vid o correspondante au pixel qui nous int resse alors que la seconde indique quel masque il est n cessaire d appliquer l octet pour allumer juste le bon pixel 000 RIGHTC RIGHT Current Nom RIGHTC Adresse 000FCH ROM Type MSXI 2 R le d placement du curseur graphique vers la droite Entr e rien Sortie rien Modifie AF 000 LEFTC LEFT Current Nom LEFTC Adresse 000 MSXI 2 R le d placement du curseur graphique vers la gauche Entr e rien Sortie rien Modifie AF 00102 00105 00108 UPC Nom Adresse Type R le Entr e Sortie Modifie TUPC Nom Adresse Type R le Entr e Sortie Modifie DOWNC Nom Adresse Type R le Entr e Sortie Modifie UP Current UPC 00102H ROM 5 2 d placement du curseur graphique vers le haut rien rien AF Test and UP Current TUPC 00105H ROM Max 2 d placement du curseur vers le haut apr s v rification de la validit des coordonn es rien indicateur carry 1 le d placement n a pas eu lieu car le curseur graphique tait d j en 0 AF DOWN Current DOWNC 00108H ROM MSX1 2 d placement du curseur graphique ver
88. quel tiers d cran on d sire acc der Voyons un petit exemple en Basic 10 SCREEN 2 COLOR 10 1 1 CLS 20 30 TABLE DES FORMES FORME N 10 40 FOR I 0 TO 7 READ A VPOKE I VAL amp H gt A NEXT 50 60 TABLE DES COULEURS FORME N 0 70 FOR I amp H2000 TO amp H2007 READ A VPOKE I VAL A NEXT 80 90 TABLE DES NOMS JOLI CADRE EN BRIQUES 100 FOR I amp H1800 TO amp H181F VPOKE L 0 NEXT 110 FOR I amp H18E0 amp H18FF VPOKE I 0 NEXT 120 FOR I amp H1800 TO amp H18E0 STEP 32 VPOKE I 0 NEXT 130 FOR I amp H181F TO amp H18FF STEP 32 VPOKE I 0 NEXT 140 150 CIRCLE 127 98 50 14 PAINT 127 98 14 160 170 170 180 190 DONN ES POUR LA FORME 200 DATA 00 BB 00 DD 00 BB 00 DD 210 220 DONN ES POUR LES COULEURS 230 DATA 00 60 00 50 00 AO 00 20 Nous avons red fini la forme 0 puis nous l avons affich e sur tout la premi re et la septi me ligne ainsi que sur les c t s Essayez donc de faire la m me chose avec le Basic classique Vous remarquerez la ligne 150 que tous les dessins s effectuent derri re notre cadre ce qui est logique mais agr able Attention cependant ne pas utiliser les pixels dans le cadre entre 0 0 et 7 7 SCREEN 3 MSX1 MSX2 R solution 64 sur 48 pas de contrainte Texte 32 x 32 par 4 pixels 8 caract res sur 6 lignes Couleurs 15 couleurs MSX1 16 couleurs p
89. registre 20 registre 21 registre 22 registre 23 registre 32 registre 33 OFE94H 8 OFES3H OFD9FH H SETS OFDF4H OFDBDH OFF98H H SNGF OFF39H HTRMN OFF6IH 5 OFEDAH H WIDT OFF84H DG IE2 MS M4 M3 EV BL IEO M 0 SI MAG N16 N15 N14 N12 N10 C13 C12 C11 C10 C9 C8 C7 C6 0 0 F16 F15 F14 F13 F12 F11 S14 S13 S12 S11 S10 S9 S8 S7 0 0 P16 P15 P14 P13 P12 P11 TC2 TC1 TCO BD3 BD2 BD1 MS TP CB 0 SPD BW LN S1 50 IL E0 NT DC 0 0 0 0 C16 C15 C14 0 0 0 0 0 1510 515 T23 122 T21 T20 2 BCO ON3 ON2 ONO OF3 OF2 OF1 0 0 16 15 V14 0 ST3 512 ST1 STO 0 CC2 CCH 0 RSS RS4 RS3 RS2 RS1 RSO V3 V2 VI VO H3 H2 HI IL7 IL5 IL4 IL3 IL2 IL1 ILO 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 007 DO6 DOS 002 DOI DOO SX7 SX6 5 5 SX4 SX3 5 2 SX1 5 0 0 0 0 0 0 0 0 5 8 registre 34 SY7 SY6 SY5 SY4 SY3 SY2 SY1 SYO registre 35 0 0 0 0 0 0 5 9 SY8 registre 36 DX7 DX6 DX5 DX4 DX3 DX2 registre 37 0 0 0 0 0 0 0 DX8 registre 38 DY7 DY6
90. renseignement rapidement Lorsque vous ma trisez l application qui vous int resse vitez tout ce qui est note remarque etc En g n ral les renseignements indispensables la mise en uvre de l application adresses m moires registres charger etc se trouvent en d but de paragraphe les explications venant apr s va de soi qu il peut tre utile de consulter les programmes donn s en exemple ils permettront en effet souvent un gain de temps appr ciable A la fin de l ouvrage sont r unies six annexes qui renferment une grande partie des petites choses dont un programmeur a toujours besoin et qui ne se trouvent bien entendu jamais l o on les cherche Essayez d exploiter ces annexes au maximum Dans tous les cas n h sitez pas corriger les erreurs et compl ter les oublis qui ne manqueront pas de se r v ler Si vous avez le temps envoyez moi tous les conseils remarques et autres critiques que la lecture de cet ouvrage vous aura inspir s Je vous en remercie d avance 1 3 CONSEILS AU DEVELOPPEUR DE LOGICIELS Les programmes que vous crivez ne doivent en aucun cas adresser directement la m moire morte Celle ci varie d une marque l autre et surtout des MSX1 aux MSX2 en g n ral Il est absolument indispensable de passer par la table des sauts de 00000 001 pour utiliser le Bios Pour maintenir la compatibilit entre les diff rents MSX il ne faut en aucun cas acc der au mat riel sans pass
91. routine NMI Non Maskable Interrupt interruption non masquable permet le traitement des interruptions non masquables OFDDBH Appel Fonct OFDEOH H QLIN Appel Fonct OFDESH ELINLI Appel Fonct OFDEAH Appel Fonct OFDEFH H DSKO Appel Fonct OFDF4H H SETS Appel Fonct routine PINLIN Program INput LINe entr e au clavier d une ligne de programme permet d utiliser les 80 colonnes ou un autre p riph rique d entr e que le clavier H QLIN routine QINLIN Question mark and INput LINe affichage d un point d interrogation puis entr e au clavier permet d utiliser les 80 colonnes ou un autre p riph rique d entr e que le clavier H INLI routine INLIN INput LINe entr e au clavier permet d utiliser les 80 colonnes ou un autre p riph rique d entr e que le clavier H ONGO routine ONGOTP ONGOto Procedure pour les instructions Basic de type ON GOTO ON GOSUB permet de d tourner ce type d instructions H DSKO routine DSKO lt DiSK Output gt utilis e par l instruction DSKO du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H SETS routine SETS SET attributeS d tourn pour obtenir un acc s au lecteur de disquettes OFDF9H
92. se chargent de faire un joli dessin La ligne 90 d marre l affichage altern automatique Registre 14 0 0 0 0 0 16 15 14 MSX2 14 16 codent les 3 bits de poids fort de l adresse laquelle on d sire acc der Voir le paragraphe 5 5 Lecture et criture dans la m moire vid o MSX2 0 ST3 512 STI 870 Registre 15 STO ST3 contiennent le num ro de registre d tat que l on d sire lire 0 9 Voir le paragraphe 5 4 Comment acc der aux registres du V9938 rubrique LIRE UN REGISTRE D ETAT STATUS REGISTER pour plus de pr cisions 0 0 0 0 2 CC0 MSX2 Registre 16 CCO permettent de d finir le num ro de la couleur lors d un acc s palette Voir le paragraphe 5 4 Comment acc der aux registres du V9938 rubrique ECRIRE DANS UN REGISTRE DE PALETTE pour plus de pr cisions RSO MSX2 RSS 54 RS3 RS2 RSI Registre 17 Ce registre est utilis lors d un acc s indirect un autre registre du 9938 flag d auto incr mentation 1 auto incr mentation 0 mode normal RSO RSS donnent le num ro de registre du V9938 d sir Voir le paragraphe 5 4 lt Comment acc der aux registres du V9938 rubrique ECRIRE DANS UN REGISTRE DE CONTROLE pour plus de pr cisions HO MSX2
93. va donc rendre la main au programme que nous aurons install auparavant On utilise le programme du paragraphe pr c dent pour trouver la RAM de 04000H 08000H Le reste du programme se comprend de lui m me ORG 0C000H ENASLT EQU 00024 FIND LOOP BREAKX INITXT H WAIT ECRIRE MESS LD B 0FH LD 04000H LD A B OR 080 PUSH BC PUSH AF PUSH HL CALL ENASLT POP HL POP AF LD HL A LD B HL CP B POP BC IR Z RAM DJNZ LOOP JR RETOUR LD IX 04000H LD IX 0 041H LD IX 1 042H LD IX 2 000H LD IX 3 IR RETOUR EQU LD MNROM LD 04000H CALL ENASLT RET ORG 0C100H EQU 000 7 EQU 0006 CALL INITXT LD MESS CALL ECRIRE CALL BREAKX RET C JR WAIT LD CP 0 7 CALL 0A2H JR ECRIRE DB 1 amp DB LE RESET NE DB PAS LA MAIN 0 Dans l exemple ci dessus tapez et assemblez le programme puis lancez l ex cution en 0 000 partir de ce moment chaque fois que vous appuierez sur le bouton RESET le programme affichera le message Le reset ne rend pas la main Il suffit d enfoncer les touches CTRL et STOP pour r cup rer le contr le Notez que l on utilise un code ESC pour positionner le curseur premi re ligne de MESS Une cartouche se distingue des autres supports En effet toute cartouche contient AB codes 04 et 042H comme deux
94. 0 POSIT 000C6H PSET 0006DH PUTCHR 00139 PUTQ 000F9H PUTSPR 0015 PUTVRM 00129 PYSDIO 00144 QINLIN 000B4H RDPSG 00096H RDSLT 0000CH RDVDP 0013FH RDVRM 0004 lt lt 0010DH READC 00 lt 00095H REDCLK 001 5 RIGHTC 000 lt lt 000A5H PROMPT 0018 RSLREG 00138H RSTPLT 00145H SCALXY 0010 lt lt 0008DH SCANL 0012FH lt lt 000C5H SCANR 0012 lt lt 000 SCOPY 0018DH ROM SUB SUB ROM ROM ROM SUB ROM ROM ROM SUB SUB ROM SUB SUB ROM ROM ROM ROM ROM ROM SUB ROM SUB SUB ROM SUB SUB ROM SUB ROM SUB ROM SUB ROM SUB SUB SCREEN SDFSCR SETATR lt lt SETC lt lt SETGRP lt lt SETMLT lt lt SETPAG SETPLT SETRD SETS SETSCR SETTXT lt lt SETT32 lt lt SETWRT SNSMAT STMOTR STOREC STRTMS SUBROM SYNCHR TAPIN TAPIOF TAPION TAPOOF TAPOON TAPOUT TDOWNC lt lt TLEFTC TOTEXT TRIGHT 00159H 00185H 00099 00120 0009DH 0007EH O00EDH 00081 000 0013DH 0014DH 00050H 00179H 00189 00078 000 5 0007 000 9 00053 00141 000 00117 00099 0015 00008 000 4 000 7 000 000 000 O00EDH 0010 000 000 9 000D2H SUB SUB ROM SUB ROM SUB ROM SUB ROM SUB SUB SUB ROM SUB SUB ROM SUB ROM SUB ROM ROM ROM ROM ROM ROM ROM ROM ROM ROM ROM ROM ROM ROM SUB SUB ROM
95. 0 0 0 0 DY9DY8 0 1023 ordonn e du pixel origine CR5 4 CR2 couleur SCREEN 5 et 7 seuls les bits CR0 CR3 sont utilis s Ils codent la couleur du pixel 0 15 SCREEN 6 CRO et CRI codent la couleur du pixel Les autres bits CR2 7 ne sont pas utilis s SCREEN 8 CRO codent la couleur du pixel 0 255 45 0 0 0 0 0 0 0 param tres MXD 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM R46 0 1 0 1 LO3 LO2 LOI LOO commandes LO0 LO3 op rateur logique appliquer 0000 direct 1000 Tdirect 0001 AND 1001 TAND 0010 1010 0011 1011 0100 1100 TNOT Ex cution pour ex cuter l instruction PSET voici la marche suivre 1 charger les registres ci dessus sauf le 46 2 mettre 0101B 05H les 4 bits de poids fort du registre 46 charger les 4 bits de poids faible avec le code de l op rateur logique d sir 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 il faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Etat
96. 0 0 0 0 0 SX8 SX0 SX8 abscisse du pixel origine R34 SY7 SY6 SY5 SY4 SY3 SY2 SY1 SYO R35 0 0 0 0 0 0 SY9 SY8 SYO SY9 ordonn e du pixel origine R40 NX7 NX6 5 NX2 NX0 R41 0 0 0 0 0 0 0 NX0 NX8 nombre de pixels transf rer dans la direction horizontale R42 NY7 NY6 NY5 NY4 NY3 NY2 NY1 NY0 R43 0 0 0 0 0 0 NY9 NY8 9 nombre de pixels transf rer dans la direction verticale abscisse 0 511 ordonn e 0 1023 d placement horizontal 0 511 d placement vertical 0 1023 45 0 0 0 MXS DIY DIX 0 0 param tres MXS 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM DIY direction verticale pour NY 0 bas 1 haut DIX direction horizontale pour NX 0 droite 1 gauche Ex cution pour ex cuter l instruction HMMM voici la marche 1 charger les registres ci dessus 2 mettre 10100000B 0A0H le registre 46 3 lire le registre d tat 2 status 4 tester l tat du bit TR si celui ci se trouve 0 alors le processeur vid o n est pas pr t recevoir l octet suivant recommencer en 3 Si par contre ce bit est 1 lire le registre d tat
97. 055 F flag 0 si slot primaire 1 si slot secondaire SS num ro de slot secondaire 0 3 PP num ro de slot primaire rien tout Interruptions automatiquement interdites Cette routine existe aussi sous MSX DOS Exemple d utilisation passage de MSX DOS au Basic ORG 0D000H MNROM EQU ENASLT EQU 00024 RETURN EQU 0409 DEBUT LD A MNROM LD HL 0 CALL ENASLT Bios en page 0 LD MNROM 00028 0002 Nom Adresse Type R le Entr e Sortie Modifie Note BASRVN Adresse R le 0002BH 0002 GETYPR RST 28 LD HL 04000H CALL ENASLT Basic page 1 JP RETURN saut l interpr teur END DEBUT GETYPR 00028H ROM MSX1 1 D termination du type de FAC tat des indicateurs AF Ce RST est r serv au Basic BASic Rom Version Number BASVRN 0002BH ROM 8 Ces deux octets contiennent tous les renseignements utiles des programmes destin s fonctionner dans des pays diff rents international software b7 b6 b5 b4 b3 b2 bl bO g n rateur de caract res 0 japonais 2 cor en 1 international format de la date 0 AA MM JJ 1 2 4 fr quence des interruptions 0 60 Hertz 1 50 Hertz b7 b6 b5 b4 b3 b2 bl bO
98. 07 CD 29 01 CD E3 59 C9 FIN Le programme en langage machine contenu la ligne 1000 LD CALL SETATR LD 080H LD 080H LD A CALL PNTINI CALL PAINT RET 3 3 LE BIOS EN SUB ROM Voici la suite du Bios l int rieur de la Sub ROM Si vous ne comprenez pas le sens de Sub ROM voyez le chapitre sur les slots pour plus d explications sur la signification de la m moire morte auxiliaire M moire Morte auxiliaire 00069H PAINT Nom Adresse Type R le Entr e Sortie Modifie Note lt Sub ROM gt PAINT PAINT 00069 MSX2 remplissage d une surface l cran HL pointeur sur le texte Basic HL pointeur r actualis tout Valide dans les SCREEN 5 8 0006DH 00071H PSET Nom Adresse Type R le Entr e Sortie Modifie Note ATRSCN Nom Adresse Type R le Entr e Sortie Modifie Note Exemple d utilisation ORG 0 000 EXTROM EQU 0015 PAINT EQU 00069 DEBUT LD DATA LD IX PAINT CALL EXTROM RET DATA DB 100 100 5 8 DB 00H END DEBUT Pixel SET PSET 0006DH SUBROM MSX2 allumage d un pixel l cran HL pointeur sur le texte Basic HL pointeur r actualis tout Valide dans les SCREEN 5 8 Voir l exemple de PAINT pour le fonctionnement ATRibute SCaN ATRSCN 00071H SUBROM MSX2 recherche d une couleur HL pointeur sur le texte Basic HL pointeur r act
99. 1 LE SYSTEME MSX 1 1 INTRODUCTION Le syst me MSX n a pas connu le succ s escompt en Europe Si l on pouvait faire des reproches justifi s la premi re version prix trop lev des premiers mod les m moire vive un peu juste etc il en va tout autrement de la version 2 effet le MSX2 repr sente en toute simplicit le plus puissant ordinateur familial jamais construit Bien des machines professionnelles ne poss dent pas les caract ristiques du MSX2 Citons en un pour m moire quelques unes prises sur le mod le le plus vendu 256 Ko de m moire vive extensible 4 128 Ko de m moire cran extensible 192 64 Ko de m moire morte comprenant notamment un Basic Microsoft tr s volu 2 slots d extension possibilit de passer 8 slots lecteur de disquette 1 720 Ko format e int gr gestion de huit lecteurs de disquette simultan ment compatibilit totale IBM au niveau des fichiers horloge interne aliment e par pile m moire CMOS comprenant un syst me de mots de passe processeur graphique VLSI r solution 256 sur 212 pixels en 256 couleurs simultan ment souris deux syst mes d exploitation de disquettes sont un poss dant l interface menus d roulants ic nes g n rateur sonore sur trois voix huit octaves 700 logiciels disponibles dont une trentaine sp cifique MSX2 tr s nombreux p riph riques va de soi que la ma trise d
100. 111111 X X X X X X X X 03801H 10100001 X X X 03802H 10010001 X X X 03803H 10001001 X X X 03804H 10000101 X X X X X X X X X 03805H 10000101 X 03806H 10001001 X 03807H 11111111 X X X X X X Dans le cas de sprites 16 sur 16 les choses deviennent un tout petit peu plus compliqu es Le sprite se d compose 4 parties 3 24 03800 03801H 03802H 03803H 03804H 03805H 03806H 03807H 03808H 03809H 0380AH 0380BH 0380CH 0380DH 0380EH 0380FH 03810H 03811H 03812H 03813H 03814H 03815H 03816H 03817H 03818H 03819H 0381 0381BH 0381CH 0381DH 0381 0381 7 0 11111110 10000010 10001110 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001111 10000000 11111111 01111111 01000001 01110001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 11110001 00000001 11111111 X X X X e o X X X X X X X gt gt o X X X X X X X X X X gt gt X X X X X X X X X X X K X
101. 15H 000 00155 00020 00121 00041H 00079H 00085 0007DH 00108 000 5 000 0011DH 00044H 00024H 00168H 000 0015 00114H 00056H 000 9 00147 00105 00149 001 00150 00153 00028 00090 00075 0008 00089 0008 00101 00126 000DBH ROM SUB ROM SUB ROM SUB ROM SUB SUB SUB ROM SUB ROM SUB ROM ROM ROM ROM ROM ROM ROM ROM ROM SUB SUB SUB ROM ROM ROM ROM SUB ROM SUB ROM SUB ROM ROM GTPDL GTSTCK GTTRIG INIFNK INIGRP lt lt INIMLT lt lt INIPLT INITIO INITXT INIT32 INIT32 INLIN INSLNO ISCNTC ISFLIO KEYINT KILBUF KYKLOK LDIRMV LDIRVM LEFTC LFTQ LPTOUT LPTSTT MAPXYC MSXVER NEWPAD NMI NRDVRM NSETCX NSETRD 000 00005 00008 0003EH 00072H 000DDH 00075H 000 00141H 0003BH 0006 00005 0006 000D9H 000 00125 000 0014 00038 00156 001BDH 00135H 00059H 0005 000 000ADH 000F6H 000A5H 000A8H 00111H 00091H 0002DH 001ADH 00066H 00174H 00123H 0016EH ROM ROM ROM ROM ROM SUB ROM SUB SUB ROM ROM SUB ROM SUB ROM SUB ROM ROM ROM ROM SUB SUB ROM ROM ROM SUB ROM ROM ROM ROM SUB ROM SUB ROM ROM ROM ROM NSTWRT 0017 NVBXFL 000 NVBXLN 000 9 NWRVRM 00177 OUTLDP 0014DH OUTDO 00018H PAINT 00069H PNTINI 00129H PINLIN 00
102. 5SAV RG6SAV RG7SAV ROMA RNDX RSFCB RSIQLN RS2IQ RTPROG RTYCNT RUNBNF RUNFLG SAVEND SAVENT SAVSP SAVSTK SAVTXT SAVVOL SCNCNT SCRMOD SFTKEY SKPCNT SLTATR SLTTBL OF3F8H 0 97 0 959 0 418 OFC6AH 2 OF3E4H 5 6 0 857 4 6 5 0 955 OFC9IAH 0 866 OF87DH OFB36H OF6BIH OF6AFH 0FB39H 0F3F6H 0FCAFH OFBEBH 0 94 5 rn gt R AN m FA N N N NNO interne 2 64 4 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX2 MSX1 MSX2 MSX2 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 MSX1 SLTWRK STATFL STKTOP STREND SUBFLG SUBROM SWPTMP TEMP TEMP2 TEMP3 8 9 TEMPST TOCNT TRCFLG TRGFLG TRPTBL TTYPOS TXTATR TXTCGP TXTCOL TXTNAM TXTPAT TXTTAB T32ATR T32CGP T32COL T32NAM T32PAT USRTAB VALTYP VARTAB VCBA VCBB VCBC VLZADR OFDO9H OF3E7H 0 674 OF6C6H OF6ASH OFAF8H OF6A7H OF6BCH OF69DH OF69FH 0 7 9 0 678 OF67AH OF7C4H OF3E8H 4 0F661H 0F3B9H 0F3B7H 0F3B5H 0F3B3H 0F3BBH 0F676H 0F3C3H 0F3C1H 0F3BF
103. 6 couleurs parmi parmi 512 type 2 32 Ko 4 avec 128 Ko de VRAM 00000 05 24576 octets 00000 069FFH 27136 octets 07600 0767 128 octets 07800H 07 2048 octets 07400H 075FFH 512 octets 07680H 0769FH 32 octets Avec le mode d cran 5 on entre dans le domaine des graphismes en bitmap Ce terme signifie que chaque pixel est cod directement par sa couleur et ce ind pendamment des autres pixels Il n existe donc plus de contrainte de couleur m me de table de couleur ou de formes Ce mode bitmap appara t donc comme id al puisqu il allie puissance et simplicit Dans ce mode chaque octet de la table des noms code deux pixels Les 4 bits de poids fort donnent la couleur 0 15 du pixel d abscisse paire alors que les 4 bits de poids faible donnent la couleur 0 15 du pixel d abscisse impaire Le registre 2 du V9938 indique la page afficher 0 3 R2 0 AI6 AIS 1 1 1 1 1 A16 et AIS page afficher 0 SCREEN 6 MSX2 R solution 512 sur 192 bitmap 512 sur 212 bitmap Texte 8 x 8 64 caract res sur 24 ou 26 5 lignes Couleurs 4 couleurs parmi parmi 512 Sprites type 2 Taille d une page cran 32 Ko Nombre de pages maximum 4 avec 128 Ko de VRAM Table des noms 192 lignes 00000 05 24576 octets 212 lignes 00000 069FFH 27136 octets Table des couleurs Table des formes Table des at
104. 7 status contient la donn e issue de la m moire vid o 5 tester l tat du bit CE si celui ci est 0 alors l instruction est termin e il suffit de lire le dernier octet dans le registre d tat 7 Dans le cas contraire CE 1 on recommence l tape 3 ATTENTION le bit TR du registre d tat 2 doit toujours tre 0 avant de commencer l ex cution de cette instruction ceci peut s obtenir facilement en lisant l tat du registre d tat 7 Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif code idem INSTRUCTION Logical Move to Memory from Memory Sch ma DX DY SX SY NX NY VRAM Fonction LMMM autorise la copie d une zone de m moire vid o vers une autre de taille quivalente La copie se fait pixel par pixel VRAM Destination Registres Voici la liste des registres du processeur vid o charger pour ex cuter la commande R32 5 7 SX6 SX5 SX4 SX3 SX2 SX1 5 0 abscisse source R33 0 0 0 0 0 0 0 5 8 0 511 SX0 SX8 abscisse du pixel origine R34 SY7 SY6 5 5 SY4 SY3 SY2 SY1 SYO ordonn e source R35 599 5 0 1023 5 0 5 9 ordonn e du pixel origine R36 DX7 DX6 DX5 DX4 DX3 DX2 DX1 abscisse destination R37
105. 7FH 128 octets Table des formes de sprite 0 0 2048 octets Table des couleurs sprite 0 800 0F9FFH 512 octets Table de palette OFA9FH 32 octets Dans ce mode chaque octet de la table des noms code deux pixels Les 4 bits de poids fort donnent la couleur 0 15 du pixel d abscisse paire alors que les 4 bits de poids faible donnent la couleur 0 15 du pixel d abscisse impaire Le registre 2 du V9938 indique la page afficher 0 3 R2 0 0 A16 11111 A16 et AIS page afficher 0 1 SCREEN 8 MSX2 R solution 256 sur 192 bitmap 256 sur 212 bitmap Texte 8 x 8 32 caract res sur 24 ou 26 5 lignes Couleurs 256 couleurs Sprites type 2 Taille d une page cran 64 Ko Nombre de pages maximum 2 avec 128 Ko de VRAM Table des noms 192 lignes 00000H 49152 octets 212 lignes 00000 0D3FFH 54272 octets Table des couleurs Table des formes Table des attributs sprite OFA7FH 128 octets Table des formes de sprite 0 0 2048 octets Table des couleurs sprite OF800H 0F9FFH 512 octets Table de palette OFA9FH 32 octets Dans ce mode chaque octet de la table des noms code un seul pixel Les huit bits donnent la couleur 0 255 du pixel La couleur est d termin e de la mani re suivante octet 62 G1 G0 R2
106. 80 LOCATE 0 19 PRINT lt Sans toucher aux autres E lt J gt 90 FOR I 1 TO 1500 NEXT I LOCATE 0 18 GOTO 40 Essayez d enlever le E J la ligne 80 6 10 UTILISER LE SECOND JEU DE CARACTERES Les MSX poss dent un second jeu de caract res Ce dernier est r duit 32 caract res et on y acc de par un CHR 1 suivi d un code ASCII entre 64 040H et 95 05FH Par exemple en SCREEN 1 la ligne PRINT CHRS 1 gt fera s afficher l cran une petite t te sympathique Notez que tous ces caract res se trouvent d finis dans des matrices 8 sur 8 On perdra donc en SCREEN 0 les 2 bits de poids faible et le caract re sera amput de ses 2 colonnes les plus droite Voici les matrices des caract res de ce second jeu 040H 041H 042H 043 044H 045H 046 048 O4AH 04CH ER 047H 049H 04BH 04DH LL 8 4 04FH
107. ACF DB DB O3L4DEDE DB DB O7L 8ADEFGED DB 022H 000H Attention ne pas oublier le 0 en fin de cha ne Dans l exemple ci dessus on pr suppose que la Main ROM est s lectionn e 6 7 PASSAGE DE PARAMETRES BASIC LANGAGE MACHINE Dans la plupart des applications il n est pas indispensable que l int gralit du programme soit crit en langage machine Il suffit bien souvent de quelques routines en Z80 pour donner un look professionnel un programme en Basic Dans ces cas le probl me de l change d informations entre Basic et langage machine se pose La m thode classique consiste d finir une zone de communication laquelle on acc de sous Basic par les instructions POKE et PEEK Cette m thode pr sente plusieurs inconv nients l ex cution est plut t lente les instructions sont longues et occupent un pr cieux espace m moire toutes les donn es sont enregistr es deux fois donc perte tr s importante de place m moire La fonction USR du Basic que la majorit des utilisateurs y compris moi emploie comme une simple instruction CALL permet l change automatique de donn es dans les 2 sens Voyons dans le d tail le fonctionnement de l instruction USR Plusieurs cas se pr sentent suivant la nature du param tre passer Le param tre est un entier C est le cas le plus simple La fonction USR met 2 dans la case m moire 0F663H pour indiquer un entier La valeur du param tre se trouve
108. CTRL interrompt le programme BREAK CTRL E toute la ligne droite du curseur CTRL F place le curseur au d but du mot suivant CTRL mission d un bref bip sonore CTRL H back space BS CTRL tabulation idem touche TAB 10 J descend le curseur d une ligne 11 CTRL K idem touche ou HOME 12 CTRL L effacement de l cran 13 CTRL M effectue un RETURN idem touche RETURN 14 CTRL N place le curseur fin de ligne 18 CTRL R dem touche INS 21 CTRL U efface la ligne ou se trouve le curseur 24 CTRL X idem touche SELECT 27 CTRL dem touche ESC 28 CTRL dem fl che droite 29 CTRL idem fl che gauche 30 CTRL A idem fl che haut 31 CTRL _ lidem fl che bas VD Gi Lu Essayez donc cet exemple MSX2 10 SCREEN 0 WIDTH 80 COLOR 10 0 0 CLS 20 A Ce texte s affiche bizarrement 25 LOCATE 25 10 30 FOR I 1 TO LEN A 40 PRINT 30 MIDS AS I 1 50 NEXT I 6 9 LES CODES ESCAPE ESC Le MSX peut utiliser toute la s rie des codes ESC compatible avec les terminaux VT 52 ou HEATH 19 dont la liste suit code effet ESC A 27 65 monte le curseur d une ligne ESC B 27 66 descend le curseur d une ligne ESC C 27 67 d place le curseur vers la droite ESC D 27 68 d place le curseur vers la gauche ESC H 27 72 curseur en haut droite HOME ESC Y col ligne curseur en X LOCATE voir ci dessous ESC j
109. Ce que voit 16 le processeur 16 Ko 16 Ko OFFFFH 16 Ko 16 Ko OC000H 16 Ko 16 Ko 08000H 16 Ko 16 Ko 04000H 16 Ko 00000H 16 Ko M moire centrale Toutes les op rations de manipulations de blocs restent invisibles au Z80 qui utilise ses 64 Ko comme s il n y avait pas d autre m moire Un bloc de 16 Ko s appelle une page La m moire centrale est donc constitu e de 4 pages pages 0 3 Il existe deux dispositifs autorisant la manipulation de pages les slots sur MSX1 et MSX2 et le lt Memory Mapper certains MSX2 uniquement 2 2 QU EST CE QU UN SLOT Le syst me de slot est de loin le plus r pandu pour g rer la m moire sur les MSX En fait un slot ou fente primaire correspond un port cartouche il s agit donc d un dispositif mat riel hardware A l oppos les slots secondaires reposent sur un montage logiciel software qui permet d tendre la m moire dans les slots primaires qui ne recevront jamais de cartouche le slot primaire 0 par exemple est interne et ne poss dant pas de connecteur il ne pourra jamais accueillir une cartouche Chaque slot primaire contient 4 slots secondaires chacun de ceux ci renfermant 4 pages de 16 slot primaire 0 slot primaire 1 slot primaire 2 slot primaire 3 Au niveau du programmeur nul besoin de faire la diff re
110. D 1 0 LD A B LD 00800H CALL FILVRM POP HL POP BC XOR A RET WORD DB FILLSCREEN 000H Apr s avoir tap et assembl le programme ci dessus lancez l ex cution en 0C000H MSX fera automatiquement un RESET pour que la recherche de la cartouche se produise Lors du retour sur Basic tapez CLEAR 200 amp HC100 A partir de l vous pouvez tout moment appeler la nouvelle fonction par un CALL FILLSCREEN caract re Pour cr er une autre fonction il suffit de modifier le programme partir du label SUITE 6 14 MANIPULER LA SOURIS Je vous propose un sous programme en langage machine qui permet d utiliser la souris depuis une application en Basic ORG 0 000 EXTROM EQU 0015 NEWPAD EQU 001ADH GTTRIG EQU 00008 NWRVRM EQU 00177 SOURIS LD A OCH LD IX NEWPAD CALL EXTROM LD A 0DH LD IX NEWPAD CALL EXTROM LD BA LD ADD LD LD A OCH LD NEWPAD CALL EXTROM LD A 0EH LD IX NEWPAD CALL EXTROM LD BA LD ADD LD CALL SPRITE LD CALL GTTRIG CP 7 JR SOURIS SPRITE LD LD HL OFAOIH CALL NWRVRM RET X DB 000H Y DB 000H Voici un exemple d exploitation de la routine ci dessus en Basic 10 SCREEN 7 SET PAGE 0 0 COLOR 10 0 0 CLS X amp HC045 Y X 1 20 8 0 amp CHR amp HC0 CHR S amp HA0 CHRS amp H90 CHR amp H88 CHRS 4 C
111. DHI VAL amp H gt A NEXT 30 PRINT B B B B 50 DATA F8 88 B8 98 B8 88 88 F8 00 Tous les B de l cran se transforment en petit signe E en vid o inverse L instruction SCREEN 0 fera revenir les choses la normale En ce qui concerne les possibilit s de faire clignoter le texte dans ce mode voir le paragraphe sur les registres du processeur vid o registres 12 et 13 SCREEN 1 32 colonnes MSX1 MSX2 R solution Texte 8 x 8 32 caract res sur 24 lignes Couleurs 16 couleurs parmi 512 Sprites type 1 Taille d une page cran 4Ko Nombre de pages maximum 32 avec 128 Ko de VRAM Table des noms 01800 768 octets Table des couleurs 02000H 0201FH 32 octets Table des formes 00000H 007FFH 2048 octets Table des attributs sprite 01B00H 01B7FH 128 octets Table des formes de sprite 03800H 03FFFH 2048 octets Table des couleurs sprite Table de palette MSX2 02020 0203FH 32 octets Le mode 32 colonnes fonctionne de mani re identique au mode texte 40 colonnes voir ci dessus pour plus de pr cisions La table des noms content toujours un octet par caract re l cran soit cette fois 32 colonnes fois 24 lignes donc 768 octets Chaque octet renferme le code ASCII du caract re afficher l cran Ainsi si l cran se trouvent uniquement les caract res BEN dans le coin sup rieur gauche la table des noms ressemblera 01800H 65 ou
112. EEN 8 les valeurs sont fixes et non red finissables En voici le d tail rouge vert bleu couleur R2 RO G2 00 2 BO 0000B 0 0 0 0 0 0 0 O 0 0 0 0 0 0 0 1 O 0010B 0 0 0 0 1 1 0 0 O 0 0 0 0 1 0100B 0 1 1 0 0 0 0 0 O 0101B 0 1 0 0 0 1 0 0110B 0 1 1 1 0 0 0 0111IB 0 1 1 0 1 1 0 1 O 1000B 1 0 0 1 1 1 0 1 0 1001B 0 0 0 0 0 0 1 1 1 1010B 0 0 0 1 1 1 0 0 0 1011B 0 0 0 1 1 1 1 1 1 1100B 1 1 1 0 0 0 0 0 0 1101B 1 1 1 0 O 1 1 1110B 1 1 1 1 1 110 0 0 lH IB 1 1 1 1 1 1 1 1 1 Notez que vous pouvez r gler la couleur aussi que les autres bits pour CHAQUE ligne du sprite Notez galement qu on utilise toujours 16 octets m me pour les sprites 8 sur 8 Une fois le sprite d fini on peut le manipuler souhait gr ce la table des attributs de sprites Cette table fonctionne avec des plans graphiques et compte 4 octets par plan On appelle plan graphique un espace comprenant un l ment graphique Il y a donc 32 plans num rot s de O 31 avec chacun un sprite puis un plan avec les graphismes ordinaires enfin parfois un plan en entr e vid o La table des attributs de sprites code les caract ristiques de chaque plan sur 4 octets T GSA 3 QE L 0 01B00H ordonn e sprite plan 0 0 255 01B01H abscisse sprite plan 0 0 255 attributs 01B02H num ro de sprite 0 255 du plan 0 01B03H r serv au syst me
113. F3E8H T32NAM T32COL T32CGP T32ATR T32PAT GRPNAM GRPCOL GRPCGP GRPATR GRPPAT MLTNAM CLIKSW CSRY CSRX CNSDFG RGOSAV RGISAV RG2SAV RG3SAV RG4SAV RGSSAV RG6SAV RG7SAV STATFL TRGFLG D N D D N N NNN D N NNN Adresse de la table des noms mode 1 Adresse de la table des couleurs en mode 1 Adresse de la table des formes en mode 1 Adresse de la table des attributs de sprites en mode 1 Adresse de la table des formes de sprites en mode 1 Adresse de la table des noms en mode 2 Adresse de la table des couleurs en mode 2 Adresse de la table des formes en mode 2 Adresse de la table des attributs de sprites en mode 2 Adresse de la table des formes de sprites en mode 2 Adresse de la table des noms en mode 3 Adresse de la table des couleurs en mode 3 Adresse de la table des formes en mode 3 Adresse de la table des attributs de sprites en mode 3 Adresse de la table des formes de sprites en mode 3 Click switch 0 pour enlever le clic des touches 1 pour mettre le clic des touches Ordonn e du curseur Abscisse du curseur 0 pour utiliser tout l cran 1 pour afficher le contenu des touches de fonction Contenu du registre 0 du VDP Contenu du registre 1 du VDP Contenu du registre 2 du VDP Contenu du registre 3 du VDP Contenu du registre 4 du VDP Contenu du registre 5 du VDP Contenu du regist
114. H MSX2 01800 02000 037 00000 017 01 0 01E7FH 03800 01 00 7 01 01E9FH MSX2 00000 05 00000 069FFH 07600H 0767FH 07800 07 07400 075 07680 0769 32 octets 768 octets 6144 octets 6144 octets 128 octets 2048 octets 32 octets 768 octets 2048 octets 128 octets 2048 octets 32 octets 768 octets 6144 octets 6144 octets 128 octets 2048 octets 512 octets 32 octets 24576 octets 27136 octets 128 octets 2048 octets 512 octets 32 octets SCREEN 6 Table des noms 192 lignes 212 lignes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette SCREEN 7 Table des noms 192 lignes 212 lignes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette SCREEN 8 Table des noms 192 lignes 212 lignes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette MSX2 00000 05 00000 069FFH 07600 0767 07800 07 07400 075 07680H 0769 MSX2 00000 00000 OFA7FH OF800H OFOFFH 8 OFA9FH MSX2 00000H 00000H OFA7FH
115. H 0F3BDH 0F3C5H 0F39AH 0F663H 0F6C2H 0FB41H 0FB66H 0FB8BH 0F419H 128 N D D H 0 N N LA go 5 N N 2 D D A D ND 37 37 37 2 MSX2 MSX2 MSXI1 MSXI1 VLZDAT 0F41BH 1 MSXI VOICEN 0FB38H 1 MSXI VOICAQ 0 975 128 MSXI WINWID OFCASH 1 MSX1 VOICBQ 9 5 128 MSXI XSAVE OFAFEH 2 MSX2 VOICBC 75 128 MSXI YSAVE OFBOOH 2 MSX2 0 Adresse partag e par plusieurs variables C LES HOOKS Voici la liste des hooks class s dans l ordre alphab tique Nom Adresse Nom Adresse Nom Adresse Nom Adresse H ATTR OFEICH H DSKI OFEI7H OFE4EH H MKS OFE35H H DSKO OFDEFH 4 OFDFOH H BINL OFE76H H DSPC OFDASH H INDS 8 HNEWS 5 7 H DSPF OFDB3H OFDC7H OFDD6H H BUFL 8 H EOF H INLI OFDESH HNODE OFEB7H H CHGE OFDC2H OFDAEH H IPL 58 OFDA4H OFDB8H H ISFL OFEDFH OFF34H H CHRG 0FF48H OFFO2H H ISMI OFF7FH HNTFL OFE62H H CLEA OFEDOH OFFBIH H ISRE OFF2AH OFF2FH
116. HL adresse du premier octet dans le buffer 1 indicateur carry 1 un C a eu lieu tout appel au hook H INLI par rapport PINLIN cette routine termine la ligne pr c dente voir LINTTB Questiuon mark and INput LINe QINLIN 000B4H ROM MSX1 1 idem INLIN sauf que cette routine affiche un point d interrogation rien HL adresse du premier octet dans le buffer 1 indicateur carry 1 un a eu lieu tout appel au hook H QINL BREAK X BREAKX 000B7H ROM MSX1 1 Test du CTRL STOP rien indicateur carry 1 C en cours AF Exemple d utilisation LOOP CALL BREAKX JR NC LOOP RET 000 000BDH 000 ISCNTC Nom Adresse Type R le Entr e Sortie Modifie Note Nom Adresse Type R le Entr e Sortie Modifie Note BEEP Nom Adresse Type R le Entr e Sortie Modifie IS CoNTrol C ISCNTC 000BAH ROM MSX1 1 test de la touche STOP ventuellement avec CTRL pour l interpr teur Basic BASROM 1 si programme en cartouche STOP interdit rien rien r serv au Basic ChecK CoNtrol C CKCNTC 000BDH ROM MSX1 1 test de la touche STOP ventuellement avec CTRL pour l interpr teur Basic BASROM 1 si programme en cartouche STOP interdit rien rien r serv au Basic par rapport ISCNTC cette routine met le pointeur de texte du Basic 0 apr s sauvegarde afin d inte
117. HRS 2 30 SPRITE 0 100 100 7 DEFUSR amp HC000 I USR 0 110 PSET 054 2 PEEK amp HC055 1 14 120 I USR 0 GOTO 110 ANNEXES LE BIOS Voici la liste de toutes les routines du Bios class es par ordre alphab tique Nom Adresse Slot Nom Adresse Slot ATRSCN 00071H SUB lt lt 000FOH SUB BASE 00169H SUB CALSLT 0001 ROM BASEF 0016DH SUB CGTABL 00004 ROM BASRVN 0002 ROM CHGCAP 00132 ROM BEEP 000 ROM CHGCLR 00062 lt lt 0017DH SUB lt lt 00111H SUB BIGFIL 0016BH ROM CHGET 0009 ROM BLTDM 001 9 SUB CHGMDP 001 5 SUB BLTDV 001 SUB CHGMOD 0005FH ROM BLTMD 001 5 SUB lt lt 000D1H SUB BLTMV 00199 SUB CHGSND 00135 BLTVM 00195 SUB CHKNEW 00165 ROM BLTVD 0019DH SUB CHKRAM 00000 BLTVV 00191H SUB CHKSLZ 00162 BOXLIN 00081H SUB 000 2 000 7 CHRGTR 00010 CALATR 00087 ROM CHSNS 0009 lt lt 000FDH SUB CKCNTC 000BDH ROM CALBAS 00159 ROM CLRSPR 00069 ROM CALLF 00030H ROM lt lt 000 5 SUB CALPAT 00084 ROM CLRTXT 00119H SUB CLS lt lt CNVCHR COLOR DCOMPR DELLNO DISSCR DOBOXF DOGRPH DOLINE DOWNC lt lt DSPFNK lt lt ENASCR ENASLT EOL ERAFNK EXTROM FETCHC FILVRM FNKSB FORMAT GETPAT GETPLT GETPUT GETVCP GETVC2 GETYPR GICINI GLINE GRPPRT lt lt GSPSIZ lt lt GTASPC GTPAD 000C3H 001
118. LOGOP EQU 1 op rateur logique DEBUT LD NOM LD LD 10 LD DX HL LD 20 NOM 001 BLTDV Nom Adresse Type R le Entr e Sortie Modifie Note LD DY HL XOR A ARG doit toujours tre mis z ro LD ARG A LD LOGOP Idem pas oublier ceci LD FNPTR LD IX BLTVD CALL EXTROM RET DB 022 55 1 5 7 022 000 END DEBUT Si vous appelez cette routine depuis le Basic faites le par un DEFUSR amp HCO000 A USR 0 N oubliez pas le dollar Dans A vous aurez le nom du fichier Pour plus de pr cisions voir la routine BLTVV BLock Transfert Disk from Vram BLTDV 001 5 MSX2 transfert de la m moire vid o vers la disquette HL 0 562 rien tout Exemple d utilisation COPY 16 32 96 128 TO A ESSAI SC7 ORG 0 000 EQU 0015 BLTDV EQU 001A1H SX EQU 0 562 abscisse du pixel de d part SY EQU SX 2 ordonn e du pixel de d part EQU SY 2 pointeur sur le nom de fichier NX EQU SY 6 abscisse du pixel de destination NY EQU NX 2 ordonn e du pixel de destination ARG EQU NY 3 DEBUT LD NOM LD LD 10 LD SX HL LD 20 LD SY HL NOM 001 5 BLTMD Adresse Type R le Entr e Sortie Modifie Note LD HL 60H 10H 1 calcul de la
119. M sortie d un caract re alphanum rique sur cran imprimante ou disquette code ASCII du caract re sortir PRTFLG flag 1 si sortie sur imprimante PTRFIL si diff rent de 0 sortie sur disquette dans le fichier point par PTRFIL rien rien Appel au hook HOUTD Ce RST est r serv au Basic SLoT CALSLT 0001 appel inter slot une adresse le IX adresse appeler num ro du slot sous la forme 00055 F flag 0 si slot primaire 1 si slot secondaire SS num ro de slot secondaire 0 3 PP num ro de slot primaire 0 3 Rien AF IX registres auxiliaires Interruptions automatiquement interdites Cette routine existe aussi sous MSX DOS Ne jamais passer d arguments un sous programme via les registres auxiliaires du Z80 quand vous utilisez CALSTL 00020 Nom Adresse Type R le Entr e Sortie Modifie Note 00024H ENASLT Nom Adresse Type R le Entr e Sortie Modifie Note DCOMPR RST 20 Double register COMpare DCOMPR 00020H ROM MSX1 1 Comparaison de HL et DE HL premier nombre DE deuxi me nombre F tat des indicateurs AF indicateur carry 1 HL lt DE indicateur z ro 1 HL DE ENAble SLoT ENASLT 00024H ROM MSX1 1 s lection d un slot HL page s lectionner 0 04000H 08000H ou 0C000H num ro du slot sous la forme 00
120. M etc car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci 00084H CALPAT Nom Adresse Type R le Entr e Sortie Modifie 00087H CALATR Nom Adresse Type R le Entr e Sortie Modifie 0008 GSPSIZ Nom Adresse Type R le Entr e Sortie Modifie Note CALculate PATtern table address CALPAT 00084H ROM 8 1 calcul de l adresse du d but des formes d un sprite A num ro du plan du sprite HL adresse cherch e AF DE HL CALculate ATtRibute table address CALATR 00087H ROM 8 1 calcul de l adresse du d but des attributs d un sprite A num ro du plan du sprite HL adresse cherch e AF DE HL Get SPrite SIZe GSPSIZ 0008AH ROM MSX1 1 calcul de la taille des sprites rien A nombre d octets pour un sprite 8 ou 32 AF L indicateur carry est positionn en cas de mode 16x16 0008 GRPPRT Nom Adresse Type R le Entr e Sortie Modifie Note 00090H GICINI Nom Adresse Type R le Entr e Sortie Modifie Note 00093H WRTPSG Nom Adresse Type R le Entr e Sortie Modifie Note et RO R3 et R2 GRaPhic PRinT GRPPRT 0008DH ROM 2 affichage d un caract r
121. Move to Memory from memory LMMV 9938 VRAM Logical Move to Memory from VDV LINE V9938 LINE 5 9938 SeaRCH PSET V9938 VRAM Point SET POINT V9938 15 POINT set STOP STOP Le V9938 travaille uniquement en coordonn es X et Y Les notions d adresse m moire et de page n existent pas Tout se passe comme si le V9938 op rait sur un cran g ant de 256x1024 ou 512x1024 La partie visible ne serait alors qu une fen tre suivant le sch ma SCREEN 5 VRAM SCREEN 6 0 0 255 0 00000H 0 0 511 0 page 0 page 0 0 255 255 255 08000H 0 255 511 255 0 256 255 256 0 256 511 256 page 1 page 1 0 511 255 511 10000 0 511 511 511 0 512 255 512 0 512 511 512 page 2 page 2 0 767 255 767 18000H 0 767 511 767 0 768 255 768 0 768 511 768 page 3 page 3 0 1023 255 1023 20000 0 1023 511 1023 SCREEN 7 VRAM SCREEN 8 0 0 511 0 00000 0 0 255 0 page 0 08000 0 0 255 511 255 10000 0 255 255 255 0 256 511 256 0 256 255 256 1 18000 1 0 511 511 511 20000 0 511 255 511 Lorsque l on d marre une instruction il est toujours possible de sp cifier un op rateir logique gr ce aux bits LOO LO3 sachant que Op rateur Code imm diat 0000 AND 0001 OR 0010 0011 NOT 0100 Op rateur Code T imm diat 1000
122. OPTIQUE faut d abord r gler les 2 bits de poids fort du registre 8 du processeur vid o R8 MS VR 0 SPD BW Mettre LP Light Pen enable 1 et MS 0 Si vous d sirez qu une interruption se produise lorsque le crayon optique d tecte de la lumi re mettre le bit 5 du registre 0 1 Ce bit est automatiquement remis 0 lors d une lecture du registre d tat n 1 du processeur vid o Apartir de ce moment on peut lire le registre d tat status n 1 51 FL LPS FH FL 0 aucune lumi re n a t d tect e 1 de la lumi re t d tect e LPS 0 le bouton du crayon optique n a pas t enfonc 1 le bouton du crayon optique a t enfonc les coordonn es du pixel o la lumi re a t d tect e se trouvent alors dans les registres d tat 3 4 5 et 6 du processeur vid o S3 X7 X6 X5 X4 X3 X2 XI X0 54 0 0 0 0 0 0 0 X8 55 Y7 Y5 4 Y3 Y2 Yl YO 56 0 0 0 0 0 0 Y9 Y Les valeurs dans ces registres demeurent inchang es tant que le registre d tat n 5 n a pas t lu Il faut donc lire les registres 3 4 6 puis seulement 5 6 DES APPLICATIONS TYPES Ce chapitre est destin soulager le programmeur en lui proposant des solutions pr tes l emploi aux probl mes qu on rencontre dans la majorit des applications Muni de cette bib
123. Q 45 SRCH 1 retour sur couleur de bordure 0 retour sur couleur autre que 0 F16 F11 H3 HO 1 2 IL IL7 ILO LN LO3 LO0 LP MAG MAJ MS MXC MXD MXS M2 MI MS M3 NT NX7 NX0 NX8 NY7 NYO NY9 et NY8 N16 N10 OF3 OF0 ON3 ON0 P16 P11 RSS RS0 SI SPD ST3 STO SX7 SX0 5 8 SY7 SYO SY9 et SY8 40 41 42 43 13 13 17 15 32 33 34 39 bordure 1 affichage altern de 2 pages 0 normal adresse table des formes 6 bits poids forts sur 17 set adjust horizontal 7 gauche 0 centre 8 droite 1 interruption scan horizontal OK 0 interdit 1 interruption scan horizontal OK 0 interdit 1 interruption stylo optique OK 0 interdit 1 affichage entrelac 0 non entrelac n de ligne o l interruption doit se d clencher lors d un scan 1 212 points 0 192 points op rateur logique lors d une commande 1 stylo optique autoris 0 stylo interdit 1 sprites agrandis 0 sprites normaux c t le plus long 1 vertical 0 horizontal 1 souris autoris e 0 souris interdite inutilis sur MSX2 destination 1 VRAM tendue 0 VRAM source 1 VRAM tendue 0 VRAM 2 bits de poids faible du mode d cran 3 bits de poids fort du mode d cran 1 PAL 313 lignes 0 NTSC 262 lignes longueur 8 bits poids faible longueur bit poids fort hauteur 8 bits poids faible hauteur 2
124. RE DANS UN REGISTRE DE CONTROLE 0 23 et 32 46 lire le contenu de la case m moire 7 en main ROM si vous ne comprenez pas la signification de main ROM voyez le chapitre concernant les slots vous aurez l adresse du port z ro du processeur vid o Or nous utiliserons le port un pour crire dans le VDP une incr mentation d impose envoyez sur le port un la donn e crire lt OUT gt envoyez toujours sur le port un le num ro du registre dans lequel vous voulez crire en gardant le bit de poids fort 1 ce qui revient ajouter 80H au num ro du registre Un exemple lt crire 0 dans le registre neuf du V9938 gt ORG 0C000H Le programme suivant change la fr quence d affichage en passant de 50 60 Hertz Sur un t l viseur ou un moniteur en 50 Hz uniquement l image sautera faut remettre 2 dans le registre neuf afin de r tablir une image normale DEBUT LD 7 adresse port 0 dans LD adresse port 0 dans adresse port 1 dans LD 0 donn e dans A envoi sur port 1 LD 80H 9 n registre 80H dans OUT A envoi sur port 1 RET NOTE ce programme ne masque pas les bits qui ne nous int ressent pas pour tre plus simple il est possible qu il ne marche pas correctement sur certains MSX2 END L quivalent Basic de ce programme serait C C 1 OUT 2 OUT C amp H80 9
125. RPHED GRPNAM GRPPAT GXPOS GYPOS HEADER HIGH HIMEM HOLD HOLD2 0 414 0F6B3H 0F6B7H 0FCA7H OFAF8H OFCCIH OF7F8H OF7CSH 0 866 OF871H OF860H OFCAEH 0F6A6H OF87FH 0F69BH 0FBCAH 0F7BAH 0F3FAH 0FCB7H 0FCB9H 0F3CDH 0F3CBH 0F3C9H 0FCA6H 0F3C7H 0F3CFH 0FCB3H 5 OF40AH 0 408 0 8 0 836 N N e 4 interne 43 11 11 2 1 1 10 160 GO o N N N N N N N A D D D 9 HA ra ra ra MSX2 MSXI1 MSX1 MSXI1 MSXI1 HOLD8 INSFLG INTCNT INTFLG INTVAL JIFFY KANAMD KANAST KBUF KEYBUF LFPROG LINL32 LINL40 LINLEN LINTTB LINWRK LOGOPR LOHADR LOHCNT LOHDIR LOHMSK LOW LOWLIM LPTPOS MAXDEL MAXFIL MAXUPD MCLFLG MCLLEN MCLPTR MCLTAB MEMSIZ MINDEL MINUPD MLTATR MLTCGP MLTCOL 0F806H 0FCA8H 0FCA2H 0FC9BH 9 OFCADH OFCACH OF41FH 0 954 2 OFCI8H OFBO2H 0F94BH 0 94 OF94AH 0 949 0 406 4 0 415 0 92 0 85 0 958 0 956 0 672 OF92DH
126. RV PRMLN2 PARM2 PRMFLG ARYTA2 NOFUNS TEMP9 FUNACT SWPTMP TRCFLG Nombre d octets disponibles pour les d finitions Nombre d octets actuellement utilis s D finition des param tres Pointeur pour le bloc de param tres pr c dent Taille du bloc de param tres en cours d laboration Zone pour sauvegarder les blocs en cours de cr ation Flag pour savoir si PARMI a t fouill Point d arr t pour une recherche simple Flag de fonction 0 si aucune fonction n est active M moire de travail Nombre de fonctions actives M moire de travail pour l instruction SWAP Flag de mode 0 pas de TRACE en cours 1 mode TRACE en ex cution OF7CSH OF7FOH OF7F2H OF7F4H OF7F6H 0 806 0 836 OF83EH 0 847 0 857 0 85 0 860 0 862 0F864H 0F866H 0F866H 0F871H 0F87CH 0F87DH 0F87FH 0F91FH 0F922H 0F924H 0F926H 0F928H 0F92AH 0F92CH 0F92DH 0F92FH 0F931H 0F933H 0F935H 0F936H 0F938H 0F939H 0F93BH FBUFFR DECTMP DECTM2 DECCNT DAC HOLD8 HOLD2 HOLD ARG RNDX MAXFIL FILTAB NULBUF PTRFIL RUNFLG FILNAM FILNM2 NLONLY SAVEND FNKSTR CGPNT NAMBAS CGPBAS PATBAS ATRBAS CLOC CMASK MINDEL MAXDEL ASPECT CENCNT CLINEF CNPNTS CPLOTF CPCNT CPCNT8 43 16 48 N N N o 160 N Ne Ne FA 9 9 9 ra 9 A ND ND O Buffer utilis par les routines math matiques M moire de travail M moire de travail pour les divisions M moire de t
127. SCII du caract re PATWRK les huit octets qui d finissent le pattern du caract re tout WRiTe VRaM WRTVRM 00109 MSX2 criture dans une case m moire de la VRAM HL adresse de case m moire 0 A donn e crire rien AF Cette routine permet l acc s tout la VRAM au contraire du WRTVRM de la main ROM 0010DH O0111H 00115H RDVRM Nom Adresse Type R le Entr e Sortie Modifie Note CHGCLR Nom Adresse Type R le Entr e Sortie Modifie Note CLS Nom Adresse Type R le Entr e Sortie Modifie ReaD VRaM RDVRM 0010DH SUBROM MSX2 lecture d une case m moire de la VRAM adresse de case m moire 0 A contenu de la case m moire lue AF Cette routine permet l acc s tout la VRAM au contraire du RDVRM de la main ROM CHanGe CoLoR CHGCLR 00111H SUBROM MSX2 changement des couleurs l cran FORCLR couleur de texte couleur de fond couleur de marge rien tout Idem CHGCLR de la main ROM CLear Screen CLS 00115H SUBROM MSX2 effacement de l cran rien rien tout 00119H 0011DH 00121H CLRTXT Nom Adresse Type R le Entr e Sortie Modifie DSPFNK Nom Adresse Type R le Entr e Sortie Modifie Note DELLNO Nom Adresse Type R le Entr e
128. Sortie Modifie Note CLeaR TeXT screen CLRTXT 00119H SUBROM MSX2 effacement de l cran en mode texte rien rien tout DiSPlay FuNction Keys DSPFNK 0011DH SUBROM MSX2 affichage des touches de fonction rien rien tout Valide SCREEN 0 et 1 uniquement DELete LiNe mode 0 DELLNO 00121H SUBROM MSX2 effacement d une ligne en mode texte L num ro de la ligne rien tout Valide en SCREEN 0 uniquement 00125 00129 0012DH INSLNO Nom Adresse Type R le Entr e Sortie Modifie Note PUTVRM Nom Adresse Type R le Entr e Sortie Modifie WRTVDP Nom Adresse Type R le Entr e Sortie Modifie INSert LiNe mode 0 INSLNO 00125H SUBROM MSX2 Insertion d une ligne en mode texte L num ro de la ligne rien tout Valide en SCREEN 0 uniquement PUT character in VRaM PUTVRM 00129H SUBROM MSX2 affichage d un caract re en mode texte C code ASCII du caract re afficher H num ro de colonne L num ro de ligne rien AF WRiTe VDP WRTVDP 0012DH SUBROM MSX2 criture dans un registre du VDP C num ro de registre 0 23 et 32 46 B donn e crire rien AF BC 00131H 00135H 00139H VDPSTA Nom Adresse Type R le Entr e Sortie Modifie KYKLOK Nom Adresse Type R le Entr e Sortie Modifie Note PUTCHR N
129. T gt fin de l instruction Basic PRINT permet de d tourner la routine H TRMN routine traitement d une donn e incorrecte lors des instructions Basic DATA et INPUT permet de d tourner la routine routine FRMEVL lt EVaLuator gt calcul du r sultat d une formule math matique permet d installer de nouvelles routines math matiques HNTPL routine utilis e lors de FRMEVL permet d installer de nouvelles routines math matiques OFF70H H E VAL Appel Fonct OFF75H Appel Fonct Appel Fonct OFF7FH H ISMI Appel Fonct OFF84H H WIDT Appel Fonct OFF89H H LIST Appel Fonct Nom H BUFL Appel Fonct routine EVALST lt STatement gt valuation d une expression permet de d tourner la routine H OKNO routine de calcul de fonctions transcendantes permet de d tourner la routine la fin de la routine de calcul de fonctions transcendantes permet de d tourner la routine HISMI routine ISMIDS lt IS MIDS gt utilis e lors de l instruction du Basic permet de d tourner la routine H WIDT routine WIDTHS WIDTH of Screen utilis e lors de l instruction Basic WIDTH permet de d tourner la
130. TAND 1001 TOR 1010 TXOR 1011 TNOT 1100 Les op rateurs de la seconde colonne fonctionnent de mani re identique ceux de la premi re si ce n est qu ils n effectuent pas d op ration logique lorsque la couleur de fond est la couleur 0 INSTRUCTION High speed Move to Memory from CPU abscisse 0 511 Sch ma DX DY NX lt 9938 4 780 VRAM Fonction permet de remplir la m moire vid o avec des donn es provenant du 780 la diff rence des routines du Bios BIGFIL ou FILVRM les donn es servant remplir la m moire vid o peuvent tre toutes diff rentes De plus la m moire vid o est d finie par des coordonn es en X et Y 780 Destination Registres Voici la liste des registres du processeur vid o charger pour ex cuter la commande R36 DX7 DX6 DX5 4 DX3 DX2 R37 0 0 0 0 0 0 0 DX8 DX0 DX8 abscisse du pixel origine En SCREEN 5 et 7 le bit de poids faible est perdu SCREEN 6 les bits et 1 sont perdus R38 R39 DY0 DY9 R40 R41 NX0 NX8 R42 R43 NY9 R44 45 Ex cution DY7 DY6 DY5 4 DY3 DY2 Dei ordonn e 0 0 0 0 0 DY9 Dys 0 1023 ordonn e du pixel d origine NX7 NX6 NX5 4 NX2 d placement horizontal 0
131. Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem idem idem idem INSTRUCTION POINT is POINT set 2 Sch ma SX SY VRAM Fonction POINT donne la couleur d un pixel dans la m moire vid o Source VRAM Destination V9938 Registres Voici la liste des registres du processeur vid o charger pour ex cuter la commande R32 5 7 SX6 5 5 5 4 SX3 SX2 SX1 SX0 R33 0 0 0 0 0 0 0 5 8 SX0 SX8 abscisse du pixel origine R34 SY7 SY6 SY5 SY4 SY3 SY2 SYO R35 o 0 599 5 SY0 SY9 ordonn e du pixel origine 45 0 0 0 MXS 0 0 0 0 MXS M moire vid o de destination 0 pour s lectionner la VRAM principale abscisse source 0 511 ordonn e source 0 1023 param tres 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM R46 103 102 LOI 100 Commandes LO0 LO3 op rateur logique appliquer 0000 direct 1000 Tdirect 0001 AND 1001 TAND 0010 1010 0011 1011 0100 1100 TNOT Ex cution pour ex cuter l instruction POINT voici la marche suivre 1 charger les registres ci dessus sauf le 46 2 mettre 0100B 04H
132. X1 et celui du MSX2 La plupart des registres d finissent des param tres pr cis la couleur du texte par exemple alors que quelques registres ont une fonction sp ciale crire dans le registre 46 d clenche automatiquement une op ration le trac d une ligne par exemple Vous trouverez tout au long de ce chapitre l explication du contenu de chaque registre ainsi qu un expos des diff rents modes graphiques et des sprites 5 4 COMMENT ACCEDER AUX REGISTRES DU V9938 Il existe deux moyens d acc der au processeur vid o Tout d pend de ce que vous cherchez faire vous avez le temps et vous voulez simplement mettre en uvre les fonctions inexistantes sous Bios vous avez d cid d utiliser directement le V9938 pour une application qui n cessite vitesse la plus lev e possible L utilisation du Bios ralentit l g rement l application d un programme Dans le premier cas la solution est vidente utilisez les routines WRTVDP RDVDP et VDPSTA du Bios Dans le second cas la situation est moins simple Il est vident que si vous voulez viter d appeler le Bios pour les fonctions graphiques vous n allez pas l appeler pour crire dans les registres Or hors du Bios point de salut vous perdez la compatibilit d s que vous utilisez l instruction OUT du Z80 Heureusement Microsoft a pr vu ce cas de figure lors de la conception du syst me MSX Voici la marche suivre ECRI
133. XO 5 valeur de l exposant 0 31 octet 2 2 PCI PCO SC3 SC2 SCI SCO PCO PC3 premier chiffre en BCD SCO SC3 second chiffre en BCD octet 3 2 TC1 TCO OCH 2 TC3 troisi me chiffre en BCD QC3 quatri me chiffre en BCD octet 4 2 5 3 SC2 SCI SCO CC0 cinqui me chiffre en BCD SCO SC3 sixi me chiffre en BCD Par exemple 3483200 serait cod 3483200 0 348320 107 donc le premier octet contient 11000111B soit 0C7H le second octet code les 2 premiers chiffres soit 034H le troisi me octet code les 2 chiffres suivants soit 083H le quatri me octet code les deux derniers chiffres soit 020H Le param tre est en double pr cision la fonction USR met 8 dans la case m moire 0 663 pour indiquer la double pr cision la valeur du param tre se trouve sur 8 octets partir de l adresse apr s traitement 0 663 doit contenir 8 si l on renvoie au Basic un nombre en double pr cision Ce dernier se trouvera en OF7F6H et 7 Les 8 octets codent le nombre en double pr cision de la m me mani re qu en simple pr cision voir ci dessus pour plus de pr cisions si ce n est que la mantisse est sur 7 octets au lieu de 3 Le param tre est une cha ne de caract res La fonctio
134. a cassette Couleur de la fronti re pour l instruction PAINT Abscisse du curseur graphique Ordonn e du curseur graphique Accumulateur graphique X Accumulateur graphique Y Flag pour l instruction DRAW Taille du zoom pour l instruction DRAW Angle pour l instruction DRAW Flag d T 0 255 entr e sortie binaire en cours Adresse de d but sp cifi e par l instruction lt BSAVE gt Emplacement slot de la m moire morte principale EXPTBL 4 Un flag pour chacun des slots primaires 255 si le slot est expand en slots secondaires OFCCSH SLTTBL 4 actuel pour chaque slot expand OFCCOH SLTATR 64 Attributs de chaque slot OFDO9H SLTWRK 128 Zone de travail pour chaque slot 0 89 PROCNM 16 Nom des instructions suppl mentaires pour lt CALL gt OFD99H DEVICE 1 Num ro de lt device gt pour une cartouche 0 3 4 3 QUELQUES EXEMPLES D UTILISATION DES VARIABLES SYSTEME Sous Basic vous d sirez couper un bout d cran afin de r server quelques lignes sur l exemple des touches de fonction Il vous suffit de faire POKE amp HF3B1 24 nn nn tant le nombre de lignes r server Il est parfois utile de conna tre la largeur de l cran WIDTH dans un programme d application Essayez amp HF3B0 Dans le m me ordre d id es le nombre maximum de fichiers ouvrables d fini par l instruction MAXFILES s obtient par amp 5
135. acement du contenu des touches de fonction permet l acc s d autres p riph riques que le moniteur vid o Appel Fonct OFDC2H Appel Fonct OFDC7H Appel Fonct OFDCCH Non Appel Fonct OFDDIH Appel Fonct OFDD6H Appel Fonct routine force screen TEXT mode passage mode texte voir Bios permet l acc s d autres p riph riques que le moniteur vid o H CHGE routine CHGET CHaracter GET lecture d un caract re au clavier permet l acc s d autres p riph riques d entr e que le clavier H INIP routine lt INItialize PATtern gt remplissage de la table des formes en mode texte permet de modifier le jeu de caract res lorsque l on revient en mode texte apr s SCREEN 2 par exemple HKEYC routine KEY COD KEY CODer gt lecture clavier permet d intercepter la lecture du clavier Lorsque le hook est appel l accumulateur contient dix fois le num ro de ligne plus le num ro de colonne de la touche enfonc e dans la matrice clavier HKYEA routine 5 KeY EASY conversion d un caract re lu au clavier permet de modifier la mani re dont une touche est interpr t e sous Basic
136. ar le syst me d exploitation des disquettes routine NTFLO lt NoT FiLe number 0 gt utilis e par l instruction CLOSE du Basic utilis par le syst me d exploitation des disquettes routine program files utilis e par l instruction MERGE du Basic utilis par le syst me d exploitation des disquettes H SAVE routine SAVE utilis e au d but de l instruction SAVE du Basic utilis par le syst me d exploitation des disquettes H BINS Appel Fonct OFE76H Appel Fonct OFE7BH H FILE Appel Fonct 0 H DGET Appel Fonct 0 85 H FILO Appel Fonct HINDS Appel Fonct Nom HRSLF Appel Fonct 5 routine BINSAV BINary SAVe sauvegarde d une zone m moire en binaire utilis par le syst me d exploitation des disquettes H BINL routine BINLOD lt BINary LOaD chargement d une zone m moire en binaire utilis par le syst me d exploitation des disquettes HEILE routine FILES utilis e par l instruction FILES du Disk Basic utilis par le syst me d exploitation des disquettes H DGET routine DGET Disk GET utilis e par l instruction GET du Disk Basic utilis par le syst me d exploitation des d
137. armi parmi 512 MSX2 Sprites type 1 Taille d une page cran 4Ko Nombre de pages maximum 32 avec 128 Ko de VRAM Table des noms 00800H 768 octets Table des couleurs Table des formes 00000H 007FFH 2048 octets Table des attributs sprite 01 00 01B7FH 128 octets Table des formes de sprite 03800H 03FFFH 2048 octets Table des couleurs sprite Table de palette MSX2 02020 0203FH 32 octets Le mode d cran 3 fonctionne comme le mode 2 voir le SCREEN 2 pour plus de pr cisions mais avec un cran de 64 sur 48 En mati re de taille un pixel mode 3 quivaut 4 pixels mode 2 0 0 4 0 8 0 4 gros pixels 0 3 1 3 15 3 0 4 4 4 8 4 4 lt gros gt pixels 0 7 721 15 7 Dans la table des formes chaque octet code 2 gros pixels Les 4 bits de poids fort donnent la couleur 0 15 du pixel d abscisse paire alors que les 4 bits de poids faible indiquent la couleur 0 15 du pixel d abscisse impaire Si l on n glige la table des noms ne travaille que sur la table des formes qui ressemble 00000H 0 0 63 0 00100H 0 7 63 7 0 8 63 8 00200 0 15 63 15 0 16 63 16 00300 0 23 63 23 0 24 63 24 00400 0 31 63 31 0 32 63 32 00500 0 39 63 39 0 40 63 40 0 47 63 47 Il est alors facile d adresser n importe quel pixel comme le montre l exemple suivant Basic 10 SCREEN 3 COLOR 10 1 1
138. at du clavier gt il tournera tr s bien avec le clavier liaison infrarouge Le Bios concilie compatibilit des logiciels avec volution du mat riel 3 2 LE BIOS EN MAIN ROM Vous trouverez pour chaque routine du Bios en m moire centrale son nom et son adresse m moire son type pour les possesseurs de MSX1 les param tres devant tre fournis la routine les r sultats que vous r cup rerez ainsi que les registres modifi s et parfois une remarque sur la routine elle m me ou sur son fonctionnement A la rubrique lt type gt la d signation MSX1 pr cise que la routine existait d j sur MSX1 elle reste bien entendu compatible avec le MSX2 Dans ce cas de figure un chiffre pr cise le genre de modifications apport sur MSX2 par rapport l ancienne routine Voici la table des codes 1 Aucune modification par rapport la routine MSX1 2 Appel la Sub ROM si l cran est en mode 5 6 7 ou 8 3 Appel syst matique la Sub ROM 4 Routinie modifi e pour pouvoir traiter les cas des modes d crans 4 8 Note Les RST 0 5 sont r serv s au Basic RST 6 est utilis pour les appels inter slots le RST 7 pour les interruptions hard 00004H CGTABL 00000H RST 0 CHecK RAM Nom CHKRAM Adresse 00000H ROM Type MSXI 1 red marrage complet du syst me Recherche de la RAM mise en place des slots etc Entr e rien Sortie rien Modifie tout Character Gen
139. bits poids fort adresse table des noms 7 bits de poids fort sur 17 en cas de clignotement temps teint en cas de clignotement temps allum adresse table g n ratrice des sprites 6 bits de poids fort sur 17 n de registre lors d un adressage indirect 1 sprites 16 16 0 sprites 8 8 1 sprites interdits 0 sprites autoris s n registre statut lors d une lecture abscisse source 8 bits poids faible abscisse source bit poids fort ordonn e source 8 bits poids faible ordonn e source 2 bits poids fort S1 50 514 57 516 et 615 TC3 TCO 7 T23 T20 12 V3 VO 18 V16 V14 14 VR 8 choix du mode simultan ou pas adresse table des attributs des sprites 10 bits de poids fort sur 17 couleur du texte en SCREEN 0 et 1 couleur 0 gale la couleur de la palette en cas de clignotement couleur 1 re partie set adjust vertical 8 bas 0 milieu 7 haut 3 bits de poids fort de l adresse VRAM type de 1 64 1 bit ou 64 4 bits 0 16 1bit ou 16 4bits E CARTES MEMOIRES VIDEO La carte m moire vid o par d faut pour chaque mode graphique SCREEN O0 40 colonnes MSX1 MSX2 Table des noms 00000 003 960 octets Table des formes 00800H 2048 octets Table de palette MSX2 00400H 0041FH 32 octets SCREEN OU 80 colonnes MSX2 Table des noms 24 lignes 00000H 0077FH 1920 octets 26 5 lignes 00000H 0086 2160 octets Tabl
140. caract res clignotent Utilisation en mode graphique SCREEN 5 8 Les pages graphiques vont par deux En SCREEN 5 et 6 on peut choisir de faire afficher en alternance les pages 0 et 1 ou alors 2 et 3 mais jamais 0 et 3 1 et 3 ou O et 2 Mettre les bits N10 N14 du registre 2 1 puis choisir la page avec les bits N15 et N16 SCREEN 7 et 8 ce ne peut tre que la page 1 En SCREEN 5 et 6 on peut choisir la page 1 ou 3 il faut charger le registre 2 avec respectivement ou 7 R gler les temps d affichages respectifs gr ce au registre 13 Mettre le bit 0 du registre 9 1 Attention il est absolument n cessaire d tre sur la page paire lorsqu on d marre ce type de manipulation depuis le Basic Voici justement un exemple en Basic 5 SCREEN 5 PI 3 141592654 10 SET PAGE 0 0 COLOR 10 0 0 CLS 20 CIRCLE 100 100 50 7 1 2 2 PI 30 LINE 50 100 150 100 7 LINE 100 50 100 150 7 PAINT 98 98 10 7 PAINT 102 102 6 7 PAINT 98 102 12 7 40 SET PAGE 1 CIRCLE 100 100 50 7 PI 4 2 PI PI 4 50 LINE 65 65 135 135 7 LINE 65 135 135 65 7 PAINT 100 98 10 7 PAINT 100 102 6 7 PAINT 98 100 12 7 85 90 SET PAGE 0 0 C PEEK C C 1 OUT amp H3F OUT C amp H82 OUT C amp H22 OUT amp 8 OUT C 6 OUT amp H89 95 99 99 Les lignes 10 60
141. cisse pixel de destination DY EQU DX 2 ordonn e pixel de destination ARG EQU DY 7 LOGOP EQU 1 op rateur logique DEBUT LD 0D000H LD DPTR HL LD 10 LD HL LD HL 20H LD HL XOR A ARG doit toujours tre mis z ro LD A LD 2 LD Idem ne pas oublier LD HL DPTR LD IX BLTVM CALL EXTROM RET ORG 0 000 HORZ DW 030H nombre de pixels horizontaux P VERT DW 00BH nombre de pixels verticaux NBOCT DS 210H nombre d octets n cessaires END DEBUT en SCREEN 5 NBOCT P HORZ 2 P VERT en SCREEN 6 NBOCT HORZ 4 P VERT en SCREEN 7 NBOCT P HORZ 2 P VERT en SCREEN 8 NBOCT P HORZ P VERT Pour plus de pr cisions voir la routine BLTVV 00199 BLTMV BLock Transfert Memory from Vram Nom BLTMV Adresse 00199H SUBROM Type MSX2 R le transfert de la m moire vid o vers la m moire centrale Entr e 0 562 Sortie Modifie tout Note Exemple d utilisation COPY 16 32 TO 000 ORG 0 000 EQU 0015 EQU 00199 SX EQU 0 562 abscisse du pixel de d part SY EQU SX 2 ordonn e du pixel de d part DPTR EQU SY 2 adresse en m moire centrale NX EQU SY 6 abscisse du pixel de destination NY EQU NX 2 ordonn e du pixel
142. cuter l instruction voici la marche 1 charger les registres ci dessus sauf le 46 2 mettre 1011B les 4 bits de poids fort du registre 46 charger les 4 bits de poids faible avec le code de l op rateur logique d sir 3 envoyer l octet suivant mettre en dans le registre 45 le premier octet t trait l tape 1 par un OUT du 780 4 lire le registre d tat 2 status 5 tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e sinon on passe l tape 6 6 tester l tat du bit TR si celui ci se trouve 0 alors le processeur vid o n est pas pr t recevoir l octet suivant recommencer en 4 Si par contre ce bit est 1 reprendre toute l op ration au niveau 3 Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif idem idem INSTRUCTION Logical Move to CPU from Memory Sch ma SX SY NX kt gt V9938 p 7 50 NY VRAM Fonction LMCM permet de r cup rer en m moire central via le Z80 le contenu d une zone de la m moire vid o Le transfert de fait pixel par pixel VRAM Destination Z80 Registres Voici la liste des registres du processeur vid o charger pour ex cuter la commande R32 5 7 5 6 SX5 SX4 SX3 SX2 6 5 0 R33 0 0
143. de SLTWRK constituent une zone de travail Deux octets sont r serv s chacune des 64 pages MNROM OFCCIH MSX2 Sur 5 2 cet octet contient le num ro de slot qui contient l interpr teur Basic et le Bios principal SUBROM MSX2 L adresse OFAF8H donne le num ro du slot qui contient la Sub ROM Les routines du Bios li es aux slots ReaD SLoT Nom RDSLT Adresse 0000CH ROM R le s lection d un slot et lecture d une case m moire WRite SLoT Nom WRSLT Adresse 00014H R le s lection d un slot puis criture dans une case m moire CALISLoT CALSLT Adresse 0001CH ROM R le appel inter slot une adresse ENAble SLoT Non ENASLT Adresse 00024H ROM R le s lection d un slot CALL Far Nom CALLF Adresse 00030H R le appel inter slot une adresse Ces routines n appellent pas de commentaire particulier voir le Bios sauf peut tre la derni re routine CALL Far Pour acc der une adresse se trouvant dans un autre slot suffit d crire les 3 instructions suivantes en assembleur RST 30 DB num ro du slot DW adresse appeler Le RET de la routine appel e renverra l ex cution l octet imm diatement apr s l adresse d finie par le DW Par exemple la suite d octets F7 8E 0 CO AF g n rerait la s quence suivante OF7H code 780 de lt RST 30 slot seconda
144. dicateur carry 1 attribut non valide gt 15 F Cette routine n est valable que dans les SCREEN 0 4 READ Current READC 0011DH ROM MSX1 2 lecture de l attribut du pixel actuel CLOC et CMASK coordonn es du pixel actuel A attribut du pixel F On appelle pixel actuel le pixel d termin par le curseur graphique 00120 00123 00126 Nom Adresse Type R le Entr e Sortie Modifie NSETCX Nom Adresse Type R le Entr e Sortie Modifie GTASPC Nom Adresse Type R le Entr e Sortie Modifie SET Current SETC 00120H ROM 8 2 allumage du pixel actuel l cran CLOC adresse m moire vid o modifier SCREEN 4 ou coordonn e horizontale SCREEN 5 8 CMASK masque appliquer SCREEN 2 4 ou coordonn e verticale SCREEN 5 8 ATRBYT couleur du pixel 0 15 pour les SCREEN 2 7 0 OFFH pour le SCREEN 8 rien AF Next SET Current X NSETCX 00123H ROM MSX1 1 affichage de plusieurs pixels vers la droite HL nombre de pixels allumer CLOC et CMASK curseur graphique ATRBYT couleur du pixel 0 15 pour les SCREEN 2 7 0 OFFH pour le SCREEN 8 rien tout GeT ASPeCt ratio GTASPC 00126H ROM MSX1 1 renvoi de l aspect du cercle rien DE contenu de HL contenu de ASPCT2 rien 00129 0012 0012 PNTINI Nom
145. dresse Type R le Entr e Sortie Modifie Note SCANL Nom Adresse Type R le Entr e Sortie Modifie Note NVBXLN Nom Adresse Type R le Entr e Sortie Modifie Note SCAN Right SCANR 000C1H SUBROM MSX2 recherche vers la droite du premier pixel d une autre couleur DE nombre de pixels sur lesquels la recherche doit tre effectu e DE position du pixel recherch tout Voir SCANR en main ROM pour plus d explications SCAN Left SCANL 000CSH SUBROM MSX2 recherche vers la gauche du premier pixel d une autre couleur DE nombre de pixels sur lesquels la recherche doit tre effectu e DE position du pixel recherch tout Voir SCANL en main ROM pour plus d explications 000C9H SUBROM MSX2 trac d un rectangle l cran BC abscisse du pixel de d part DE ordonn e du pixel de d part GXPOS abscisse du pixel d arriv e ordonn e du pixel d arriv e ATRBYT couleur utiliser LOGOPR op rateur logique appliquer rien AF Valide dans les SCRENN 5 8 Voir DOGRPH pour l explication de LOGOPR 000CDH 000D1H NVBXFL Nom Adresse Type R le Entr e Sortie Modifie Note CHGMOD Nom Adresse Type R le Entr e Sortie Modifie Note NVBXFL 000CDH SUBROM MSX2 trac d un rectangle plein l cran BC abscisse du pixel de d
146. dresse m moire se d compose ainsi b7 b6 55 54 53 b2 bl b0 H H adresse 0 12 mode 2 ou 3 inutilis s 0 2 adresse quatre bits 00 identificateur 1010 si la RAM est initialis e 01 SET ADJUST X 8 7 02 SET ADJUST Y 8 7 03 SCREEN 0 ou 1 04 WIDTH quatre bits de poids faible 05 WIDTH trois bits de poids fort le bit 3 reste libre car 0 127 suffit pour coder la largeur d cran 06 couleur de texte 0 15 07 couleur de fond 0 15 08 couleur de la marge 0 15 09 quatre flags bit 0 key 0 off 1 on bit 1 key click 0 off bit2 imprimante 0 MSX 1 non MSX bit3 baud 0 1200 1 2400 10 SET bits 0 et 1 volume 0 3 bits 2 et 3 type de BEEP 0 3 11 couleur de la page de pr sentation 0 3 les bits 2 et 3 sont disponibles pour l utilisateur 12 code de pays 0 15 0 Japon 1 USA 2 International 3 GB 4 France 5 Allemagne 6 Italie 7 Espagne 8 Emirats arabes 9 Cor e 10 URSS 11 12 nd 13 nd 14 nd 15 nd nd non d fini au 05 02 1986 En mode 3 adresse quatre bits 00 identificateur 0 15 0 TITLE 1 PASSWORD 2 PROMPT 3 15 non d finis au 05 02 1986 01 quatre bits de poids faible de l octet 1 01 quatre bit
147. e ci INltialize MuLTicolor mode INIMLT 00075H ROM MSX1 3 initialisation du mode graphique multicolore SCREEN 3 MLTNAM adresse de la table des noms MLTCGP adresse de la table des formes MLTCOL table des couleurs MLTATR table des attributs de sprites MLTPAT table des formes de sprites rien tout Il n est pas obligatoire de d finir MLTNAM etc car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci 00078 SETTXT Nom Adresse Type R le Entr e Sortie Modifie Note 0007BH SETT32 Nom Adresse Type R le Entr e Sortie Modifie Note SET TeXT mode SETTXT 00078H ROM MSX1 3 passage direct en mode texte 40x24 adresse de la table des noms TXTCGP adresse de la table des formes rien tout Il n est pas obligatoire de d finir TXTNAM et TXTCGP car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci SET Text 32 mode SETT32 0007BH ROM MSX1 3 passage direct en mode texte 32x24 T32NAM adresse de la table des noms T32CGP adresse de la table des formes T32COL table des couleurs T32ATR table d
148. e des couleurs 24 lignes 00800 240 octets 26 5 lignes 00800 0090DH 270 octets Table des formes 01000H 017FFH 2048 octets Table de palette MSX2 00 32 octets SCREEN 1 32 colonnes MSX1 MSX2 Table des noms 01800H OIAFFH 768 octets Table des couleurs 02000H 0201FH 32 octets Table des formes 00000 007 2048 octets Table des attributs sprite 01 00 01B7FH 128 octets Table des formes de sprite 03800 03 2048 octets Table de palette MSX2 SCREEN 2 Table des noms Table des couleurs Table des formes Table des attributs sprite Table des formes de sprite Table de palette MSX2 SCREEN 3 Table des noms Table des formes Table des attributs sprite Table des formes de sprite Table de palette MSX2 SCREEN 4 Table des noms Table des couleurs Table des formes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette SCREEN 5 Table des noms 192 lignes 212 lignes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette 02020 0203FH MSX1 MSX2 01800 02000 037 00000 017 01 00 01B7FH 03800 03 02020 0203 MSX1 MSX2 00800 00000 007FFH 01 00 01B7FH 03800 03 02020 0203F
149. e du pixel destination NX7 6 5 2 d placement horizontal 0 0 0 N38 0 511 nombre de pixels copier dans la direction horizontale NY6 5 4 2 NYO d placement vertical 0 0 0 0 0 0 NY9 NY8 0 1023 nombre de pixels copier dans la direction verticale 0 0 MXS DIY DIX 0 param tres M moire vid o de destination 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM M moire vid o source 0 pour s lectionner la VRAM principale 1 pour acc der la m moire vid o tendue sur les MSX2 avec 192 Ko de VRAM direction verticale pour NY 0 bas 1 haut direction horizontale pour NX 0 droite 1 gauche pour ex cuter l instruction voici la marche suivre 1 charger les registres ci dessus 2 mettre 11010000 0D0H le registre 46 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 il faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans
150. e pr cisions Registre 12 T23 T22 121 20 BC3 2 MSX2 Lors d un clignotement le texte s affiche dans les couleurs cod es par ce registre pendant la p riode ON T20 T23 seconde couleur du texte lors d un clignotement en mode texte 80 colonnes uniquement Voir le registre 13 pour plus de pr cisions 0 BC3 seconde couleur de fond lors d un clignotement en mode texte 80 colonnes uniquement Voir registre 13 Registre 13 2 2 OF MSX2 Ce registre permet d obtenir automatiquement l affichage altern de deux pages graphiques SCREEN 5 8 ou le clignotement automatique du texte SCREEN 0 80 colonnes ON3 r gle le temps d affichage de la premi re page page paire ou de la seconde couleur de texte OF0 OF3 r gle le temps d affichage de la seconde page page impaire ou de la premi re couleur de texte Note longueur d une p riode en secondes pour une fr quence de 50 Hz 0000 0 0 0100 0 8 1000 1 6 1100 2 4 0001 0 2 0101 1 0 1001 1 8 1101 2 6 0010 0 4 0110 1 2 1010 2 0 1110 2 8 0011 0 6 0111 1 4 1011 2 2 1111 3 0 Utilisation en mode texte 80 colonnes SCREEN 0 charger le registre 7 avec les couleurs du texte et du fond pour tout l cran charger le registre 12 avec les couleurs de texte et de fond afficher en alternance pour le texte qui
151. e sur cran graphique au pixel actuel A code ASCII du caract re afficher LOGOPR code d op ration logique pour screens 5 8 uniquement rien rien Appel la Sub ROM si le screen est sup rieur ou gal 5 GI sound Chip INItialize GICINI 00090H ROM 1 Initialisation du PSG et de donn es pour l instruction PLAY rien rien rien Les interruptions doivent tre interdites avant l appel de cette routine WRiTe PSG WRTPSG 00093H ROM 1 criture dans un registre du PSG Programmable Sound Generator num ro de registre 0 13 E donn e crire rien rien voici le d tail des registres fr quence mise sur la voie n 1 12 bits Les bits b3 b0 de repr sentent les quatre bits de poids fort de la fr quence contient les huits bits de poids faible de la fr quence fr quence mise sur la voie n 2 12 bits Voir et RO pour les explications 4 et RS fr quence mise sur la voie n 3 12 bits Voir et RO pour les explications R6 fr quence du g n rateur de bruit blanc R7 contr leur de m lange des voies b7 b6 55 54 53 b2 bl b0 son voie 1 on 0 off 1 son voie 2 on 0 off 1 son voie 3 on 0 off 1 bruit voie 1 on 0 off 1 bruit voie 2 on 0 off 1 bruit voie 3 on 0 off 1
152. een COPY 0018DH SUBROM MSX2 ex cute tous les COPY HL pointeur de texte Basic HL pointeur r actualis tout BLock Transfer Vram to Vram BLTVV 00191H SUBROM MSX2 transfert d un bloc d un endroit de m moire vid o un autre HL 0F562H rien tout Note EXTROM BLTVV SX SY DX DY NX NY ARG LOGOP DEBUT Exemple d utilisation ORG EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU LD LD LD LD LD LD LD LD LD LD LD LD XOR LD LD LD LD LD COPY 32 16 128 96 TO 192 128 0C000H 0015FH 00191H 0F562H abscisse pixel de d part SX 2 ordonn e pixel de d part SY 2 abscisse pixel de destination DX 2 ordonn e pixel de destination DY 2 largeur du bloc copier NX 2 hauteur du bloc copier NY 3 ARG 1 op rateur logique HL 20H SX HL HL 10H SY HL DX HL HL 80H DY HL HL 80H 20H 1 calcul de la largeur NX HL HL 60H 10H 1 calcul de la hauteur NY HL A ARG doit toujours tre mis z ro ARG A 3 idem LOGOPR pas oublier ceci HL SX IX BLTVV CALL EXTROM RET END DEBUT L ordinateur travaille comme s il n y avait qu un cran g ant dans lequel on d place une fen tre suivant le sch ma SCREEN 5 2K 2 lt K R 0 0 255 0 page 0 0 255 255 255 R OR R 0 256 255 256 page 1
153. er par le Bios Ce dernier constitue une sorte de tampon entre les programmes et le mat riel La seule exception la r gle ci dessus concerne le processeur vid o Pour des raisons de vitesse d ex cution certains programmes peuvent adresser le VDP Video Display Processor sans passer par le Bios Voir le chapitre 5 pour plus de pr cisions ce sujet Les adresses m moire 00004H et 00005H contiennent l adresse du g n rateur de caract res CGTABL Ne pas utiliser la m moire vive situ e au dessus de 0F380H comme de la RAM ordinaire En effet cette zone m moire contient les variables syst me voir chapitre 4 indispensables la bonne marche de votre ordinateur Il existe des diff rences entre les MSX commercialis s en France et dans les autres pays ne serait ce que le clavier dont il est parfois important de tenir compte Les cases m moire 0002BH et 0002CH donnent des renseignements importants ce sujet voir le chapitre 3 Sur MSX2 uniquement vous trouverez des renseignements compl mentaires dans la m moire CMOS de l horloge Voir la routine REDCLK 001 5 chapitre 3 paragraphe 3 3 Le Bios en Sub ROM Certains programmeurs placent la pile en haut de m moire avec l instruction LD SP 00000 Ceci ne fonctionne videmment pas sur MSX L adresse contient justement des renseignements pr cieux sur l tat des slots voir le chapitre 2 propos des slots Certains programmeurs parten
154. erator TABLe Nom CGTABL Adresse 00004H ROM Type Donn e les octets 00004 et 00005 contiennent l adresse du d but du g n rateur de caract res en ROM 00006H VDP DR VDP Data Read port Nom VDP DR Adresse 00006H ROM Type MSXI Donn e R le cet octet renferme l adresse du port de lecture du processeur vid o Certains logiciels n cessitant des acc s vid o tr s rapides peuvent adresser directement le VDP sans passer par le BIOS condition de venir lire cet octet avant tout IN 00007 VDP DW VDP Data Write port Nom VDP DW Adresse 00007H ROM R le cet octet renferme l adresse du port d criture du processeur vid o Voir explication ci dessus 00008 0000 SYNCHR RST 8 Nom Adresse Type R le Entr e Sortie Modifie Note RDSLT Nom Adresse Type R le Entr e Sortie Modifie Note SYNtax of CHaRacter SYNCHR 00008 ROM MSXI1 v rification de l octet suivant le RST 8 Si c est le m me que celui point par HL saut en CHRGTR sinon affichage de Syntax error E HL caract re actuel Octet v rifier apr s le RST HL caract re suivant A caract re actuel indicateur carry 1 c est un nombre indicateur z ro 1 fin d instruction AF HL Ce RST est r serv au Basic ReaD SLoT RDSLT 0000CH ROM MSXI s lection d un slot et lecture d une case m moire 1 adres
155. es 00002H 0007 ne sont pas utilis es sur MSX2 elles sont r serv es aux futures versions du syst me MSX Ne pas y toucher Le disque virtuel commence 00080 Un autre logiciel utilise peut tre d j la m moire que vous avez trouv e Si tel est le cas le bit 5 de SLTWRK sera 1 Si le bit est 0 vous m me si vous d cidez d utiliser la m moire vive trouv e pour votre application devez mettre le bit 5 de SLTWRK 1 Voici un r sum des fonctions de SLTWRK sur MSX2 Op D RMD APP RES 551 590 PP1 PPO Slot du RAM disk sous la forme 00055 bit r serv au MSX3 ne pas le modifier flag d application 1 RAM d j utilis e 0 RAM disponible flag de RAM disk 1 RAM disk pr sent 0 pas de RAM disk 6 12 DETOURNER LE RESET Presque tous les MSX vendus en France poss dent un bouton RESET le V20 de Canon est le seul MSX sans RESET ayant connu une grande diffusion Le programmeur peut interdire l acc s son application l utilisateur final en d tournant le RESET Le principe est assez simple On installe en m moire vive des codes qui font croire au MSX qu il ne s agit pas de RAM mais d une cartouche En effet dans ce dernier cas le MSX passe toujours la main la cartouche sinon le programme en cartouche ne d marrerait pas automatiquement Etant tromp comme nous sommes diaboliques le MSX
156. es attributs de sprites T32PAT table des formes de sprites rien tout Il n est pas obligatoire de d finir T32NAM etc car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci 0007 SETGRP Nom Adresse Type R le Entr e Sortie Modifie Note 00081 SETMLT Nom Adresse Type R le Entr e Sortie Modifie Note SET GRaPhic mode SETGRP 0007EH ROM MSX1 3 passage direct en mode graphique 256x192 GRPNAM adresse de la table des noms adresse de la table des formes GRPCOL table des couleurs GRPATR table des attributs de sprites GRPPAT table des formes de sprites rien tout Il n est pas obligatoire de d finir GRPNAM etc car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci SET MuLTicolor mode SETMLT 00081H ROM MSX1 3 passage direct en mode graphique multicolore MLTNAM adresse de la table des noms adresse de la table des formes MLTCOL table des couleurs MLTATR table des attributs de sprites MLTPAT table des formes de sprites rien tout Il n est pas obligatoire de d finir MLTNA
157. ette graphique dans le port joystick n 1 ordonn e lue sur la tablette graphique dans le port joystick n 1 le crayon est il sur la tablette dans le port joystick n 1 si 0 si non ablette graphique dans le port joystick n 2 pr te si abscisse lue sur la tablette graphique dans le port joystick n 2 ordonn e lue sur la tablette graphique dans le port joystick n 2 le crayon est il sur la tablette dans le port joystick n 2 si 0 si non le crayon optique est il pr t tre si oui abscisse du crayon optique ordonn e du crayon optique le bouton du crayon optique est il enfonc si 0 si non initialisation de la souris ou du track ball dans le port joystick n 1 renvoie toujours d placement horizontal de la souris ou du track ball dans le port Joystick n 1 d placement vertical de la souris ou du track ball dans le port Joystick n 1 rien renvoie toujours 0 initialisation de la souris ou du track ball dans le port joystick n 2 renvoie toujours d placement horizontal de la souris ou du track ball dans le port Joystick n 2 001B1H 001 5 001 9 18 19 GETPUT Nom Adresse Type R le Entr e Sortie Modifie CHGMDP Nom Adresse Type R le Entr e Sortie Modifie Note 1 Nom Adresse Type R le Entr e Sortie Modifie
158. eur n agit pas Exemple d utilisation ORG 0C000H EXTROM EQU 0015 DOGRPH EQU 00085H GXPOS EQU GYPOS EQU 0FCB5H ATRBYT EQU LOGOPR EQU 0FB02H DEBUT LD BC 10H LD DE 50H LD HL 90H LD GXPOS HL LD 8 HL LD LD XOR LD LD DOGRPH 00089 0008DH GRPPRT Nom Adresse Type R le Entr e Sortie Modifie Note SCALXY Adresse Type R le Entr e Sortie Modifie Note CALL EXTROM RET END DEBUT GRaPhic PRinT GRPPRT 00089H SUBROM MSX2 affichage d un caract re sur cran graphique code ASCII du caract re GRPACX abscisse du pixel o doit s afficher le caract re GRPACY ordonn e du pixel o doit s afficher le caract re ATRBYT couleur du caract re LOGOPR op rateur logique rien rien Valide dans les SCREEN 5 8 Voir DOGRPH pour l explication de LOGOPR SCALe SCALXY 0008DH SUBROM MSX2 v rification et ventuellement ajustement des valeurs du curseur graphique valeur de X 0 DE valeur de Y 0 0 BC valeur de X valide DE valeur de Y valide indicateur carry 1 une des coordonn es tait hors de l cran AF Lorsque l une des deux coordonn es est n gative cette routine prend 0 comme nouvelle coordonn e De m me si une coordonn e d passe la valeur maximale autoris e
159. hes La configuration minimum que l on est certain de trouver sur tout ordinateur se compose de sur 8 une page de m moire vive de 0C000H dans n importe quel slot deux pages 32 Ko de m moire morte contenant le MSX Basic version 1 0 et le Bios un port cartouche occupant un slot primaire sur MSX2 quatre pages cons cutives 64 Ko de m moire vive dans n importe quel slot trois pages 48 de m moire morte divis e en deux parties Main ROM et Sub ROM dans n importe quel slot deux ports cartouches occupant deux slots primaires 2 3 UTILISER LES SLOTS Dans toutes les routines du Bios et variables syst mes le num ro d un slot est toujours cod de la m me mani re 7 6 5 4 3 2 1 0 EXT 2 2712770 551 550 PP1 PPO SSI et SSO ces deux bits donnent le num ro du slot secondaire de 0 3 PP1 et PPO alors que ceux ci d finissent le slot primaire de 0 3 20 2 ces bits varient suivant le contexte dans tous les cas ils n ont aucun rapport avec les slots EXT le bit de poids fort de l octet est un flag qui indique qu il s agit d un slot secondaire EXT 1 ou alors d un slot primaire EXT 0 Les variables syst mes li es aux slots EXPTBL type MSX1 MSX2 cette variable syst me contient quatre octets chaque octet indique si le slot primaire correspondant est tendu slot secondaire l octet est 080 ou
160. ie Note 000 PINLIN Nom Adresse Type R le Entr e Sortie Modifie Note CoNVert CHaRacter CNVCHR 000ABH ROM MSXI1 1 test si header graphique et transformation du caract re suivant si c est le cas code du caract re indicateur carry 0 le code re u est un header graphique 01 indicateur carry 1 indicateur z ro 1 le code a t transform indicateur carry 1 indicateur z ro 0 le code n a pas t transform car ce n tait pas un caract re graphique AF en entr e si contient 01 code de header graphique le flag GRPHED est mis 1 Le caract re suivant envoy la routine sera transform masquage du bit 6 condition que son code soit compris entre 65 et 95 Program INput LINe PINLIN O00AEH ROM MSXI1 1 prise de ligne au clavier jusqu un STOP ou un retour chariot rien HL adresse du premier octet dans le buffer 1 indicateur carry 1 un C a eu lieu tout appel au hook H PINL si AUTFLG est 1 appel INLIN 000 INLIN Nom Adresse Type R le Entr e Sortie Modifie Note 000B4H QINLIN Nom Adresse Type R le Entr e Sortie Modifie Note 000B7H Nom Adresse Type R le Entr e Sortie Modifie Note INput LINe INLIN 000B1H ROM MSXI1 1 prise de ligne au claiver jusqu un STOP ou un retour chariot rien
161. ilisateur et la signification des informations qu ils contiennent Registre 0 0 DG IE2 5 M4 MSX1 MSX2 DG r serv MSX2 1 pour mettre le bus de couleur en mode lt entr e gt et r cup rer les donn es en VRAM IE2 r serv MSX2 1 pour autoriser les interruptions du crayon optique 1 r serv MSX2 1 pour autoriser les interruptions du scan horizontal 5 r serv MSX2 bit de mode graphique r serv MSX2 bit de mode graphique M3 MSXI et MSX2 bit de mode graphique EV r serv MSX1 1 pour une entr e vid o externe 0 interdit l entr e vid o externe Note pour plus de d tails sur les bits de mode graphique voir le registre 1 du VDP ci dessous Registre 1 0 BL IEO M2 0 SI MAG MSX1 MSX2 BL MSXI et MSX2 1 pour allumer l cran Screen display enable gt 0 pour teindre l cran sauf la marge 0 MSXI et MSX2 autorise les interruptions du VDP MI MSXI et MSX2 bit de mode graphique M2 MSXI et MSX2 bit de mode graphique SI MSXI et MSX2 bit de taille des sprites lt size gt 1 pour les sprites 16x16 0 pour les sprites 8x8 MAG taille des sprites 1 pour les sprites doubles 0 pour les sprites ordinaires note le mode graphique est d termin par les bits MS de la mani re suivante 5 4 M3 M2
162. ions Basic OPEN AS 1 puis PRINT 1 Texte le texte s affiche en grandes lettres 4 fois la taille normale 40 colonnes SCREEN 4 MSX2 R solution 256 sur 192 contraintes de couleur Texte 8 x 8 32 caract res sur 24 lignes Couleurs 16 couleurs parmi parmi 512 Sprites type 2 Taille d une page cran 16 Ko Nombre de pages maximum 8 avec 128 Ko de VRAM Table des noms 01800H 01AFFH 768 octets Table des couleurs 02000H 037FFH 6144 octets Table des formes 00000H 017FFH 6144 octets Table des attributs sprite 01E00H 01E7FH 128 octets Table des formes de sprite 03800H 03FFFH 2048 octets Table des couleurs sprite 01C00H 0D7FFH 512 octets Table de palette 01E80H 01E9FH 32 octets Le SCREEN 4 est en tous points identique au SCREEN 2 l exception des sprites qui sont de type 2 Voir le paragraphe concernant le SCREEN 2 pour plus d information sur l affichage Pour de plus amples renseignements sur les sprites voir le paragraphe 5 10 Les sprites et leur fonctionnement SCREEN 5 R solution Texte Couleurs Sprites Taille d une page cran Nombre de pages maximum Table des noms 192 lignes Table des couleurs 212 lignes Table des formes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette MSX2 256 sur 192 bitmap 256 sur 212 bitmap 8 x 8 32 caract res sur 24 ou 26 5 lignes 1
163. ire 2 3 000 adresse appeler code 780 de XOR A le de routine 0 0000 dans le slot 2 3 fera reprendre l ex cution du programme avec ce XOR A 2 4 LE MEMORY MAPPER 5 2 Certains MSX2 disponibles en France se trouvent quip s d un dispositif perfectionn permettant de g rer tr s facilement des quantit s assez importantes de m moire vive 128 ou 256 Ko de RAM sur les mod les disponibles chez nous mais pouvant aller en th orie jusqu 4 Mo Vous avez sans doute remarqu que le principal d faut du syst me de slots r side dans l impossibilit de changer de page Ainsi la page 2 par exemple peut tre choisie dans n importe quel slot dison le slot 3 1 Cependant il est impossible de prendre la page 0 su slot 3 1 comme page 2 en m moire centrale Avec le memory mapper ce genre de probl me n existe plus Voyons le sch ma d une m moire vive totale de 128 Ko memory mapp e page 7 Ce que voit page 6 le processeur page 5 _ 4 page 2 page 4 4 7 0 000 page 3 gt page 4 08000H page 2 Se page 0 04000 page 1 ERR 00000H page 0 M moire centrale M moire mapp e On parle de page logique pour la m moire contenue dans le memory mapper et de page physique pour la m moire centrale Pour chacune des 4 pages physiques de la m moire centrale on donne
164. is j emploie le mot octet gt et non lt byte gt Lorsqu une traduction paraissait hasardeuse j ai toujours donn le terme am ricain entre parnth ses De plus suivant le vieil adage des informaticiens rien ne vaut la pratique presque toutes les explications se trouvent accompagn es d un exemple de programme de Basic ou de langage machine l illustrant Lisez l explication si la compr hension n est pas imm diate essayez de taper le programme qui l accompagne Si vous ne voyez toujours pas votre cas est sans espoir cantonnez vous au T l 7 jours Certains points ne sont pas abord s dans ce livre s agit tout d abord du micro processeur Si vous avez des probl mes avec cet l ment je ne peux que vous conseiller l achat de Programmation du 780 de Rodnay Zaks chez Sybex v ritable Bible du 780 de plus de six cent pages De m me je ne m tends pas sur le fonctionnement du processeur sonore PSG Programmable Sound Generator Tous les manuels livr s avec les diff rents mod les de MSX donnent les renseignements n cessaires la programmation de ce composant Voyez tout de m me le paragraphe 6 6 Faire de la musique en langage machine du chapitre 6 Ce manuel ne comporte aucune information sur le mat riel m me hardware Il n aborde les diff rents l ments qu au niveau logiciel software Il s adresse donc avant tout au programmeur et non l lectronicien Retrouver un
165. isquettes routine OUT lt OUt 1 gt sortie dans un fichier utilis par le syst me d exploitation des disquettes H INDS routine INDSKC INput DiSK Character utilis par le syst me d exploitation des disquettes H RSLF routine qui s lectionne l ancien lecteur de disquettes comme lecteur actuel utilis par le syst me d exploitation des disquettes OFE94H H SAVD Appel Fonct OFE99H Non H LOC Appel Fonct OFE9EH H LOF Appel Fonct OFEA3H Appel Fonct Appel Fonct OFEADH Appel Fonct 2 H PARD Appel Fonct H SAVD routine sauvegarde le lecteur actuel utilis e par les instructions LOF LOC FPOS etc du Disk Basic utilis par le syst me d exploitation des disquettes H LOC routine LOC LOCation utilis e lors de l instruction LOC du Disk Basic utilis par le syst me d exploitation des disquettes H LOF routine LOF Length Of File utilis e lors de l instruction LOF du Disk Basic utilis par le syst me d exploitation des disquettes routine End Of File utilis e lors de l instruction EOF du Disk Basic utilis par le syst me d exploitation des disquettes H FPOS routine FPOS File POSition
166. l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif idem modif idem INSTRUCTION High speed Move to Memory from VDP Sch ma Fonction Source Destination Registres R36 R37 DX0 DX8 DX DY NX 9938 permet de remplir m moire vid o une seule donn e la diff rence des routines du Bios BIGFIL ou la m moire vid o est d finie par des coordonn es en X et Y V9938 VRAM Voici la liste des registres du processeur vid o charger pour ex cuter la commande abscisse 0 511 DX7 DX6 DX5 DX4 DX3 DX2 DXO DX8 abscisse du pixel origine En SCREEN 5 et 7 le bit de poids faible est perdu En SCREEN 6 les bits et DX1 sont perdus R38 R39 DY0 DY9 R40 R41 NX0 NX8 R42 R43 NY9 R44 45 MXD DIY DIX Ex cution DY6 DY5 DY4 DY2 Dei DY0 ordonn e 0 0 0 DY9DY8 0 1023 ordonn e du pixel origine NX7 6 5 4 NX2 NX0 d placement horizontal 0 0 0 0 0 0 0 NX8 0 511 nombre de pixels allumer dans la direction horizontale En SCREEN 5 et 7 le bit NX0 est perdu En SCREEN 6
167. largeur LD HL LD 80H 20H 1 calcul de la hauteur LD NY HL XOR A ARG doit toujours tre mis z ro LD ARG A pas oublier LD HL SX LD IX BLTDV CALL EXTROM RET DB 022 55 1 5 7 022 000 END DEBUT Si vous appelez cette routine depuis le Basic faites le par un DEFUSR amp HCO000 A USR 0 N oubliez pas le dollar Dans A vous aurez le nom du fichier Pour plus de pr cisions voir la routine BLTVV BLock Transfert Memory from Disk BLTMD 001ASH SUBROM MSX2 transfert de la disquette vers la m moire centrale HL 0F562H rien tout Exemple d utilisation COPY lt 8 7 gt TO lt 00000 gt ORG 0 000 EQU 0015 BLTMD EQU 001 5 EQU 0 562 pointeur sur le nom de fichier SPTR EPTR EQU FNPTR 4 adresse de d part en m moire EQU FNPTR 6 adresse de fin en m moire DEBUT LD NOM LD HL LD 0 000 LD SPTR LD 0D020H LD ne pas oublier LD HL FNPTR LD IX BLTMD CALL EXTROM RET NOM 022H A ESSAI SC7 022H 000H END DEBUT Si vous appelez cette routine depuis le Basic faites le par un DEFUSR amp HC000 A USR 0 N oubliez pas le dollar Dans A vous aurez le nom du fichier 001 9 BLTDM BLock Transfert Disk from Memory Nom BLTDM Adresse 001A9H SUBROM Type MSX2 R le transfert de la m m
168. leur comme 0 0 0 0 X x Y Y I I I I I I I E couleur partie gauche du pixel RE couleur partie droite du pixel Voici un exemple en Basic 10 VDP 9 VDP 9 OR amp H20 REM POUR UTILISER LA COULEUR 0 20 SCREEN 6 COLOR 10 0 amp B11001 CLS 30 COLOR 1 7 0 0 COLOR 2 0 7 0 COLOR 3 0 0 7 40 FOR I 10 TO 310 STEP 100 LINE 1 100 1 75 200 1 10 100 NEXT 50 SPRITES 1 STRINGS 8 255 60 OPEN gt AS 1 PRESET 110 80 PRINT 1 lt SCREEN 6 QUATRE COULEURS MAXI 70 FOR I 0 TO 248 SPRITE 1 1 25 amp B0111 NEXT 80 FOR I 248 TO 0 STEP 1 PUT SPRITE 1 1 25 amp B0111 NEXT 90 GOTO 70 Le registre 2 du V9938 indique la page afficher 0 3 R2 0 16 15 1 1111111 A16 et AIS page afficher 0 3 Les modes d cran 7 et 8 ne sont disponibles que sur les MSX2 quip s de 128 Ko de m moire vive vid o VRAM SCREEN 7 MSX2 R solution 512 sur 192 bitmap 512 sur 212 bitmap Texte 8 x 8 64 caract res sur 24 ou 26 5 lignes Couleurs 16 couleurs parmi parmi 512 Sprites type 2 Taille d une page cran 64 Ko Nombre de pages maximum 2 avec 128 Ko de VRAM Table des noms 192 lignes 00000H 49152 octets 212 lignes 00000 54272 octets Table des couleurs Table des formes Table des attributs sprite 0FA
169. leurs Sprites Taille d une page cran Nombre de pages maximum Table des noms Table des couleurs Table des formes Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette MSX2 MSX1 MSX2 256 sur 192 contraintes de couleur 8 x 8 32 caract res sur 24 lignes 15 couleurs MSX1 16 couleurs parmi parmi 512 MSX2 type 1 16 8 avec 128 Ko de VRAM 01800 02000 037FFH 00000 017FFH 01 00 01B7FH 03800 03 02020 0203FH 768 octets 6144 octets 6144 octets 128 octets 2048 octets 32 octets Le mode d cran 2 ressemble beaucoup au mode texte dans son utilisation Voici le sch ma de fonctionnement du mode graphique SCREEN 2 les nombres sont tous en hexad cimal Table des noms 00 01 02 03 04 05 ga 1C ID IE IF 20 121 22 23 24 2E 2F 30 31 32 40 Table des formes forme 01 8 octets forme 33 P gt u 021H 8 octets Table des couleurs couleur de la forme 1 8 octets couleur de p gt forme 33 8 octets Ecran La table des noms est constitu e de 768 octets Le processeur remplit cette table avec des nombre
170. leurs L adresse r elle en m moire s obtient donc en multipliant le contenu du registre 3 par 40H Par exemple si l on lit OB6H dans le registre 3 l adresse de d but de la table des couleurs est 0B6H 40H 2D80H L adresse peut varier entre 0 et ATTENTION en SCREEN 2 le fonctionnement est diff rent la table des couleurs ne peut se trouver qu en 0 ou 2000 Seul le bit de poids fort intervient Les autres bits sont tous 1 Le registre 3 ne devra donc contenir que 7FH ou FFH s utilisent avec 14 15 et C16 du registre 10 du 9938 Ces 11 bits codent l adresse du d but de la table des couleurs comme sur voir ci dessus L adresse peut varier entre 0 et 00 F16 F15 14 12 MSX1 MSX2 n existent pas codent les 3 bits de poids fort de l adresse du d but de la table des formes en VRAM L adresse v ritable s obtient donc en multipliant la valeur de ces 3 bits par 800H Par exemple si les bits sont 100 soit 4 en hexa la table des formes se trouve en 4 800 2000 L adresse peut varier dans ces conditions entre 0 et 3800H ATTENTION en SCREEN 2 le fonctionnement est diff rent La table des formes ne peut commencer qu en 0 ou 2000H Seul le bit 2 du registre 4 intervient Les 2 bits de poids faible sont toujours 1 Les deux seules valeurs possibles sont donc 03H et 07H De surcro t le bit 2 du registre 4 doit toujours tre positionn
171. lioth que de base le programmeur ne perdra plus de temps en recherches inutiles et pourra se consacrer enti rement la programmation de son application 6 1 REVENIR L INTERPRETEUR BASIC Il est souvent utile de pouvoir retourner l interpr teur Basaic depuis un programme en langage machine autrement que par le du 780 Pour cela il faut 1 s lectionner la Main ROM en pages 0 et 1 2 effectuer un saut en 0409 Ce qui donnerait en langage machine les lignes de programme suivantes MNROM EQU ENASLT EQU 00024 RETURN EQU 0409BH 2 LD LD 0 105 0 CALL ENASLT LD 04000H Basic en page 1 CALL ENASLT JP RETURN Lorsque l on travaille sous Basic ou que l on ne touche pas aux slots il suffit d effectuer le JP 0409 6 2 5 1 5 2 Pour savoir si l ordinateur utilis est un MSX1 ou un 5 2 il suffit d examiner le contenu de case m moire 0002DH en Main ROM contenu de 02DH ordinateur 0 MSXI 1 MSX2 2 MSX3 3 255 non d fini Attention la ne se trouve pas toujours en slot 0 0 sur MSX2 Il faut lire le contenu de la variable syst me MN ROM pour conna tre le slot de la Main ROM 6 3 LE PRINT EN LANGAGE MACHINE Je vous propose une petite routine tr s simple fort utile en mode texte Elle permet d afficher une cha ne de caract res l cran en 32 40 ou 80 colon
172. mme une couleur normale TP 1 savoir red finissable par exemple avec l instruction COLOR 0 R G Dans le cas contraire TP 0 la couleur n 0 est transparente Il est possible alors d avoir un fond en vid o par exemple utilis lors de l incrustation vid o En Basic on modifie l tat de TP par VDP 9 VDP 9 OR amp H20 pour mettre TP 1 VDP 9 VDP 9 AND amp HDF pour mettre TP 0 Registre 9 LN 0 SI 50 IL EO NT MSX2 LN 1 hauteur de l cran r gl e 212 points 0 hauteur de l cran r gl e 192 points 50 et SI 0 normal 1 digitalisation incrustation etc 2 vid o externe IL 1 affichage entrelac NTSC 0 affichage non entrelac 0 1 alternance de deux crans mode graphique 0 pas d alternance Pour plus de pr cisions voir le registre 13 NT 1 affichage PAL 313 lignes 50 Hertz 0 affichage en NTSC 256 lignes 60 Hertz DC 1 DTCLK en mode entr e 0 DTCLK en mode sortie Registre 10 00 0 0 0 6 CIS 14 MSX2 14 16 sont les 3 bits de poids fort de l adresse du d but de la table des couleurs qui en comporte 17 Voir le registre 3 pour plus de pr cisions Registre 11 00000 0 516 515 MSX2 S15 et S16 sont les 2 bits de poids fort de l adresse du d but de la table des attributs de sprites qui en comporte 17 Voir le registre 5 pour plus d
173. moire vive qui leur est r serv e peut parfois constituer une zone de travail appr ciable avec les tr s gros programmes et les in vitables probl mes de place m moire qui les accompagnent Enfin le programmeur qui souhaite d velopper des routines en langage machine qui coexistent avec l interpr teur Basic devra tre particuli rement attentif cette zone m moire 4 2 LA LISTE DES VARIABLES SYSTEME Adresse 0F39AH 0F3B2H 0 5 0F3B7H 0F3B9H 0F3BBH Nom USRTAB LINL40 LINL32 LINLEN CRTCNT CLMLST TXTNAM TXTCOL TXTCGP TXTATR TXTPAT Long 20 N ND ND Fonction Liste des adresses d finies lt DEFUSRx gt Longueur d une ligne en mode 0 37 par d faut Longueur d une ligne en mode 1 29 par d faut Longueur de la ligne actuelle modifi par WIDTH Longueur de la page actuelle Utilis par TAB Adresse de la table des noms en mode 0 Inutilis e Adresse de la table des formes en mode 0 Inutilis e Inutilis e OF3CSH 7 9 5 7 9 2 4 7 O
174. mot clef est inconnu il faut mettre l indicateur Carry 1 puis rendre la main l interpr teur par un sans avoir modifi HL Dans l exemple suivant nous cr ons un mot clef lt FILLSCREEN qui remplit l cran en SCREEN 0 uniquement 40 ou 80 colonnes avec le caract re qui 10 _FILLSCREEN K Z gt Cet exemple fonctionne parfaitement sur MSX1 et MSX2 ORG 0C000H ENASLT EQU 00024 FIND LD 0 LD 04000H LOOP LD OR 080 PUSH BC PUSH AF PUSH HL CALL ENASLT MNROM RETOUR FILVRM LOOP2 SYNERR OUT LD HD A LD B HL CP B POP BC IR Z RAM DINZ LOOP JR RETOUR LD IX 04000H LD IX 0 041H LD IX 1 042H LD IX 2 000H LD IX 3 000 LD IX 4 000H LD 5 0 JR 00000H EQU LD A MNROM LD 04000H CALL ENASLT RET ORG 0 100 EQU 00056 PUSH HL LD WORD LD 0FD89H LD A DE LD B HL CP B JR NZ SYNERR CP 0 INC HL INC DE JR Z OUT JR LOOP2 POP HL XOR A CCF RET POP HL PUSH HL LD CP 028 JR NZ SYNERR INC HL LD 022 IR NZ SYNERR HL LD HL LD 022 IR NZ SYNERR INC HL LD 029 IR NZ SYNERR LOOP3 INC HL LD 020 JR 27 LOOP3 CP 0 JR Z SUITE CP IR NZ SYNERR SUITE PUSH HL L
175. mpliqu es Le sprite se d compose en 4 parties 3 a 0 000 0 001 0 002 0 003 0F004H 0F005H 0F006H 0F007H 0F008H 0F009H 0 0 010 0F011H 0F012H 0F013H 0F014H 0F015H 0F016H 0F017H 0F018H 0F019H OFOIAH OFOIBH OFOICH OFOIDH OFOIEH 7 0 11111110 10000010 10001110 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001000 10001111 10000000 11111111 01111111 01000001 01110001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 00010001 11110001 00000001 11111111 X X X X e o X X X X X X X gt gt o A X X X X X X gt gt X X X X X X X X X X X K X X X X huit octets pour le premier quart du sprite n 0 huit octets pour le second quart du sprite n 0 huit octets pour le troisi me quart du sprite n 0 huit octets pour le dernier quart du sprite n 0 La r union des quatre parties donne le r sultat ci
176. n e du pixel d arriv e HL pointeur r actualis tout Valide dans les SCREEN 5 8 Cette routine tant difficile mettre en uvre est pr f rable d utiliser LINE 058 en main ROM ou 00085 en Sub ROM BOXLIN 00081H SUBROM MSX2 trac d un rectangle HL pointeur de texte Basic BC abscisse du pixel de d part DE ordonn e du pixel de d part GXPOS abscisse du pixel d arriv e ordonn e du pixel d arriv e HL pointeur r actualis tout Valide dans les SCREEN 5 8 Cette routine tant difficile mettre en uvre est pr f rable d utiliser NVBXLN 000C9H en Sub ROM 00085 DOGRPH Nom Adresse Type R le Entr e Sortie Modifie Note DO GRaPHic line DOGRPH 00085H SUBROM MSX2 trac de ligne BC abscisse du pixel de d part DE ordonn e du pixel de d part GXPOS abscisse du pixel d arriv e ordonn e du pixel d arriv e ATRBYT couleur utiliser LOGOPR op rateur logique appliquer rien AF Valide dans les SCREEN 5 8 LOGOPR logical operation peut tre 0 0000 IMP 8 1000 TIMP 1 0001 AND 9 1001 TAND 2 0010 10 1010 TAND 3 0011 11 1011 TXOR 4 0100 NOT 12 1100 TNOT La seconde s rie d op rateurs est identique la premi re si ce n est qu un test est effectu pour savoir si le fond est en couleur 0 Si tel est le cas l op rat
177. n USR met 3 dans la case m moire 0 663 pour indiquer une cha ne de caract res Elle charge ensuite l adresse du string descriptor en 0F7F8H et 0F7F9H Apr s traitement 0 663 doit contenir 3 si l on renvoie au Basic une cha ne de caract res L adresse du nouveau string descriptor gt doit tre en 0F7F8H et 7 9 Le string descriptor est une zone m moire de 3 octets qui pour une cha ne de caract res contient la longueur de la cha ne sur le premier octet puis l adresse du premier octet de la cha ne sur les 2 octets suivants Voici un exemple qui transforme tous les caract res de majuscules en minuscules dans une cha ne ORG 0 000 LD 0F663H CP 3 RET NZ LD HL OF7F8H LD B HL INC HL LD E HL INC HL LD HL EX DE HL LOOP LD OR 020 CALL 2 DJNZ LOOP RET Apr s avoir tap et assembl ce programme entrez les lignes Basic suivantes et faites RUN 10 CLS 20 CLEAR 200 amp HC000 30 DEFUSR amp HC000 40 A TRANSFORMATION 50 A USR A 60 PRINT PRINT LIST 6 8 LES CODES DE CONTROLE CTRL Chacun sait que sous Basic en enfon ant simultan ment les touches CTRL et L on efface l cran Le MSX dispose de plusieurs autres codes du m me type qui peuvent tre utilis s en mode direct ou dans un programme En voici la liste code touches effet 2 CTRL place le curseur au d but du mot pr c dent
178. nce entre slot primaire et secondaire 11 suffit de consid rer qu il y a 16 slots appel s slots secondaires les quatre premiers tant num rot s 0 0 0 1 0 2 et 0 3 Les quatre suivants seront donc les slots secondaires 1 0 1 1 1 2 1 3 et ainsi de suite La m moire centrale sera d termin e par le num ro de slot pour chaque page 3 3 2 on prend la page 3 du slot 3 2 comme page 3 du Z80 2 1 3 on prend la page 2 du slot 1 3 comme page 2 du Z80 1 3 0 on prend la page 1 du slot 3 0 comme page 1 du 780 0 0 0 on prend la page 0 du slot 0 0 comme page 0 du 780 M moire centrale Voici un exemple de disposition sur un MSX1 le VG 8020 19 de Philips Page 3 MEM Page 2 MEM Page 1 BAS MEM Page 0 BAS MEM 0 0 1 0 2 0 3 0 3 1 3 2 3 3 Quelques remarques Les pages 0 et 1 du slot 0 0 contiennent l interpr teur Basic et le Bios en m moire morte Les slots 1 0 et 2 0 correspondent aux deux ports cartouches du 8020 Un jeu en cartouche pourra tre lu et copi en lisant le contenu du slot 1 0 ou 2 0 comprend pourquoi on ne dispose que de 32 Ko m me un peu moins sous Basic Le 780 voit l interpr teur Basic en pages 0 et 1 Il ne reste donc que les pages 2 et 3 pour de la m moire vive Lorsqu il n y a qu un slot secondaire dans un slot primaire celui ci peut prendre n importe quel
179. ne 2048 divis par 8 soit 256 paquets Chaque paquet correspond un caract re code ASCII et en d finit la forme Par exemple le 66 me paquet code le caract re et ressemble Paquet n 66 donc octet 66 8 528 210 On trouvera donc l information qui nous int resse l adresse de d but de la table des formes 01000H plus 210H soit 01210H 01210H contient 240 ou OFOH 11110000B X X X X 01211H contient 72 ou 048 or 048 01001000B X X 01212H contient 72 ou 048H or 048H 01001000B X X 01213H contient 112 ou 070H or 070H 01110000B XXX 01214H contient 72 ou 048H or 048H 01001000B X X 01215H contient 72 ou 048H or 048H 01001000B X X 01216H contient 240 ou or OFOH 11110000B X X X X 01217H contient 0 ou 000 000H 00000000B Les deux bits de poids faible doivent toujours rester 0 et ne sont de toute mani re jamais pris compte car tout caract re se trouve d fini dans une matrice 6 sur 8 Red finissons pr sent le caract re B faisons la d marche en sens inverse X X X X X 11111000B OF8H X X 10001000B 088H X XXX donc en 10111000B 8 soit les valeurs X X X 10011000B 098H X XXX binaire 10111000B 0B8H en hexad cimal X X 10001000B 088H X X 10001000B 088H X X X X X 11111000B OF8H Il suffit pr sent d ex cuter le petit programme suivant 10 SCREEN 0 WIDTH 80 CLS AD amp H1210 20 FOR I 0 TO 7 READ A VPOKE A
180. ne dispose de toutes mani res que de 160 octets et que si l on tend les contenu d une touche de fonction ce ne peut tre qu aux d pens de la suivante Le petit programme Basic suivant illustre cet exemple 10 AD amp HF87F CLS 20 READ A IF LEN A gt 39 THEN PRINT lt Impossible END 30 FOR TO LEN A 40 1 I 1 50 POKE AD 1 LASC I 60 70 POKE 1 1 0 100 DATA C est un peu long jeune homme 4 4 LA LISTE DES HOOKS Un hook est une zone m moire de cinq octets en m moire vive RAM permet d tendre les fonctions en m moire morte Au d part les cinq octets contiennent tous comme dans l exemple suivant HOOKX CALL HOOKX LD A 0A3H lt RET RET RET RET Cependant il est facile de modifier les 5 octets afin de d tourner la fonction en ROM comme CALL hp RST 6 LD A 0A3H DB slot DW adresse p gt XOR A RET Pour illustrer le fonctionnement des hooks je vous propose un exemple en Basic qui utilise le hook H LIST pour emp cher l acc s la liste du programme 10 POKE amp HFF89 On met dans H LIST 20 POKE amp HFF8A amp HC3 30 POKE amp HFF8B amp H9B POP HL 40 POKE amp HFF8C amp H40 JP 0409BH Il suffit de faire POKE amp HFF89 201 pour restituer son pouvoir la commande LIST Voici la liste des hooks pour les MSX1 et MSX2 Elle comprend le nom
181. nes ECRIRE LD A HD CP 0 7 CALL 2 INC JR ECRIRE suffit de charger dans l adresse du premier caract re de la cha ne afficher Puis d appeler la routine comme dans l exemple suivant EXEMPL LD DATA CALL ECRIRE RET DATA DB COUCOU 0 2 Ne pas oublier de mettre un 0 la fin de la cha ne Cette routine comme le PRINT du Basic g re les codes CTRL et ESC 6 4 SYSTEME DISQUETTES CASSETTES Pour savoir si l ordinateur poss de un lecteur de disquettes ou non il faut v rifier l tat d un hook modifi par le syst me d exploitation de disquette Le hook H PHYD convient parfaitement Ainsi si adresse de contient code du 780 vous travaillez sur un syst me cassette Si 7 contient autre chose que qui devrait tre code RST 30 alors l ordinateur poss de un lecteur de disquette int gr ou non De plus lorsqu un lecteur de disquette est pr sent certaines variables syst me sont modifi es adresse contenu 2 nombre de lecteurs sur le premier contr leur OFB22H num ro de slot du premier contr leur OFB23H nombre de lecteurs sur le second contr leur OFB24H num ro de slot du second contr leur OFB25H nombre de lecteurs sur le troisi me contr leur 26 num ro de slot du troisi me contr leur 0 27 nombre de lecteurs sur le quatri me
182. nn es de 225 31 en compl ment 2 255 et 0 191 Ceci permet de faire entrer un sprite dans l cran 31 1 ou 225 255 ou au contraire de le faire sortir 183 191 pour un 8 sur 8 petit petit Notez que si l ordonn e de n importe quel sprite est 208 ODOH alors tous les sprites dans les plans sup rieurs deviennent invisibles Par exemple si l on met l ordonn e du sprite contenu dans 12 208 alors tous les sprites dans les plans 13 31 disparaissent L abscisse prend une valeur entre 0 et 255 Pour faire sortir le sprite pas de probl me on utilise les abscisses entre 247 et 255 pour un sprite 8 sur 8 Par contre pour le faire entrer il faut utiliser le bit EC voir ci dessous Le num ro de sprite donne la forme utiliser l affichage On peut d finir 256 sprites 8 sur 8 ou 64 sprites 16 sur 16 pour les sprites 8 sur 8 on choisit simplement le num ro de celui que l on d sire afficher Pour les sprites 16 sur 16 on donne le num ro de sprite multipli par quatre La couleur est toujours cod e sur 4 bits Le bit EC Early Clock sert d caler le sprite de 32 pixels vers la gauche Ceci permet de faire entrer un sprite l cran comme dans l exemple suivant 10 screen 2 color 10 0 0 cls 20 sprite 1 string 8 255 30 for i 24 to 40 for j 0 to 100 next j 40 put sprite 0 i 35 amp h1b03 amp h87 50 next i 55 if not strig 0 then 55
183. num ro Par exemple on peut acc der au slot 0 0 en l appelant 0 0 aussi bien que 0 1 0 2 ou 0 3 On peut m me le d signer tout simplement comme le slot 0 Il en va de m me pour les slots 1 0 et 2 0 dans l exemple du 8020 Par contre on doit obligatoirement utiliser le num ro 3 2 pour la m moire vive m me s il n y a rien dans les autres slots C est pour cette raison qu il est pr f rable de toujours prendre la d nomination en slot secondaire slot 0 0 et non primaire slot 0 Voici un exemple de disposition sur un MSX2 le VG 8235 de Philips Page 3 MEM Page 2 MEM Page 1 BAS DOS Page 0 BAS SUB MEM 0 0 1 0 2 0 3 0 3 1 3 2 3 3 Quelques remarques Les pages 0 et 1 du slot 0 0 contiennent le 5 et le Bios en m moire morte La page 0 du slot 3 0 renferme la Sub ROM ou ROM auxiliaire qui contient la plupart des instructions suppl mentaires du Basic version 2 0 par rapport au Basic 1 0 du MSX1 Les pages 0 3 du slot 3 2 contiennent 64 Ko de m moire vive les autres 64 Ko de la m moire vive totale qui compte 128 Ko sur le 8235 sont pr sents dans le memory mapper que nous verrons plus loin dans ce chapitre Les fonctions du Disk Basic le 8235 est quip d un lecteur de disquettes int gr se trouvent en m moire morte en page 1 du slot 3 3 Les slots 1 0 et 2 0 correspondent aux deux ports cartouc
184. o de VRAM direction verticale pour NY 0 bas 1 haut direction horizontale pour NX 0 droite 1 gauche R46 LO3 LO2 LOI LOO commandes LOO LO3 op rateur logique appliquer 0000 direct 1000 Tdirect 0001 AND 1001 TAND 0010 1010 0011 1011 0100 1100 TNOT Ex cution pour ex cuter l instruction voici la marche suivre 1 charger les registres ci dessus sauf le 46 2 mettre 1000B 08H les 4 bits de poids fort du registre 46 charger les 4 bits de poids faible avec le code de l op rateur logique d sir 3 avant un autre acc s au processeur vid o lire le registre d tat 2 status tester l tat du bit CE Si celui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 il faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif idem idem INSTRUCTION LINE draw LINE Sch ma Min DX DY VRAM Fonction Source Destination Registres R36 R37 R38 R39 DY0 DY9 R40 R41 NX0 NX8 LINE trace une ligne dans la m moire vid o En r alit l utilisateu
185. o de la derni re erreur 0 415 5 1 Position de la t te de l imprimante 0 au d part 0 416 PRTFLG 1 Flag de sortie sur imprimante 0 pas de sortie OF417H NTMSXP 1 Flag de type d imprimante 0 imprimante MSX 1 autre imprimante OF418H RAWPRT 1 Flag de type caract re 0 pour un caract re cod 1 pour un caract re non cod OF419H VLZADR 2 Adresse du caract re remplac par l instruction lt VAL gt OF41BH OF41CH OF41FH OF55DH 0 55 OF660H 0 661 0F662H 0 663 0 664 0 664 0 665 0F666H 0F668H 0F669H 0F66AH 0F672H 0F674H 0F676H 0F678H 0F67AH 0F698H 0F69BH 0F69DH 0F69FH 0F6A1H 0F6A3H 0F6A5H 0F6A6H 0F6A7H OF6A9H 0F6AAH VLZDAT CURLIN KBUF BUFMIN BUF ENDBUF TTYPOS DIMFLG VALTYP OPRTYP DORES DONUM CONTXT CONSAV CONTYP CONLO MEMSIZ STKTOP TXTTAB TEMPPT TEMPST DSCTMP FRETOP TEMP3 TEMPS ENDFOR DATLIN SUBFLG FLGINP TEMP PTRFLG AUTFLG 318 256 N e N e N N N NN N ra N Caract re remplac par 0 avec VAL Num ro de la ligne en cours d ex cution Crunch buffer utilis par le Basic Petit buffer interm diaire Buffer du mode direct Pour emp cher les lignes trop longues de d passer Position finale stock e ici Flag pour savoir si un DIM est en cours Type de variable d op rateur Flag pour savoir si on peut comprimer des mots cl s par exemple
186. ocesseur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 modif idem modif modif idem INSTRUCTION HMMM High Speed Move to Memory from Memory Sch ma DX DY SX SY NX NY VRAM Fonction autorise la copie rapide d octets d une zone de m moire vid o une autre de taille quivalente VRAM Destination Registres Voici la liste des registres du processeur vid o charger pour ex cuter la commande R32 5 7 SX6 5 5 SX4 SX3 SX2 SX1 5 0 abscisse source R33 0 0 0 0 0 0 0 SX8 0 511 SX0 SX8 abscisse du pixel origine R34 SY7 SY6 5 5 SY4 SY3 SY2 SY1 SYO ordonn e source R35 0 0 0 0 0 0 5 9 SY8 0 1023 5 0 5 9 ordonn e du pixel origine R36 R37 DX8 R38 R39 DY0 DY9 R40 R41 NX0 NX8 R42 R43 NY9 R45 MXD MXS DIY DIX Ex cution 0 7 DX6 DX5 4 DX3 DX2 DX1 abscisse destination 0 0 0 0 0 0 0 DX8 0 511 abscisse du pixel destination En SCREEN 5 et 7 le bit de poids faible est perdu En SCREEN 6 les bits et 1 sont perdus DY7 DY6 DY5 DY4 DY3 DY2 DY1 DYO ordonn e destination 0 0 0 0 0 0 DY9 DY8 0 1023 ordonn
187. oire centrale vers la disquette Entr e 0 562 Sortie Modifie tout Note Exemple d utilisation COPY lt 0D000H gt TO lt A ESSAI SC7 gt ORG 0 000 EQU 0015 BLTDM EQU 001 9 SPTR EQU 0 562 adresse de d part en m moire EPTR EQU SPTR 2 adresse de fin en m moire EQU SPTR 4 pointeur sur le nom de fichier LD HL NOM LD HL LD HL 00000 LD SPTR LD 00020 LD ne pas oublier LD HL SPTR LD IX BLTDM CALL EXTROM RET NOM DB 022 55 1 5 7 022 000 END DEBUT Si vous appelez cette routine depuis le Basic faites le par un DEFUSR amp HCO000 A USR 0 N oubliez pas le dollar Dans A vous aurez le nom du fichier 001 NEWPAD Non Adresse Type R le Entr e Sortie Modifie Note 0 22 3 4 5 6 Ta 8 9 10 11 12 13 14 15 16 17 NEW get touch PAD NEWPAD 001ADH SUBROM MSX2 lecture de la tablette graphique du stylo optique de la souris et du track ball cat A num ro de l op ration effectuer 0 19 A r sultat de l op ration tout Sur MSX2 il est possible d appeler indiff remment cette routine ou GTPAD en main ROM Voici la liste des op rations possibles tablette graphique dans le port joystick n 1 pr te si abscisse lue sur la tabl
188. om Adresse Type R le Entr e Sortie Modifie Note VDP STAtus VDPSTA 00131H SUBROM MSX2 lecture d un des registres de statut du VDP A num ro de registre 0 9 contenu du registre lu F Kana LOck 00135H SUBROM MSX2 traitement du voyant et des touches rien rien AF Sans grand int r t pour les MSX disponibles en France PUT CHaRacter PUTCHR 00139H SUBROM MSX2 d tection de l appui sur une touche du clavier et transformation en code KANA indicateur z ro 1 pas de conversion rien tout Sans grand int r t pour les MSX disponibles en France 0013DH 00141H 00145H SETPAG Nom Adresse Type R le Entr e Sortie Modifie INIPLT Nom Adresse Type R le Entr e Sortie Modifie Note RSTPLT Nom Adresse Type R le Entr e Sortie Modifie Note SET PAGe SETPAG 0013DH SUBROM MSX2 changement de page graphique ACPAGE page affich e l cran DPPAGE page sur laquelle on travaille rien AF INItialize PaLeTte INIPLT 00141H SUBROM MSX2 initialisation de la palette de couleurs rien rien AF BC DE quivalent de l instruction Basic lt gt ReSTore PaLeTte RSTPLT 00145H SUBROM MSX2 r cup ration de la palette depuis la VRAM rien rien AF BC DE quivalent de l instruction Basic lt
189. ond la barre d espacement les boutons 1 et 2 correspondent au premier bouton de tir de chaque joystick alors que les boutons 3 et 4 correspondent au second bouton de tir des joysticks 000DBH 000 GTPAD Nom Adresse Type R le Entr e Sortie Modifie Note GTPDL Nom Adresse Type R le Entr e Sortie Modifie Note GeT touch PAD GTPAD 000DBH ROM 8 1 lecture de la tablette graphique A num ro de l op ration effectuer 0 7 ou 0 19 sur MSX2 A valeur r sultante de l op ration tout la tablette graphique doit tre une NEC 6051 ou compatible Voici la liste des op rations possibles 0 la tablette graphique branch e dans le port joystick n 1 est elle pr te si 0 si 1 coordonn e en X actuelle de la tablette branch e dans le port joystick n 1 2 coordonn e en actuelle de la tablette branch e dans le port joystick n 1 3 le crayon est il sur la tablette branch e dans le port joystick n 1 51 0 si 4 la tablette graphique branch e dans le port joystick n 2 est elle pr te si 0 si non 5 coordonn e en X actuelle de la tablette branch e dans le port joystick n 2 6 coordonn e actuelle de la tablette branch e dans le port joystick n 2 7 le crayon est il sur la tablette branch e dans le port joystick n 2 2 si 0 si P
190. ontr le AV Slot dans lequel se trouve la Sub ROM Compteur de caract res pour une conversion Sauvegarde de caract res lors des conversions Roma kana Flag de conversion Roma kana taille de la VRAM Non utilis r serv des applications futures Sauvegarde de l abscisse du curseur graphique lors de l utilisation de la souris du cat ou du stylo optique Sauvegarde de l ordonn e du curseur graphique lors de l utilisation de la souris du cat ou du stylo optique 2 5 5 OFB36H 8 9 4 OFB41H OFB66H OFB8BH 2 OFBD8H OFBDOH OFBDA H 5 OFCI8H OFC40H OFC48H LOGOPR TOCNT RSFCB RSIQLN SUBROM PRSCNT SAVSP VOICEN SAVVOL MCLLEN MCLPTR QUEUEN MUSICF PLYCNT VCBA VCBB VCBC ENSTOP BASROM LINTTB FSTPOS COSAV FNKSWI FNKFLG ONGSBF CLIKFL OLDKEY NEWKEY KEYBUF LINWRK PATWRK BOTTOM 11 11 40 40 LOGical OPeration code mode de trac O pour IMP 1 pour AND 2 pour OR 3 pour XOR 4 pour NOT Donn e FCB File Control Block de la RS 232 Donn e Emplacement slot de la m moire morte auxiliaire M moire de travail pour l instruction PLAY Sauvegarde de l adresse de la pile
191. ouble 16 sur 16 ou 32 sur 32 avec de gros pixels Pour bien comprendre le m canisme de la taille voici un exemple en Basic 10 SCREEN 2 COLOR 10 0 0 CLS 20 OPEN GRP AS 1 30 SPRITES 0 lt gt 40 PRESET 16 5 PRINT 1 UN SPRIT EQUELCONQUE COLOR 8 1 PRESET 16 155 PRINT 1 50 LINE 63 155 72 164 PRESET 64 155 PRINT 1 0 60 VDP 1 VDP 1 AND amp HFE 70 FOR I 0 TO 248 80 SPRITE 0 1 35 7 90 NEXT 100 LINE 63 155 72 164 1 PRESET 64 155 PRINT 1 lt 1 gt 110 VDP 1 VDP 1 OR 1 120 FOR I 0 TO 248 130 SPRITE 0 1 35 7 140 150 GOTO 50 Collisions Lorsque deux sprites entrent en collision deux pixels ou plus ont les m mes coordonn es le bit 5 du registre d tat status n 0 passe 1 5 sprites Lorsque plus de 4 sprites se trouvent sur la m me ligne le bit 6 5S du registre d tat status n 0 passe 1 De plus les 5 bits de poids faible du registre d tat n 0 donnent le num ro du 5 me sprite Utilisation Pour afficher un sprite il faut d abord le d finir dans la table des formes de sprites Pour les sprites 8 sur 8 il suffit de 8 octets pour d finir un sprite sachant qu un bit repr sente un pixel par exemple en SCREEN 2 la table des formes de sprites pourrait tre huit octets pour le sprite n 0 7 0 qui aura cette forme 03800H 11
192. our plus de pr cisions sur l extension de cette routine la souris au track ball et au crayon optique voir la routine NEWPAD 001ADH en Sub ROM GeT PaDdLe GTPDL 000DEH ROM MSX1 2 lecture du paddle A param tre d entr e 1 12 A valeur du paddle tout Voici la liste des param tres d entr e 1 paddle dans le port joystick 1 2 paddle A dans le port joystick 2 3 paddle dans le port joystick 1 4 paddle dans le port joystick 2 5 dans le port joystick 1 6 dans le port joystick 2 7 paddle D dans le port joystick 1 8 paddle D dans le port joystick 2 9 paddle dans le port joystick 1 10 paddle dans le port joystick 2 11 paddle dans le port joystick 1 12 paddle dans le port joystick 2 000 TAPION TAPe In ON Nom TAPION Adresse 000 MSXI1 1 d marrage du moteur du magn tophone et lecture du header Entr e rien Sortie indicateur carry 1 op ration interrompue apr s une erreur par exemple Modifie tout Note Il existe deux types de headers les longs et les courts Les premiers servent marquer les d buts de fichiers alors que les seconds s parent les diff rentes parties de fichier Voir TAPOON La vitesse en bauds 1200 ou 2400 est d termin e lors de la lecture du header 000 TAPIN TAPe IN Nom TAPIN Adresse 000E4H ROM Type Max 1 Lecture d un octet depuis
193. oyer l octet suivant mettre en dans le registre 45 le premier octet t trait l tape 1 par un OUT du 780 4 lire le registre d tat 2 status 5 le registre d tat du bit CE si celui ci est 0 alors l instruction est termin e sinon on passe l tape 6 6 tester l tat du bit TR si celui ci se trouve 0 alors le processeur vid o n est pas pr t recevoir l octet suivant recommencer en 4 Si par contre ce bit est 1 reprendre toute l op ration au niveau 3 Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif idem idem INSTRUCTION YMMM Y Move to Memory from Memory Sch ma DX DY DX SY NY VRAM Fonction YMMM autorise la copie d octets d une zone de m moire vid o une autre le point d origine de cette derni re ayant la m me abscisse Destination Registres Voici la liste des registres du processeur vid o charger pour ex cuter la commande R34 R35 SY0 SY9 R36 R37 DX0 DX8 R38 R39 DY0 DY9 R42 R43 9 R45 MXD DIY DIX Ex cution Etat SY7 5 6 5 5 5 4 SY3 SY2 5 1 SYO ordonn e source 0 0 0 0 0 0 SY9 SY8 0 1023
194. par l instruction MKD du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H CVI routine CVI ConVert Integer utilis e par l instruction CVI du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H CVS routine CVS ConVert Single utilis e par l instruction CVS du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H CVD routine CVD ConVert Double utilis e par l instruction CVD du Disk Basic d tourn pour obtenir un acc s au lecteur de disquettes H GETP routine GETPTR GET file PoinTeR positionnement sur un fichier utilis par le syst me d exploitation des disquettes OFES3H H SETF Appel Fonct 0 58 H NOFO Appel Fonct OFESDH H NULO Appel Fonct OFE62H Non Appel Fonct OFE67H Appel Fonct OFE6CH H SAVE Appel Fonct H SETF routine SETFIL SET FILe positionnement d un pointeur sur un fichier ouvert au pr alable utilis par le syst me d exploitation des disquettes routine NOFOR FOR clause utilis e par l instruction OPEN du Basic utilis par le syst me d exploitation des disquettes HNULO routine NULOPN NULI file utilis e par les instructions LOAD KILL MERGE etc utilis p
195. premiers octets en g n ral c est aux adresses 04000H et 04001H Elle renferme ensuite en 4002H et 4003H l adresse de d marrage du programme en cartouche 6 13 AJOUTER DES MOTS CLEF AU BASIC Tant qu on y est continuons simuler le fonctionnement d une cartouche Vous savez sans doute qu une cartouche peut parfois contenir des extensions au 5 On acc de ces nouvelles instructions par l instruction CALL ou lt suivi d un nom et ventuellement de param tres L adresse de la routine de traitement des mots clefs est donn e par le 5 me et le 6 me octet adresse 04004H et 04005 de la cartouche chaque fois que le Basic trouve un CALL il appelle la routine cette adresse Le mot clef se trouve alors sur 16 octets dans la zone des variables syst me variable PROCNM adresses 89 98 Le registre double HL pointe sur le premier caract re non blanc code 020H apr s le mot clef ce qui permet de r cup rer les param tres Il faut r actualiser HL de mani re poursuivre l ex cution du programme Basic apr s traitement du CALL Il suffit pour cela d incr menter HL jusqu au moment o HL pointe sur un 0 code de fin de ligne Basic ou code des deux points lt gt s parant deux instructions Basic De plus votre routine doit toujours rendre la main avec l indicateur Carry 0 Dans la routine de traitement tous les registres peuvent tre utilis s sauf SP bien s r Si le
196. qu il autorise par exemple l afichage de deux cent cinquante six couleurs simultan ment l cran comporte par ailleurs un jeu complet d instructions graphiques permettant notamment le trac de lignes de rectangles pleins ou vides de scrolling pour ne citer que quelques fonctions La puissance du 9938 vient du fait que c est un processeur VLSI Very Large Scale Integration c est dire qu il atteint un degr d int gration encore micro informatique Le V9938 restera dans l histoire comme le premier processeur VLSI pr sent en informatique grand public 5 3 FONCTIONNEMENT DU V9938 Le principe d un processeur graphique est relativement simple Il s agit de soulager le micro processeur central de toutes les t ches li es au graphisme en lui adjoignant un second processeur d di l affichage Au niveau de la programmation on peut ignorer totalement la pr sence du processeur et n utiliser que les routines du Bios trac de lignes chargement de pages sprites etc Cette solution si elle offre l avantage de la simplicit prive le programmeur de toute une s rie de fonctions non disponibles avec le Bios scrolling clignotement pour ne citer que deux exemples Il est donc int ressant de pouvoir acc der directement au processeur graphique Ceci s op re par l interm diaire de registres huit sur MSX1 et quarante sept sur MSX2 qui vous donne une id e de la diff rence de puissance entre le processeur du MS
197. r 3 Votre routine doit rendre le contr le au DOS un apr s avoir charg le registre avec l action ex cuter 0 Ignore 1 Retry 2 Abort 6 6 FAIRE DE LA MUSIQUE EN LANGAGE MACHINE La m thode classique pour faire de la musique en langage machine consiste utiliser une interruption pour charger les registres du PSG 8910 intervalle r gulier Le programmeur peut aussi utiliser le syst me des queues musicales Malheureusement cette m thode est difficile mettre en uvre Il existe une m thode tr s simple pour ex cuter langage machine l quivalent de l instruction PLAY du Basic Mais cette m thode N EST PAS GARANTIE officiellement par Microsoft et ASCII Quelque peu empirique elle est cependant officieusement garantie puisqu ASCII affirm qu elle ne serait pas modifi e Cela se v rifie pour l instant puisque tous les MSX vendus en France ce jour ex cutent parfaitement cette routine Vous utilisez cette routine vos risques et p rils quant une ventuelle compatibilit avec les MSX venir Pour ex cuter cette routine 1 faut charger le registre double avec l adresse du premier octet de la cha ne de caract res jouer la cha ne est la m me qui pour un PLAY en Basic puis appeler la routine situ e l adresse 073 5 Main ROM Voici un exemple en langage machine ORG 0 000 PLAY EQU 073 5 LD DATA CALL PLAY RET DATA DB 022H DB OSL6DABD
198. r le chapitre sur le processeur vid o pour plus de pr cisions sur ce registre b6 55 b4 b3 b2 bl b0 H H H N du 5 me sprite 4 2 sprites en collision 4 5 sprites m me ligne flag d interruption 00141H SNSMAT Nom Adresse Type R le Entr e Sortie Modifie Note 100 101 102 103 104 105 106 107 1908 109 110 00144 PHYDIO Nom Adresse Type R le Entr e Sortie Modifie Note ScaN Specified row in MATrix SNSMAT 00141H ROM MSX1 1 lecture d une ligne dans la matrice clavier A num ro de la ligne 0 8 ou 0 10 pour les claviers avec pav num rique A tat de la ligne les bits correspondants aux touches enfonc es sont 0 AF C voici le d tail de la matrice clavier clavier AZERTY b7 b6 b5 b4 b3 b2 bl b0 5 f lt b q DEAD 2 5 J i h g f e d o n 4 1 x 2 V u t 5 2 F1 CODE GRAPH CTRL SHIFT SELECT BS STOP TAB ESC 5 F4 droite bas haut gauche SUP INS EFF SPACE 4 3 2 1 0 opt opt opt e 9 8 7 6 5 Les deux derni res lignes sont utilis es que sur les claviers poss dant des pav s num riques Les touches opt
199. r d finit un triangle rectangle et le processeur vid o en trace l hypot nuse V9938 VRAM Voici la liste des registres du processeur vid o charger pour ex cuter la commande DX7 DX6 DX5 4 DX3 DX2 0 0 0 0 0 0 0 DX8 abscisse du pixel origine DY7 DY6 DY5 DY4 DY3 DY2 DYO 0 0 0 0 0 0 DY8 ordonn e du pixel origine 7 MJ6 15 MJ4 MJO 0 0 0 0 0 0 MJ9 MJ nombre de pixels sur le plus long des c t s abscisse destination 0 511 ordonn e destination 0 1023 nb pixels grand c t 0 1023 R42 R43 NY9 R44 45 MXD DIY DIX MAJ R46 LOO LO3 MI 6 5 MD MIO nb pixels petit c t 0 0 0 M9 0 511 nombre de pixels sur le moins long des c t s 5 4 CR2 donn e SCREEN 5 et 7 seuls les bits CRO CR3 sont utilis s Ils codent la couleur de la ligne 0 15 SCREEN 6 et codent la couleur de la ligne Les autres bits CR2 ne sont pas utilis s SCREEN 8 CR0 CR7 codent la couleur de la ligne 0 0 0 DIY DIX 0 param tres M moire vid o de destination 0 pour s lectionner la
200. r de l affichage des touches de fonction d une et v rification du buffer clavier d autre part rien l indicateur z ro 0 il y a un caract re dans le buffer clavier AF CHaracter GET CHGET 0009FH ROM MSX1 1 attente d un caract re au clavier et retour avec son code rien A code ASCII du caract re AF appel au hook H CHGE 000 2 CHPUT Nom Adresse Type R le Entr e Sortie Modifie Note 000 5 LPTOUT Nom Adresse Type R le Entr e Sortie Modifie Note 000 8 LPTSTT Nom Adresse Type R le Entr e Sortie Modifie Note CHaracter outPUT CHPUT 000A2H ROM MSX1 1 sortie d un caract re sur cran en mode texte A code du caract re rien rien appel au hook H CHPU Line PrinTer OUT LPTOUT 000A5H ROM MSX1 1 sortie d un caract re sur imprimante A code du caract re indicateur carry 1 la routine a t interrompue par un CTRL STOP F appel au hook H LPTO Le CTRL STOP permet de revenir de cette routine en cas de probl me avec l imprimante Line PrinTer STaTus LPTSTT 000A8H ROM MSX 1 v rification de l tat de l imprimante rien A 255 si l imprimante est pr te 0 si elle l est pas indicateur z ro O si l imprimante est pr te 1 si elle ne l est pas AF Appel au hook H LPTS CNVCHR Nom Adresse Type R le Entr e Sortie Modif
201. ravail pour les divisions Accumulateur d cimal Sauvegarde temporaire pendant les multiplications d cimales Idem ci dessus Idem ci dessus Accumulateur d cimal secondaire Dernier nombre al atoire g n r Nombre maximum de fichiers autoris Modifi par MAXFILES Pointeur sur l adresse des donn es du fichier Pointeur sur le buffer du fichier 0 Pointeur sur les sonn es du fichier s lectionn Flag de RUN 0 pour un chargement normal 1 pour une ex cution automatique Nom de fichier pour lt DIRSRC gt Nom du second fichier lors d un 5 Flag de chargement 0 en mode normal 1 pendant un chargement Fin d une sauvegarde binaire Contenu des touches de fonction Emplacement de la forme du caract re en ROM Adresse de la table des noms actuelle Adresse de la table des formes actuelle Adresse de la table des formes de sprites actuelle Adresse de la table des attributs de sprites actuelle Adresse du pixel actuel Masque du pixel actuel M moire de travail M moire de travail Aspect pour l instruction CIRCLE M moire de travail pour CIRCLE Flag pour dessiner au centre de l cran Nombre de points allumer Flag de polarit 1 8 du nombre de points dans le cercle Nombre de points dans le cercle 0F93DH 0 9 0 941 0F942H 0 944 0 945 0 947 0 949 OF94AH 0F94BH 0 94 0 94 OF9SIH 0 953 0 954 0 955 0 956 0 958
202. rdire un CONT CONTinue buzzer BEEP 000C0H ROM MSX1 3 mission d un bref bip sonore rien rien tout 000 6 000 9 000 3 CLS Nom Adresse Type R le Entr e Sortie Modifie POSIT Nom Adresse Type R le Entr e Sortie Modifie Note FNKSB Nom Adresse Type R le Entr e Sortie Modifie CLear Screen CLS 000C3H ROM MSX1 3 effacement de l cran dans tous les modes indicateur z ro 1 obligatoire rien AF BC POSITion cursor POSIT 000C6H ROM MSX1 1 modification des coordonn es du curseur num ro de colonne L num ro de ligne rien AF Bien que n ayant pas t modifi e sur 5 2 cette routine fonctionne parfaitement en mode 80 colonnes FuNction Key diSplay enaBled FNKSB 000 9 8 1 v rification de l indicateur et affichage des touches de fonction si n cessaire CNSDFG 1 affichage des touches de fonction 0 ne fait rien rien tout 000 000 000D2H ERAFNK Nom Adresse Type R le Entr e Sortie Modifie Note DSPFNK Nom Adresse Type R le Entr e Sortie Modifie Note TOTEXT Nom Adresse Type R le Entr e Sortie Modifie Note ERAse FuNction Key ERAFNK 00 MSX1 1 effacement de l affichage des touches de fonction rien rien
203. re 6 du VDP Contenu du registre 7 du VDP Contenu du registre de statut du VDP registre 8 Trigger flag 11111111B utilis par la routine qui v rifie l tat des boutons des joysticks 0F3E9H FORCLR 1 Couleur de texte blanc par d faut BAKCLR 1 Couleur de fond bleu par d faut BDRCLR 1 Couleur de la bordure bleu par d faut OF3ECH MAXUPD 3 en 0 par d faut OF3EFH MINUPD 3 Saut en 0 par d faut OF3F2H 1 d attribut 15 par d faut QUEUES 2 Adresse de la table des lt queue gt QUEUTL 5 FRCNEW 1 M moire de travail 255 par d faut OF3F6H SCNCNT 1 Intervalle entre deux scrutations du clavier OF3F7H 1 Intervalle avant de commencer la fonction de r p tition automatique 50 par d faut R gl en permanence par le Basic OF3F8H PUTPNT 2 Adresse du premier emplacement libre dans le buffer OF3FAH GETPNT 2 Adresse de la prochaine donn e issue du buffer clavier 5120 10 Zone de travail pour la cassette 0 406 LOW Param tre cassette Largeur du 0 OF408H Param tre cassette Largeur du 1 OF40AH HEADER 1 Param tre cassette Longueur lt header gt 128 OF40BH Utilis par CIRCLE pour la forme du cercle OF40DH ASPCT2 Idem que OF40FH ENDPRG 5 Fin de programme bidon pour lt RESUME NEXT gt fin des variables syst me initialis es l allumage de l ordinateur OF414H ERRFLG 1 Num r
204. res ci dessus envoyez sur le port deux du processeur vid o deux octets qui codent la nouvelle teinte octet un 0 b6 55 b4 b2 bl b0 Pope H bleu rouge octet deux 0 0 0 0 b2 bl b0 vert Exemple lt changer la couleur n 1 noir en vert gt ORG 0 000 DEBUT LD 7 port 0 dans LD CA port 0 dans INC port 1 dans C LD A couleur 1 LD A 80H 16 OUT A dans le registre 16 INC port 2 dans C LD 4 bleu 2 OUT et hop LD OUT RET END LIRE UN REGISTRE D ETAT STATUS REGISTER 5 C A DEBUT 5 et re hop charger le registre 15 du processeur vid o avec le num ro de registre status que vous d sirez lire 0 9 lire le contenu du registre sur le port 1 Exemple lt lire le registre status 0 gt ORG DEBUT LD LD INC LD OUT LD OUT LD LD INC 0C000H A 7 CA 0 80H 15 7 A port 0 dans port 0 dans port 1 dans le registre 2 Status n 0 dans le registre 15 port 0 dans port 0 dans port 1 dans C contenu dans 5 5 LECTURE ET ECRITURE DANS LA MEMOIRE VIDEO Un MSX2 peut tre quip de 64 128 ou 192 Ko de m moire vive r serv e la vid o o
205. resse appeler rien IY registres auxiliaires du 780 CHecK SLot Z CHKSLZ 00162H ROM MSX2 recherche du slot de la Sub ROM rien rien tout 00165 00168 0016 CHKNEW Nom Adresse Type R le Entr e Sortie Modifie EOL Nom Adresse Type R le Entr e Sortie Modifie BIGFIL Nom Adresse Type R le Entr e Sortie Modifie CHecK NEW screen mode CHKNEW 00165H ROM MSX2 v rification du SCREEN rien indicateur carry 0 le SCREEN actuel est entre 5 et 8 AF erase to End Of Line EOL 00168H ROM MSX2 effacement jusqu la fin de la ligne quivalent au CTRL du Basic colonne partir de quelle 11 faut effacer L ligne effacer rien tout BIG FILI BIGFIL 0016 MSX2 remplissage de la m moire vid o adresse de d but 00000H 0FFFFH BC longueur A Donn e rien AF BC 0016 00171H 00174H NSETRD Nom Adresse Type R le Entr e Sortie Modifie NSTWRT Nom Adresse Type R le Entr e Sortie Modifie NRDVRM Nom Adresse Type R le Entr e Sortie Modifie New SET address for ReaD NSETRD 0016EH ROM MSX2 transfert dans le VDP de l adresse de la case m moire o doit s effectuer la lecture HL adresse de lecture 00000H 0FFFFH rien AF New SeT address for WRiTe NSTWRT
206. routine H LIST routine LIST utilis e lors des instructions Basic LIST et LLIST permet de d tourner la routine H BUFL routine BUFLIN BUFfer LINe utilis e lors de l instruction Basic LIST permet de d tourner la routine OFF93H H FRQI Appel Fonct OFF98H H SCNE Appel Fonct OFF9DH Appel Fonct OFFA2H Appel Fonct OFFA7H Appel Fonct OFFACH H FORM Appel Fonct OFFBIH Appel Fonct H FRQI routine FRQINT utilis e lors de l instruction Basic POKE permet de d tourner la routine H SCNE routine SCNEX2 conversion d un num ro de ligne en adresse m moire et inversement permet de d tourner la routine routine FREe up TeMPories recherche d un emplacement libre pour stocker une variable alphanum rique permet de d tourner la routine routine PTRGET PoinTeR permet d utiliser d autres noms de variables H PHYD routine PHYDIO lt PHYSsical Disk UO gt du Bios adresse 00144H main ROM utilis par le syst me d exploitation des disquettes routine FORMAT lt disk FORMATter gt du Bios adresse 00147 main ROM utilis par le syst me d exploitation des disquettes H ERRO routine ERROR
207. s de 0 255 3 fois 3 256 768 L cran se trouve donc divis en trois tiers Ainsi le programmeur peut travailler sur une seule table la table des formes Cette derni re contient 6144 octets soit 2048 octets par tiers d cran 8 octets codant un caract re on trouve bien 2048 8 256 caract res par tiers d cran La carte m moire de la table des formes par rapport l cran serait 16 pixels M O W_ _ 00000H 00008H 00010H 00018H 00020H 00001H 00009H 00011H 00002H 0000AH LIGNES 00003 0000BH 047 000048 0000CH 00005H 0000DH 00006H 0000EH 00007H 0000FH 00100H 00108H 00101H 00109H La table des couleurs est exactement la m me mais partir de l adresse 002000H Dans les deux tables formes et couleurs un octet code huit pixels Dans la table des formes chaque bit indique si le pixel quivalent est de couleur 0 ou de couleur 1 Dans la table des couleurs les 4 bits de poids fort donnent la couleur des pixels 1 0 15 alors que les 4 bits de poids faible codent la couleur des pixels O 0 15 Par exemple si l adresse 00009H contient 081H alors que 02009 renferme 0D1H alors les pixels de coordonn es 8 1 et 15 1 seront allum s en magenta ODH alors que les pixels 9 1 14 1 resteront ou deviendront noirs Bien entendu rien n emp che le programmeur averti de modifier la table des noms suffit de faire attention
208. s de poids fort de l octet 1 01 quatre bits de poids faible de l octet 2 01 quatre bits de poids fort de l octet 2 01 quatre bits de poids faible de l octet 3 01 quatre bits de poids fort de l octet 3 01 quatre bits de poids faible de l octet 4 01 quatre bits de poids fort de l octet 4 01 quatre bits de poids faible de l octet 5 01 quatre bits de poids fort de l octet 5 01 quatre bits de poids faible de l octet 6 01 quatre bits de poids fort de l octet 6 Exemple d utilisation ORG 0 000 EXTROM EQU 0015 RDCLK EQU 001 5 LD 02 mode 2 adresse 12 LD IX RDCLK CALL EXTROM RET lors du retour A contient 4 001 9 WRTCLK Adresse Entr e Sortie Modifie Note WRiTe CLocK WRTCLK 001FOH SUBROM MSX2 criture dans la m moire vive non volatile de l horloge interne C adresse m moire A donn e crire quatre bits rien F Voir RDCLK ci dessus pour le d tail du fonctionnement de cette routine 4 LES VARIABLES SYSTEME ET LES HOOKS 4 1 INTRODUCTION AUX VARIABLES SYSTEME L utilit des variables syst me n est plus d montrer La plupart des trucs et astuces sont bas s sur une bonne connaissance de celles ci Il devient ainsi facile de combler les quelques lacunes du Basic Quant au programmeur en langage machine il peut la plupart du temps ignorer compl tement les variables syst me mais il ne faut pas n gliger que la m
209. s deux 0 53 54 55 56 7 6 5 4 X3 X2 XI 0 8 Y7 6 5 Y4 2 Y1 Y0 1 Y9 Y8 Lorsque le registre n 5 est lu les registres sont tous les 4 remis 0 Une possibilit suppl mentaire est offerte au programmeur dans le mode 2 En effet si le bit CC est mis 1 dans la table des couleurs de sprite alors un ou logique OR est effectu entre les deux lignes de sprites superpos es 9 sprites Lorsque plus de 8 sprites se trouvent sur la m me ligne le bit 6 55 du registre d tat status n 0 passe 1 De plus les 5 bits de poids faible du registre d tat n 0 donnent le num ro du 9 me sprite O 31 Utilisation Pour afficher un sprite il faut d abord le d finir dans la table des formes de sprites Pour les sprites 8 sur 8 il suffit de 8 octets pour d finir un sprite sachant qu un bit repr sente un pixel par exemple en SCREEN 7 la table des formes de sprites pourrait tre 0F000H 0F001H 0F002H 0F003H 0F004H 0F005H 0F006H 0F007H huit octets pour le sprite n 0 qui aura cette forme 7 0 11111111 11000011 X X 10100101 X 10011001 X 10011001 X 10100101 X 11000011 11111111 x x A X X X X X X X X X X X X x X X X X X x X X X X X X X X Dans le cas de sprites 16 sur 16 les choses deviennent un tout petit peu plus co
210. s il ne l est pas octet 0 SLTTBL 0FCC5H type MSXI MSX2 SLTTBL constitu e de quatre octets aussi retient en parall le de EXPTBL la valeur du registre d extension lorsqu un slot primaire est tendu 080 SLTATR type MSX1 MSX2 les 64 octets de SLTATR correspondent chacun une page de 16 Ko de m moire 16 slots secondaires fois 4 pages donnent bien 64 pages L octet donne le type d extension pour chaque page 0 d extension Les 5 bits de poids faible ne sont pas utilis s Les 3 bits de poids fort suivent le code 7 6 5 4 3 2 1 0 IDE SE bit Basic Text gt programme Basic DE Device Expander gt extension mat riel SE Statement Expander extension logiciel Voici un petit programme Basic qui donne un descriptif de votre ordinateur 10 SCREEN 0 WIDTH80 COLOR 10 0 0 CLS 20 FOR 9 TO 08 30 IF 1 0 THEN NEXT END 40 A I amp HFCC9 50 PRINT lt Page gt STR A SPACES 2 lt slot STRS S INT A 16 STRS A 4 MOD 4 lt gt 60 IF 1 AND amp H80 128 THEN PRINT TAB 20 lt Extension Basic gt 70 IF 1 AND amp H40 64 THEN PRINT TAB 20 lt Extension Mat riel gt 80 IF 1 AND 20 32 THEN PRINT TAB 20 lt Extension Logiciel gt 90 PRINT NEXT SLTWRK OFDO9H type 5 1 5 2 Les 128 octets
211. s le bas rien rien AF 0010 0010 TDOWNC Adresse Type R le Entr e Sortie Modifie SCALXY Adresse Entr e Sortie Modifie Note Test and DOWN Current TUPC 0010BH ROM Max d placement du curseur vers le bas apr s v rification de la validit des coordonn es D rien indicateur carry 1 le d placement n a pas eu lieu car le curseur graphique tait d j en 191 ou 211 AF SCALe X amp Y SCALXY 0010EH ROM MSXI1 v rification et ventuellement ajustement des valeurs du curseur graphique valeur de X 0 DE valeur de Y 0 0 BC valeur de X valide DE valeur de Y valide indicateur carry 0 une des coordonn es tait hors de l cran AF Lorsque l une des deux coordonn es est n gative cette routine prend 0 comme nouvelle coordonn e De m me si une coordonn e d passe sa valeur maximale autoris e 255 ou 511 pour X 191 ou 211 pour Y la routine prend la valeur maximale autoris e comme nouvelle coordonn e O0111H 00114H MAPXYC Adresse Entr e Sortie Modifie FETCHC Non Adresse Type R le Entr e Sortie Modifie MAP X amp Y to Current 00111H ROM MSXI transformation de coordonn es d un pixel en une adresse m moire vid o et un masque u
212. s lors de l ex cution des commandes Voir le paragraphe 5 8 Les commandes internes du V9938 pour plus de pr cisions Registre 32 SX7 8 6 8 5 5 4 5 3 5 2 SXI SXO Registre 33 o jo jo jo jo jo sxs SX0 SX8 codent l abscisse du point d origine 0 lt X lt 511 Registre 34 6 7 5 6 5 5 8 4 5 2 5 5 0 Registre 35 0 0 0 0 0 0 5 9 5 8 SY0 SY9 codent l ordonn e du point d origine 0 lt Y lt 1023 Registre 36 DX7 DX6 DX5 DX4 DX3 DX2 Registre 37 o jo jo jo jo jo DX0 DX8 codent l abscisse du point de destination 0 lt X lt 511 Registre 38 DY7 DY6 DY5 4 DY3 DY2 DY0 Registre 39 0 0 0 0 0 0 DY9 DY8 DYO DY9 codent l ordonn e du point de destination 0 lt Y lt 1023 Registre 40 7 6 5 NSA 2 NXI Registre 41 0 0 0 0 0 0 0 NX8 NX0 NX8 codent la longueur 0 lt NX lt 511 Registre 42 NY7 NY5 4 NY3 NY2 NY1 NYO MSX2 MSX2 MSX2 MSX2 MSX2 MSX2 MSX2 MSX2 MSX2 MSX2 MSX2 Registre 43 0 0 0 0 0 0 NY9 NYO 9 codent la hauteur 0 lt lt 1023 Registre 44 CLO CL7 Registre 45 CL7 CL6 CLS
213. s parmi 512 Sprites Taille d une page cran 8 Ko Nombre de pages maximum 16 avec 128 Ko de VRAM Table des noms 24 lignes 00000H 0077FH 1920 octets 26 5 lignes 00000 0086 2160 octets Table des couleurs 24 lignes 00800 008 240 octets 26 5 lignes 00800 0090DH 270 octets Table des formes 01000H 017FFH 2048 octets Table des attributs sprite Table des formes de sprite Table des couleurs sprite Table de palette MSX2 00 32 octets mode 80 colonnes fonctionne de mani re identique au mode texte 40 colonnes voir ci dessus pour plus de pr cisions La table des noms content toujours un octet par caract re l cran soit cette fois 80 colonnes fois 24 lignes donc 1920 octets ou 80 colonnes fois 26 5 lignes allez on arrondit 27 soit 2160 octets Chaque octet renferme le code ASCII du caract re afficher l cran Ainsi si l cran se trouvent uniquement les caract res EVE dans le coin sup rieur gauche la table des noms ressemblera 00000 65 ou 41H code du A 00001H 32 ou 020H code de l espace 00002H 69 ou 045 code du lt E gt 00003H 86 ou 056H code du V 00004H 69 ou 045 code du lt Le reste de la table serait alors rempli de 32 020 code de l espace ou ventuellement de 0 La table des formes contient elle 2048 octets regroup s par paquets de 8 octets Ce qui don
214. s un BREAK l instruction SCREEN 1 fera revenir les choses la triste normale Pour ce qui est des couleurs rien de bien affriolant dans ce mode Les 32 octets de la table des couleurs codent chacun la couleur de huit caract res suivant leur code ASCII Ce qui signifie par exemple que le contenu de 02009H donne la couleur des lettres H O sachant que les 4 bits de poids fort codent la couleur du texte alors que les quatre bits de poids faible codent la couleur du fond Le seul moyen d utiliser un tel syst me est de red finir enti rement le jeu de caract res A part cela on peut toujours s amuser changer la couleur du curseur code 255 ou 10 SCREEN 1 WIDTH 32 COLOR 10 0 20 VPOKE amp H201F amp HD7 donne un curseur mauve avec des caract res cyan 07H Apr s toutes ces motions et suivant l adage work and no play makes Jack sad boy je vous propose un petit jeu Profitez en amusez vous bien et hop fonctionne sur MSX2 et MSX1 en retirant les instructions COLOR 10 GOTO 90 20 I STICK 0 IF I 3 THEN X X DD GOTO 50 ELSE IF 1 7 THEN X X GOTO 50 ELSE 50 30 0 7 amp H208 1 128 NEXT FOR I 0 TO 7 amp H210 I 1 NEXT T 3 X 40 Y 88 PUT SPRITE 1 X Y 9 COLOR 10 2 FOR I 0 TO 23 PRINTTAB T 1 STRING N 1 gt NEXT amp H2004 amp HC2 amp H2009 17
215. s vid o Une bonne dose de patience sera dans la plupart des cas appr ciable et b n fique Et maintenant vous de jouer et bonne chance 2 LES SLOTS ET LE MEMORY 2 1 COMMENT DEPASSER LA LIMITE DES 64 Tous les ordinateurs MSX sont quip s d un Z80 comme micro processeur principal Ce dernier est un processeur 8 bits ceci signifie qu il manipule les donn es par paquets de 8 Quant aux adresses m moires elles se trouvent cod es sur 2 mots de 8 bits deux octets soit 16 bits Les adresses peuvent donc prendre n importe quelle valeur entre 0000000000000000 et 1111111111111111 en binaire ou 0 et FFFF en hexad cimal Ceci quivaut en d cimal une valeur entre 0 et 65535 Sachant qu un kilo informatique ne vaut pas 1000 mais 2 puissance 10 ou 1024 octets un des petits secrets qui fait le charme de l informatique le Z80 qui peut acc der 65536 adresses g re donc 65536 1024 soit 64 kilo octets Ainsi quoiqu il arrive le 780 ne pourra jamais voir plus de 14 Ko de m moire Ceci tant il est rare qu une application n cessite plus de 64 Ko d un seul tenant Les concepteurs du MSX ont donc introduit un syst me qui permet de d finir sur quel bloc de 64 Ko le Z80 va travailler En r alit l utilisateur peut choisir un bloc de 16 Ko huit blocs de 16 Ko soit 128 Ko de m moire vive comme sur le mod le VG 8235 MSX2 de Philips 16 Ko
216. se Type R le Entr e Sortie Modifie CALBAS Nom Adresse Type R le Entr e Sortie Modifie GET VoiCe Pointer GETVCP 00150H ROM MSX1 1 mise en place du pointeur pour une queue musicale num ro de la voie HL pointeur d sir AF GET VoiCe 2 GETVC2 00153H ROM MSX1 1 D place le pointeur pour VOICEN L d placement d sir HL nouvelle valeur du pointeur AF KILI BUFfer KILBUF 00156H ROM MSX1 1 destruction du buffer clavier rien rien CALI BASic CALBAS 00159H ROM MSXI1 1 appel des sous programmes dans la Basic depuis un autre slot appel inter slot IX adresse appeler rien IX registres auxiliaires 0015 0015 00162 SUBROM Nom Adresse Type R le Entr e Sortie Modifie Note EXTROM Nom Adresse Type R le Entr e Sortie Modifie CHKSLZ Nom Adresse Type R le Entr e Sortie Modifie call SUBROM SUBROM 0015CH ROM MSX2 appel une adresse dans la Sub ROM IX adresse appeler rien registres auxiliaires du 780 m thode pour utiliser cette routine EXPL une fois la routine en Sub ROM PUSH IX ex cut e on aura un retour au LD IX addr programme qui a appel EXPL JP SUBROM call EXTernal ROM EXTROM 0015FH ROM MSX2 appel direct une adresse dans la Sub ROM IX ad
217. se de la case m moire lire num ro du slot sous la forme binaire 00055 F flag O si slot primaire flag 1 si slot secondaire SS num ro de slot secondaire 0 3 PP num ro de slot primaire 0 3 A contenu de la case m moire AF BC DE Interruptions automatiquement interdites lorsque l on appelle cette routine Existe aussi sous MSX DOS peut tre appel sous MSX DOS sans changer de slot 00010 Nom Adresse Type R le Entr e Sortie Modifie Note 00014 WRSLT Nom Adresse Type R le Entr e Sortie Modifie Note CHRGTR RST 10 CHRGTR 00010H ROM 8 1 R cup ration du caract re suivant sous Basic HL HL pointe sur le caract re suivant HL RST est r serv au Basic WRite SLoT WRSLT 00014H ROM MSX1 1 s lection d un slot puis criture dans une case m moire HL adresse de la case m moire E donn e crire num ro du slot sous la forme 00055 F flag 0 si slot primaire 1 si slot secondaire SS num ro de slot secondaire 0 3 PP num ro de slot primaire 0 3 Rien AF BC D Interruptions automatiquement interdites Cette routine existe aussi sous MSX DOS 00018 0001 OUTDO RST 18 Nom Adresse Type R le Entr e Sortie Modifie Note CALSLT Nom Adresse Type R le Entr e Sortie Modifie Note OUT DO OUTDO 00018H RO
218. sieurs choses le disque virtuel peut tre implant dans la m moire vive que vous venez de trouver Si tel est le cas la variable syst me SLTWRK 9 contient le num ro du slot dans lequel se trouve le disque virtuel sous la forme FXXXSSPP sachant que F flag 1 slot secondaire 0 slot primaire 55 num ro de slot secondaire 0 3 PP num ro de slot primaire 0 3 Nous verrons la signification des bits X plus bas masquez ces bits pour pouvoir comparer avec le num ro de slot retourn par la routine qui est donn e plus haut Cependant 11 faut faire attention si SLTWRK donne 0011 slot primaire 3 ma routine renverra 1111 slot secondaire 3 primaire 3 Le r sultat est quivalent lors d un appel inter slot ou d un ENASLT Pour simplifier la programmation ma routine donne TOUJOURS le r sultat sous forme de slot secondaire m me s il s agit d un slot primaire Il va de soi que s il n y a pas de disque virtuel ces 5 bits seront tous 0 Le bit 6 de SLTWRK est un indicateur binaire S il est 0 le disque virtuel n est pas initialis au contraire le disque virtuel est en place si ce bit est 1 Si le disque virtuel est install vous pouvez encore disposer de la m moire vive non utilis e par celui ci Il suffit de savoir o s arr te le disque virtuel Les cases m moires 00000 et 00001 contiennent l adresse de d but de la zone m moire laiss e libre par le disque virtuel Les adress
219. sur 2 octets l adresse 0F7F8H Apr s traitement 0 663 doit contenir 2 si l on renvoie un entier au Basic Ce dernier se trouvera en 0F7F8H et 0F7F9H Prenons un exemple nous d sirons r aliser un programme qui multipliera automatiquement un entier positif par 2 ORG 0 000 DEBUT LD 0 663 avons nous bien CP 2 affaire un JR NZ NONENT 7 2 entier TRAITEMENT LD 0F7F8H Sen r cup ration XOR A carry 0 RL L d calage L 2 RL H d calage H 2 LD 0 7 8 1 NONENT LD DATA SEN adresse message CALL ECRIRE l cran un niveau moins JP 0409BH retour direct DATA DB ENTIER 0 S H ECRIRE LD A HL CP 0 7 CALL 2 INC HL JR ECRIRE Le param tre est en simple pr cision C est peine plus compliqu La fonction USR met 4 dans la case m moire 0 663 pour indiquer la simple pr cision La valeur du param tre se trouve sur 4 octets partir de l adresse Apr s traitement 0 663 doit contenir 4 si l on renvoie au Basic un nombre en simple pr cision Ce dernier se trouvera en 0F7F6H et 0F7F9H Les 4 octets codent le nombre en simple pr cision de la mani re suivante octet 1 SM SE EX5 4 EX2 EX1 SM signe de la mantisse 0 positif 1 n gatif SE signe de l exposant 0 n gatif 1 positif E
220. t du principe que la m moire vive principale ou vid o contient l allumage va de soi que ce n est pas le cas et que la RAM peut contenir peu pr s n importe quoi si elle n a pas t modifi e lors de l initialisation du syst me Si votre programme ne peut fonctionner avec la pr sence d un lecteur de disquettes il suffit de v rifier la pr sence du lecteur voir le chapitre 6 puis si un lecteur est bien pr sent d afficher l cran le message Faites un RESET en laissant la touche SHIFT enfonc e jusqu au bip sonore En effet lors de l initialisation du syst me si le MSX d tecte que la touche SHIFT est enfonc e il ne valide pas le lecteur de disquettes Sur le m me principe la touche CTRL assigne un seul lecteur par contr leur Si vous avez 2 lecteurs de disquettes avec 2 contr leurs lors de toutes les op rations le premier s appelle gt alors que le second prend la d nomination gt En enfon ant CTRL l initialisation vous gagnerez de la place m moire et vos drives se nommeront et B Lorsque l on crit dans un registre Write only du processeur vid o il est pr f rable de sauvegarder la donn e dans la zone des variables syst mes ad quate Ainsi la donn e pourra tre relue tout moment ce qui serait impossible autrement 1 4 MAINTENANT A pr sent vous allez vous lancer dans la d couverte des slots Bios variables syst mes et autres processeur
221. t est automatiquement remis 0 quand on lit le registre 1 flag de la souris Ce bit est 1 si l utilisateur a appuy sur le bouton n 2 de la souris flag du bouton du crayon optique Si le bouton a t enfonc ce bit passe 1 flag de la souris Ce bit est 1 si l utilisateur a appuy sur le bouton n 1 de la souris donnent le num ro d identification du processeur vid o V9938 flag d interruption lors d un balayage horizontal Note pour plus de renseignements sur le fonctionnement du crayon optique et de la souris voir le paragraphe 5 11 La souris et le crayon optique Registre 2 Registre 3 Registre 4 X0 X8 Registre 5 TR VR BD 1 1 MSX2 lorsque ce bit est 1 le V9938 peut effectuer des transferts avec la VRAM lors d un balayage vertical ce bit est 1 lors d un balayage horizontal ce bit est 1 lors d une commande de recherche ce bit passe 1 lorsque la couleur de fronti re est trouv e lorsque ce bit est 1 le V9938 est en train d ex cuter une instruction Es X5 X2 Xl MSX2 1 x8 MSX2 contiennent l abscisse du point de collision des sprites l abscisse du point o pointe le crayon optique soit le d placement horizontal relatif de la souris Y7 Y6 Y5 4 2 YI
222. tile surtout pour MSX1 D BC coordonn e horizontale du pixel allumer DE coordonn e verticale du pixel allumer Dans les SCREEN 2 4 CLOC adresse en VRAM de l octet modifier CMASK masque appliquer l octet ci dessus pour allumer le pixel qui nous int resse Dans les SCREEN 5 8 CLOC coordonn e horizontale du pixel CMASK coordonn e verticale du pixel FETCH Current FETCHC 00114H ROM MSXI r cup ration de l adresse VRAM actuelle et du masque actuel ou coordonn es pour les SCREEN 5 8 rien HL adresse du curseur graphique SCREEN 2 4 ou coordonn e horizontale SCREEN 5 8 de masque du curseur graphique SCREEN 2 4 ou coordonn e verticale SCREEN 5 8 F 00117 0011DH STOREC Nom Adresse Type R le Entr e Sortie Modifie SETATR Nom Adresse Type R le Entr e Sortie Modifie Note READC Nom Adresse Type R le Entr e Sortie Modifie Note STORE Current STOREC 00117H ROM Max 1 sauvegarde de l adresse VRAM actuelle et du masque actuel ou des coordonn es HL adresse VRAM du curseur graphique ou coordonn e horizontale A masque du curseur graphique ou coordonn e verticale rien rien SET ATtRibute byte SETATR 0011AH ROM MSX1 4 modification de l octet d attribut ATRBYT A valeur du nouvel attribut in
223. toujours le num ro de la page et l accumulateur contient le num ro de slot sous la forme 00055 binaire sachant que F est un flag qui indique le type de slot 0 primaire 1 secondaire 55 donne le num ro de slot secondaire 0 3 PP donne le num ro de slot primaire 0 3 51 votre syst me poss de moins de 64 Ko le programme sortira par la routine dans le cas contraire il passera par la routine RAM Le sous programme RETOUR rend la main en s lectionnant le Basic ORG 0C000H ENASLT EQU 00024 FIND LD 0 LD 04000H LOOP LD OR 080 PUSH BC PUSH PUSH HL CALL ENASLT HL LD HD A LD B HL CP B POP BC IR Z RAM DINZ LOOP RIEN NOP JR RETOUR RAM NOP JR RETOUR MNROM EQU RETOUR LD LD 04000H CALL ENASLT RET Le programme proc de de la mani re suivante il s lectionne tous les slots primaires et secondaires un par un Il crit une donn e puis la relit Si la donn e lue est identique celle crite alors le slot actuel contient de la m moire vive le programme s arr te Dans le cas contraire on passe au slot suivant A vous de compl ter les routines RIEN et RAM en fonction de votre application L utilisation Sur MSX1 pas de probl me vous avez trouv de la m moire vive utilisez la Par contre sur MSX2 il faut faire attention plu
224. tributs sprite 07600H 0767FH 128 octets Table des formes de sprite 07800H 07FFFH 2048 octets Table des couleurs sprite 07400H 075FFH 512 octets Table de palette 07680H 0769FH 32 octets En mode d cran 6 chaque octet de la table des noms code 4 pixels Les bits 6 et 7 poids fort donnent la couleur 0 3 du pixel multiple de 4 Les bits 4 et 5 codent la couleur du pixel imm diatement la droite du pixel pr c dent et ainsi de suite La table des noms ressemble donc poids fort 7 6 5 4 3 2 1 0 poids faible 00000H 0 0 1 10 2 0 3 0 00001H 4 0 5 0 6 0 7 0 0007 508 0 509 0 510 0 81 0 00080H 0 1 1 11 2 11 3 1 Le processeur vid o ne peut afficher que 4 couleurs SCREEN 6 C est vrai mais tout le monde sait qu en juxtaposant deux couleurs avec des pixels suffisamment petits on obtient une troisi me couleur Les concepteurs du V9938 ont con u une instruction qui m lange automatiquement deux couleurs hardware tiling Cette fonction peut s appliquer la marge ainsi 7 couleurs de marge sont possibles et surtout aux sprites de la mani re suivante pour la marge pr ciser la couleur comme 0 0 0 1 X X Y Y 1 1 1 1 1 1 1 couleur pixels abscisse impaire couleur pixels abscisse paire pour les sprites pr ciser la cou
225. u MSX2 ne se limite pas une bonne connaissance du 780 micro processeur qui quipe tous les 5 est n cessaire comme sur tous les ordinateurs de pouvoir mettre en uvre tous les composants du syst me De plus le programmeur qui travaille sur MSX doit veiller maintenir la compatibilit y compris avec les mod les futurs MSX3 qui n existent pas aujourd hui C est le but de ce livre qui se propose de vous guider travers l exploration de la programmation du syst me MSX 1 2 UTILISER CE LIVRE Le livre que vous tenez entre vos mains a t con u dans une double optique Il aspire dans un premier temps apprendre tout programmeur ayant une bonne connaissance du Basic et des notions s rieuses 780 tirer le maximum de son ordinateur qu il s agisse d un MSX1 ou d un MSX2 ce propos il est pr cis chaque fois que cela est n cessaire si les explications s adressent uniquement au MSX2 ou aux deux ordinateurs Puis une fois les notions assimil es le pr sent ouvrage a la pr tention de servir de manuel de r f rence compl tant ainsi le manuel d utilisation fourni avec votre machine Comprendre le fonctionnement Pour chaque fonction instruction astuce j ai tent de donner les explications les plus simples possibles J ai vit d employer l quivalent fran ais de termes anglais lorsque ces derniers taient usuels je parle de bitmap ou de flag plut t que d indicateur binaire ma
226. u VRAM Tous les mod les commercialis s en France comportent 128 Ko Cette m moire ne se trouve pas dans un slot ce faisant le Z80 ne peut en aucun cas l adresser seul le processeur vid o peut y acc der ORO 128 ORO d 64 R OR OR principale affichage carte m moire vid o a lt a aie k sk sk eee eee k ole ole 9k ee 192 00000 gt sk 5k 5k 5k 5k sk 5k ee ae ae ee ole ale ole ale ale ale oke VRAM tendue donn es Il existe trois m thodes permettant de manipuler la m moire vid o La premi re consiste utiliser le Bios puisqu on y trouve les routines WRTVRM RDVRM qui respectivement crivent et lisent la m moire vid o Les deux autres m thodes n cessitent des acc s directs au processeur vid o l une passe par les registres alors que l autre passe par les commandes du processeur vid o pour ce qui est de cette derni re solution elle est d taill e dans la partie concernant les commandes propres au VDP Nous allons pr sent examiner l acc s au processeur vid o gr ce aux registres choisir la VRAM principale ou la secondaire en agissant sur le bit 6 du registre 45 du VDP 0 VRAM principale 1 tendue Cette op ration n est n cessaire que lors du premier acc s vid o moins que vous n ayez 192 Ko
227. ualis tout Valide dans les SCREEN 5 8 00075 00079 Nom Adresse Type R le Entr e Sortie Modifie Note DOBOXF Nom Adresse Type R le Entr e Sortie Modifie Note Graphic LINE GLINE 00075H SUBROM MSX2 Trac d une ligne HL pointeur de texte Basic HL pointeur r actualis tout Valide dans les SCREEN 5 8 Cette routine tant difficile mettre en uvre est pr f rable d utiliser LINE 058 en main ROM ou 00085 en Sub ROM DO BOX Fill DOBOXF 00079H SUBROM MSX2 trac d un rectangle plein HL pointeur de texte Basic BC abscisse du pixel de d part DE ordonn e du pixel de d part GXPOS abscisse du pixel d arriv e ordonn e du pixel d arriv e HL pointeur r actualis tout Valide dans les SCREEN 5 8 Cette routine tant difficile mettre en uvre il est pr f rable d utiliser BOXFIL 058 en main ROM 000CDH en Sub ROM 0007DH 00081 DOLINE Nom Adresse Type R le Entr e Sortie Modifie Note BOXLIN Nom Adresse Type R le Entr e Sortie Modifie Note DO LINE DOLINE 0007DH SUBROM MSX2 trac de ligne HL pointeur de texte Basic BC abscisse du pixel de d part DE ordonn e du pixel de d part GXPOS abscisse du pixel d arriv e ordon
228. ui ci est 0 alors l instruction est termin e le V9938 est disponible sinon bit CE 1 il faut attendre ou faire autre chose avant d utiliser nouveau le processeur vid o Etat Une fois l instruction termin e les registres su processeur vid o se trouvent dans l tat suivant 32 33 34 35 36 37 38 39 40 41 42 43 44 45 idem modif idem modif idem idem INSTRUCTION LMMC Logical Move to Memory from CPU Sch ma DX DY NX 4 9938 a 780 VRAM Fonction LMMC permet de remplir la m moire vid o avec des donn es provenant du Z80 Le remplissage se fait pixel par pixel Cette instruction s ex cute donc moins rapidement que En contrepartie il est possible de d finir un op rateur logique A la diff rence des routines du Bios BIGFIL ou les donn es servant remplir la m moire vid o peuvent tre toutes diff rentes De plus la m moire vid o est d finie par des coordonn es X e Y 780 Destination VRAM Registres R36 R37 DX0 DX8 R38 R39 DY0 DY9 R40 R41 NX0 NX8 R42 R43 NY9 R44 45 MXD DIY DIX Voici la liste des registres du processeur vid o charger pour ex cuter la commande DX7 DX6 DX5 DX4 DX3 DX2 DX1 abscisse 0 0 0 0 0 0 0 DX8 0 511 abscisse du pixel origine
229. ur teindre le voyant 1 pour allumer le voyant rien AF CHanGe SouND port status CHGSND 00135H ROM Max allume ou teint le son sis A teindre 1 pour allumer rien AF Read primary SLot REGister RSLREG 00138H ROM 8 lecture du registre des slots primaires aia rien A valeur du registre rien d codage du registre b6 b5 b4 b3 b2 bl b0 slot pour la page 0 slot pour la page 1 slot pour la page 2 1 slot pour la page 3 0013BH 0013EH WSLREG Nom Adresse Type R le Entr e Sortie Modifie Note RDVDP Nom Adresse Type R le Entr e Sortie Modifie Note Write SLot REGister WSLREG 0013BH ROM MSXI1 1 criture dans le registre des slots primaires A donn e crire rien rien d codage du registre b6 55 b4 b3 b2 bl b0 slot pour la page 0 slot pour la page 1 slot pour la page 2 slot pour la page 3 ReaD VDP status register RDVDP 0013EH ROM 1 lecture du registre d tat du VDP rien A contenu du registre rien Voici le d tail du contenu du registre d tat du processeur vid o voi
230. ut 00000H 03FFFFH BC longueur A Donn e rien AF BC pour acc der aux adresses sup rieures 03FFFFH utilisez la routine BIGFIL 00059 LDIRMV Nom Adresse Type R le Entr e Sortie Modifie 0005 LDIRVM Nom Adresse Type R le Entr e Sortie Modifie 0005 CHGMOD Nom Adresse Type R le Entr e Sortie Modifie Note LoaD Increment Repeat Memory with Vram LDIRMV 00059H ROM 8 4 transfert de la m moire vid o vers la m moire centrale HL adresse de d part en VRAM 00000H OFFFFH DE adr destination en RAM centrale 00000H OFFFFH BC longueur du bloc transf rer rien tout LoaD Increment Repeat Vram with Memory LDIRMV 0005 8 4 transfert de la m moire centrale vers la m moire vid o HL adresse de d part en RAM centrale 00000H OFFFFH DE adr destination 00000H BC longueur du bloc transf rer rien tout CHange MODe CHGMOD 0005FH ROM MSX1 3 changement de mode d cran SCREEN X A mode d sir 0 8 SCRMOD idem ci dessus rien tout La palette n est pas initialis e par cette routine appelez la routine CHGMDP dans la Sub ROM si vous avez besoin de l initialisation de la palette 00062 CHGCLR Nom Adresse Type R le Entr e Sortie Modifie Note 00066H NMI Nom Adresse
231. vid o V9938 Il est cependant pr f rable d utiliser le Bios voir le chapitre 3 routine NEWPAD en Sub ROM chaque fois que cela est possible N anmoins pour ceux qui ont un besoin absolu de vitesse d ex cution voici la marche suivre pour un acc s direct par le processeur vid o LA SOURIS Il faut d abord r gler les 2 bits de poids fort du registre 8 du processeur vid o R8 MS VR 0 SPD BW Mettre MS MouSe enable 1 et LP 0 A partir de ce moment on peut lire le registre d tat status n 1 51 FL LPS FH FL 0 le bouton 1 de la souris pas t enfonc 1 le bouton 1 de la souris a t enfonc LPS 0 le bouton 2 de la souris pas t enfonc 1 le bouton 2 de la souris a t enfonc Notez que ces bits sont automatiquement remis 0 lors d une lecture du registre d tat n 2 le d placement relatif de la souris peut alors tre lu dans les registres d tat 3 et 5 du VDP 53 7 X6 5 X4 X3 XI xo 55 7 Y6 5 val 3 2 1 vu Les valeurs de d placement sont donn es compl ment 2 D s que le registre n 15 registre d acc s aux registres d tat est charg avec 3 ou 5 les valeurs de d placement n voluent plus Il ne faut pas n gliger de changer la valeur du registre 15 pour recommencer tester la souris LE CRAYON
232. vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci INltialize Text 32 mode INIT32 0006FH ROM MSXI1 3 initialisation du mode texte 32x24 SCREEN 1 T32NAM adresse de la table des noms T32CGP adresse de la table des formes T32COL table des couleurs T32ATR table des attributs de sprites T32PAT table des formes de sprites rien tout Il n est pas obligatoire de d finir T32NAM etc car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s celle ci 00072 Nom Adresse Type R le Entr e Sortie Modifie Note 00075H INIMLT Nom Adresse Type R le Entr e Sortie Modifie Note INltialize GRaPhic mode INIGRP 00072H ROM MSX1 3 initialisation du mode graphique 256 192 SCREEN 2 GRPNAM adresse de la table des noms GRPCGP adresse de la table des formes GRPCOL table des couleurs GRPATR table des attributs de sprites GRPPAT table des formes de sprites rien tout Il n est pas obligatoire de d finir GRPNAM etc car le MSX initialise leur valeur l allumage La palette n est pas initialis e par cette routine Si vous d sirez initialiser la palette appelez la routine INIPLT dans la Sub ROM imm diatement apr s cell
Download Pdf Manuals
Related Search
Related Contents
Barriera ottica di sicurezza EZ-Screen® LPM ultrapiatta con muting Can-Doリストをどう作る Kodak 7520 User's Manual Philips docking system for iPod/iPhone DCM580 Lathem 7500E User Manual Wiley Professional Visual Basic 2010 and .NET 4 Freestyle 81372 Watch User Manual Lumixux F41 WIWA 2K-Gelanlage Samsung XL2370 Priručnik za korisnike Copyright © All rights reserved.
Failed to retrieve file