home *** CD-ROM | disk | FTP | other *** search
-
- ──────────────────────────────────
-
- CRYSTAL PLAYER Version 2.50
-
- ────────────────────────────────────────
-
- (C)opyright 1994 Sébastien GRANJOUX
-
- ────────────
-
-
-
-
-
- ATTENTION: Vous ne pouvez utiliser ce programme qu'à vos risques et
- périls. Je ne saurais être tenu pour responsable de toutes pertes ou
- dommages conséquents à son utilisation. Je ne donne aucune garantie
- quant à son fonctionnement à part le fait qu'il occupera de la place
- sur votre disque dur.
-
-
-
- Table des matières │
- ────────────────────┘
-
- I ........................................... Licence
- II ............................. Contenu de l'archive
-
- III ................................. Fonctionnalités
- IV .................................... Le MOD player
- V ....................................... Utilisation
-
- VI ......................... Questions souvent Posées
- VII ...................................... Historique
- VIII .................................. Remerciements
- IX .......................................... Contact
- X ..................... ... Où trouver Crystal Player
-
-
-
- I - Licence │
- ─────────────┘
-
- Ce programme permet de jouer des fichiers musicaux au format MOD et
- peut être inclus dans vos programmes sous les conditions suivantes:
-
- Vous pouvez l'inclure librement dans n'importe quel programme
- du domaine publique (freeware) en mentionnant simplement mon nom
- dans votre programme. Pour une utilisation commerciale (shareware
- compris) de mon programme, vous devez d'abord prendre contact avec
- moi pour décider des conditions supplémentaires et obtenir mon
- accord.
-
- Ce programme est fourni avec toutes ses sources pour vous
- permettre de les modifier et de les adapter au mieux à vos
- productions. Ces modifications doivent rester strictement
- personnelles à moins que là encore, je donne mon accord. A
- priori, je serais très content que d'autres personne s'interessent à
- mon programme mais je voudrais garder cela sous contrôle.
-
- Vous pouvez par contre distribuer librement ce programme, avec tous
- ses fichiers, et je vous encourage vivement à le faire, à la
- condition que vous ne preniez pas plus de 5 USD de frais pour sa
- diffusion.
-
- Allez voir les informations à la fin de ce fichier pour savoir
- comment me contacter.
-
-
-
- III - Contenu de l'archive │
- ────────────────────────────┘
-
- L'archive doit avoir le nom suivant CRYSxxxl où xxx est le numéro de
- version sur trois chiffres (exemple 240 veut dire version 2.4).
- La lettre l est un espace pour les versions publiques. Mais par
- exemple,si c'est un B c'est une version de test.Ce qui veut dire
- qu'elle n'est probablement pas complète et qu'il y a encore plus de
- chance d'avoir des bugs.
-
- L'archive normale comprend les 15 fichiers suivants :
-
- C0MULTI.ASM contient le code de démarrage du player en assembleur.
-
- CRYS.EXE est une version éxecutable du player de MOD que
- j'ai fait à partir de mes routines.
-
- CRYS26.ASM contient toutes les routines permettant de jouer un
- fichier MOD.
-
- CRYS26.OBJ est l'objet généré par Turbo Assembleur du fichier
- précédent, c'est ce fichier qu'il faut inclure dans
- un programme C ou ASM pour utiliser mes routines.
-
- CRYSEXP.CPP est un exemple d'utilisation en Turbo C++ des mes
- routines dans un exemple le plus simple possible.
-
- CRYSEXP.PAS est la même chose que le fichier précédent mais en
- Turbo Pascal cette fois ci.
-
- CRYSTAL.ASM est le code du programme principale du player de MOD,
- on peut prendre cela comme un exemple d'utilisation
- des routines en assembleur.
-
- CRYSFR.DOC est le fichier qui contient la documentation en francais
- et que vous êtes en train de lire.
-
- CRYSENG.DOC la même chose en anglais.
-
- CRYSTAL.INC contient la définition de quelques constantes pour un
- programme en assembleur comme le numéro des codes
- d'erreur renvoyé par mes routines ou le numéro des
- cartes sonores.
-
- CRYSTAL.PAS contient la source de l'unité pascal nécessaire à
- l'utilisation des routines.
-
- CRYSTAL.TPU contient l'unité à appeler dans un programme en Turbo
- Pascal.
-
- FILE_ID.DIZ contient une petite description du player pour les
- listes de fichiers des BBS.
-
- STINTER.ASM contient des routines qui vont chercher dans le module
- CRYS23, des variables utiles pour faire un player
- comme par exemple le numéro de la piste actuelle ou
- l'octet envoyé.
-
- STMODE3.ASM contient des routines pour afficher en mode texte 3
- (80*25 en 16 couleurs).
-
-
-
-
- II - Fonctionnalités │
- ──────────────────────┘
-
- Ce programme est entièrement programmé en assembleur et contient des
- instructions spécifiques au 386. Il reconnait quatre appareils
- pour restituer la musique: le haut parleur interne, un
- convertisseur digital -> analogique (ex: Covox) sur un port
- parallèle ,une soundblaster et enfin une GUS. Attention, la
- soundblaster doit utiliser le canal DMA 1 et une IRQ inférieure
- ou égale à 7.
-
- Il accepte que les fichiers .MOD avec 15 ou 31 instruments et avec 4,
- 6 ou 8 voies. De plus il n'accepte que 64 patterns et chaque sample
- doit avoir une longueur inférieure à 63Ko. Les effets suivants ne
- sont pas reconnus: E3,E4,E5,E7,EF. Par contre il utilise les 8
- octaves de scream tracker 3.
-
- Comme vous le verrez en lisant la partie historique, ce programme a
- beaucoup évolué ce qui fait qu'il n'est pas des plus facile à
- comprendre. Il contient donc au moins quelques bugs et si
- quelque chose ne marche pas, vous en avez peut être trouvé un.
- Dans ce cas, contactez-moi, généralement, j'arrive à le faire
- assez vite. Si c'est un MOD particulier qui marche mal,
- j'aimerais aussi que vous me le transmettiez ou au moins son nom
- et l'endroit ou le trouver.
-
-
-
- IV - Le MOD player │
- ────────────────────┘
-
- Le MOD player contenu dans l'archive n'essaye pas de concurrencer les
- autres mod player et il possède peu d'option. Il est fourni pour vous
- permettre de juger facilement de la qualité (et des défauts) des
- routines sonores et vous donne un exemple d'utilisation de ces
- routines en assembleur. Il utilise des informations internes des
- routines de restitution de la musique et vous montre comment les
- utiliser si vous en avez vraiment besoin. Vous pouvez refaire un
- nouveau mod player avec mes routines mais elles ne sont pas faites
- pour cela car elles gèrent assez peu d'options.
-
- Il s'utilise de manière assez simple et si vous l'appelez sans
- paramètre, il affiche une page d'aide. Vous devez lui passer comme
- paramètre au moins le nom d'un fichier MOD. Il choisira par défaut
- la meilleure carte sonore qu'il trouvera dans vos variables
- d'environnement. Vous pouvez forcer une carte spéciale, même si elle
- n'existe pas dans les variables d'environnement, ou changer la
- fréquence de mixage par défaut (18.6kHz) en utilisant les options
- suivantes:
-
- /FRxxx Fixe la fréquence de mixage en centaine de Hz
-
- /SK Force l'utilisation du haut parleur interne
-
- /DCp Force l'utilisation du DAC sur le port p (1 à 4)
-
- /SBp,i Force l'utilisation de la SB sur le port d'adresse p (en
- hexadécimal) avec l'irq i
-
- /GSp Force l'utilisation de la GUS à l'adresse de port p
- (toujours en héxadécimal)
-
- Les paramètres p ou i peuvent être omis, mais pas les virgules, ce qui
- oblige le player à chercher ces valeurs dans les variables
- d'environnement. Si elles n'existent pas il prend des valeurs par
- défaut.
-
-
-
- V - Utilisation │
- ─────────────────┘
-
- La source a été compilée avec Turbo Assembleur en mode idéal et
- nécessite un 386 minimum. Les routines s'occupant de la restitution
- sonore sont toutes regroupées dans le même fichier nommé CRYS26.ASM.
- Pour utiliser ces routines, il suffit d'inclure dans votre programme
- le fichier objet correspondant ou l'unité pascal.
-
- Toutes les fonctions utilisent la convention du pascal pour prendre
- leurs arguments. Elles renvoyent éventuellement un code d'erreur sur
- 16 bits mais sauvegardent toutes ES,DS,DI et SI, les autres registres
- pouvant être modifiés.
-
- Pour pouvoir faire de la musique, il faut appeler dans l'ordre
- FLOADMOD ou MLOADMOD pour charger le module en mémoire. Puis SETMOD
- pour indiquer la carte sonore à utiliser et la fréquence et STARTMOD
- pour commencer effectivement la musique. Enfin régulièrement dans
- votre programme il faudra appeler MAKEMOD pour calculer la musique
- pour les 1/50 prochaine seconde. Pour arrêter la musique il suffit
- d'appeler STOPMOD et vous pouvez alors reprendre normalement avec
- STARTMOD. Par contre, si vous voulez changer de module ou de carte
- sonore il faudra réutiliser SETMOD et éventuellement FLOADMOD ou
- MLOADMOD. Quand vous avez fini ou si vous changer de module il faut
- appeler UNLOADMOD pour rendre au DOS la place réservée lors du
- chargement du fichier MOD. Il existe en plus une fonction DETECTSND
- qui va chercher dans les variables d'environnement les cartes sonores
- installées et leurs configurations.
-
-
- Voici maintenant la description détaillée de ces fonctions.
-
-
- FLOADMOD
-
- Fonction: Charge un mod en mémoire à partir d'un fichier sur disque
-
- Entrée: Un pointeur long sur le nom du fichier terminé par un
- caractère nul.
-
- Sortie: Un code d'erreur non nul si il y a eu un problème.
-
- Note: Cette fonction alloue elle même la mémoire nécessaire aux
- instruments, chaque instrument utilisant 764 octets de
- plus que dans le module. Chaque instrument doit pouvoir
- rentrer dans un segment (64Ko) et il ne faut pas plus de
- 64 patterns.
-
-
- MLOADMOD
-
- Fonction: Prépare un mod déjà en mémoire
-
- Entrée: Un pointeur long sur le début du mod en mémoire.
-
- Sortie: Un code d'erreur non nul si il y a eu un problème.
-
- Note: Cette fonction fait exactement la même chose que la
- précédente sauf qu'elle ne charge pas le MOD à partir
- d'un disque. Il faut noter qu'elle alloue à nouveau de la
- place mémoire pour tous les instruments ce qui fait que
- le mod se trouve en fait deux fois en mémoire. Mais
- vous pouvez réutiliser cette place.
-
-
- OLOADMOD
-
- Fonction: Charge un mod ajouter à la fin du programme executable
-
- Entrée: Un entier long (32 bits) donnant la position du début du
- mod.
-
- Sortie: Un code d'erreur non nul si il y a eu un problème.
-
- Note: Cette fonction est équivalente à FLOADMOD et comporte donc
- les mêmes restrictions. Elle se contente de la position
- du mod dans l'executable et se charge de retrouver son nom.
-
-
- UNLOADMOD
-
- Fonction: Libère la place utilisée par MLOADMOD et FLOADMOD
-
- Entrée: Rien
-
- Sortie: Rien
-
- Note: Cette fonction doit être appelé à la fin du programme ou
- avant de recharger un nouveau MOD pour rendre au DOS la
- place mémoire prise par les instruments.
-
-
- SETMOD
-
- Fonction: Définit la carte sonore et la fréquence utilisée
-
- Entrée: Dans l'ordre du pascal il faut donner la fréquence de
- mixage en centaines de hertz sur 16 bits, le numero de la
- carte sonore sur 8 bits, le port utilisé par la carte sur
- 16 bits puis l'irq utilisée sur 8 bits.
-
- Sortie: Un code d'erreur non nul s'il y a un problème.
-
- Note: Les numéros de cartes sonores reconnus pour le moment
- sont les suivants:
- 0=aucun son
- 1=haut parleur interne
- 2=DAC sur un port parallèle
- 3=soundblaster
- 4=GUS
- Pour le DAC le port ne correspond pas à une adresse
- mais au numéro du port parallèle sur lequel il
- est connecté (1 à 4).
- Si on passe 0 comme paramètre en fréquence, la
- routine choisit une fréquence par défaut de
- 18.6kHz.
- Toutes les cartes n'utilisent pas forcément tous les
- paramètres. La GUS n'utilise pas la fréquence et
- joue toujours le mod à 44kHz. Seule la soundblaster utilise
- l'irq donnée qui doit être inférieure ou égale à 7 de
- plus, elle utilise toujours le canal DMA 1. Pour la GUS
- il faut noter que c'est dans cette fonction que les
- instruments sont chargés dans sa mémoire mais il reste en
- mémoire centrale.
-
-
- STARTMOD
-
- Fonction: Commence la musique
-
- Entrée: Rien
-
- Sortie: Rien
-
- Note: Cette fonction masque toutes les interruptions sauf celle
- du clavier et de l'horloge mais comme celle de l'horloge
- est prise en charge par toutes les cartes sonores
- execepté la soundblaster, il est préférable de ne plus
- l'utiliser. A partir de ce moment il faut éviter toutes
- les fonctions qui masquent les interruptions sous peine
- de dégrader considérablement la musique.
-
-
- MAKEMOD
-
- Fonction: Calcule 1/50s de musique
-
- Entrée: Rien
-
- Sortie: Rien
-
- Note: Il faut appeler OBLIGATOIREMENT cette fonction dans la
- boucle principale de votre programme. Avant de remplir le
- buffer cette fonction teste si il n'est pas déjà plein
- donc vous pouvez et c'est même recommandé, appeler cette
- fonction plusieurs fois dans votre boucle principale. De
- plus, si pendant un tour de boucle vous avez peu de temps
- libre vous pouvez vous permettre de ne pas appeler cette
- fonction. Le buffer utilisé a une longeur de 2Ko.
-
-
- STOPMOD
-
- Fonction: Arrête la musique
-
- Entrée: Rien
-
- Sortie: Rien
-
- Note: Cette fonction vous permet d'arrêter définitivement la
- musique ou de pouvoir faire une pause si vous rappeler
- STARTMOD par la suite. Elle remet les interruptions dans
- leur état intial. Il peut y avoir quelques problèmes, en
- particulier avec la soundblaster, si vous faites des
- pauses.
-
-
- DETECTSND
-
- Fonction: Détecte les cartes sonores installées en recherchant dans
- les variables d'environnement.
-
- Entrée: Dans l'ordre et toujours sous forme de pointeur long,
- l'adresse d'un octet pour la carte sonore,d'un mot pour
- le port,d'un octet pour l'irq et d'un octet pour le DMA.
-
- Sortie: Rien
-
- Note: Si vous placez des valeurs non nulles dans ces variables,
- cette routine ne les changera pas, vous pouvez ainsi
- forcer la routine à détecter la configuration d'une carte
- précise. Si vous mettez 5 comme numéro de carte sonore,
- le programme cherchera la carte avec le numéro le plus
- élevé. Si le programme ne trouve aucune carte il mettra
- 1 (Haut parleur interne). Pour le DAC le programme
- rechercher la variable d'environnement DAC=numero du
- port (1 à 4).
-
-
- CHANGEVOL
-
- Fonction: Fixe le volume global.
-
- Entrée: Un octet pour le volume (0 à 255).
-
- Sortie: Rien
-
- Note: Change simplement le volume global de la musique. Mais ce
- changement n'est pas instantané, il y a un delai variable
- suivant la fréquence de mixage autour de 250ms.
-
-
-
- VI - Questions souvent posées │
- ───────────────────────────────┘
-
- Comment accéder aux variables des routines jouant les MOD pour par
- exemple afficher le numéro du pattern en cours ?
-
- > Pour rester le plus simple possible je n'ai documenté que les
- fonctions indispensables du module jouant les MOD et l'unité pascal
- ne contient que ces fonctions. Mais il y a d'autres symboles
- publics dans ce module et je les utilise dans mon player. Vous
- pouvez donc regarder dans CRYS26.ASM les différents symboles
- accesibles et voir comment les utiliser dans STINTER.ASM.
-
-
- Pourquoi le son est-il moins bon qu'avec les autres players de MOD ?
-
- > Il y peut y avoir jusqu'à trois raisons à ceci. La première est
- que dans un souci de rapidité, je mélange les samples des
- différentes voies sur 8 bits alors que la majorité des players le
- fait sur 16 bits. La deuxième est que je n'utilise pas forcément
- une carte sonore à fond, par exemple si vous avez une soundblaster
- pro je l'utiliserai comme une soundblaster simple sans utiliser
- la stereo. Enfin la dernière est que par défaut la fréquence de
- mixage est commune à toutes les cartes sonores. Elle est au maximum
- pour garder un son de bonne qualité avec le haut parleur interne:
- 18,6Khz. Or, pour une soundblaster vous pouvez monter jusqu'a 22Khz
- en utilisant /FR avec le player ou en passant une fréquence non
- nulle à SETMOD.
-
-
- Pourquoi ne puis-je pas tester mon programme dans l'environnement
- intégré du pascal ?
-
- > Il faut bien voir que pour arriver à jouer de la musique sur un PC
- je suis obligé de faire des trucs particuliers comme détourner des
- interruptions matérielles. Et cela n'est pas facilement accepté par
- les autres programmes.
-
-
- Pourquoi le player marche beaucoup plus lentenment avec EMM386 ?
-
- > C'est tout à fait normal, c'est dû au fait que quand EMM386 ou tout
- autre gestionnaire de mémoire étendue est en marche, la machine n'est
- plus en mode réel mais en mode virtuel 86 et dans ce mode, les
- interruptions prennent beaucoup plus de temps. Comme le player les
- utilise beaucoup, cela le ralenti enormément.
-
-
- J'ai essayé de rajouter un peu de code dans l'unité pascal mais plus
- rien ne marche, pourquoi ?
-
- > C'est normal, les routines du module jouant les MOD sont toutes dans
- un même segment qui doit avoir une organisation spéciale. En
- particulier, mon code doit commencer à l'adresse 0 du segment. Si vous
- rajoutez du code dans l'unité, pascal va le mettre au tout début du
- segment et cela va bugger. Vous pouvez par contre, rajouter des
- déclarations.
-
-
- Comment savoir si une routine s'est bien déroulée ?
-
- > Normalement, mes routines renvoient 0 et la retenue est effacée si
- touts c'est bien passé. Dans le cas contraire, la retenue est mise et
- je renvoie un code d'erreur indiqué dans CRYSTAL.INC.
-
-
- Pourquoi je n'arrive pas à charger le module alors que j'ai le bon nom
- de fichier ?
-
- > Il est possible que la routine n'arrive pas à réserver de la mémoire
- pour charger les instruments. La routine demande cette mémoire au DOS
- et il faut donc que votre programme ne ce l'ai pas entièrement
- approprié. Dans un programme C,il faut utiliser par exemple le modèle
- SMALL qui prend que 128Ko de mémoire au maximum. Pour un programme
- pascal, il faut mettre l'option $M pour limiter la taille du tas.
- Enfin si vous programmez en assembleur il faut rendre la mémoire
- inutilisée par votre programme au démarrage avec la fonction 4Ah du
- DOS que ce soit un programme COM ou EXE.
-
-
- Comment mettre un module en overlay ?
-
- > Il faut commencer par compiler votre programme exécutable en appelant
- la fonction OLOADMOD avec une valeur bidon. Puis vous regardez la taille
- de votre exécutable après l'avoir éventuellement compacté et vous
- recompilez votre programme en passant à OLOADMOD cette valeur. Vous pouvez
- alors recompacter le résultat avant d'ajouter le module mais il faut que
- la taille du programme reste la même. Enfin pour ajouter votre module il
- suffit de faire, par exemple, sous DOS "copy /B programme+module".
-
-
- VII - Historique │
- ──────────────────┘
-
- Comme je l'ai déjà dit en introduction, j'ai fait ce programme petit
- bout par petit bout. Au départ, il y 3 ans, j'ai commencé à écrire
- quelque chose qui marchait uniquement sur le haut parleur interne du
- PC puis j'ai amélioré au fur et à mesure des demandes. Voici donc la
- liste des améliorations sucessives depuis la version 1.3 qui a été la
- première à avoir une documentation.
-
- Version 1.3
-
- Programme modulaire
- Réglage de la vitesse de restitution
- Accélération de la routine pour le PC speaker (+20%)
- Correction de certains effets (portamento tone)
- Amélioration de la fidélitée des notes
- Tempo de la musique respecté
- Correction d'un bug dans le vibrato
- Meilleure documentation
-
- Version 1.5
-
- Son sound blaster
- Utilise les 31 instruments
-
- Version 1.6
-
- Correction des bugs de la 1.5 !!!
- Correction de l'arpeggio
-
- Version 1.7
-
- Recorrection de l'arpeggio
- Correction générale des effets existants
- Ajout de nouveaux effets(portamento+volume slide,vibrato+volume slide,
- tempo étendus,tremolo,play end part of a sample,fine portamento up,
- fine portamento down,fine volume slide up,fine volume slide down,
- loop)
-
- Version 1.8
-
- Ajout d'une présentation pendant la musique(petite perte de vitesse)
- Changement mineur pour le PC speaker pour améliorer la qualité de la
- musique quand le PC est lent
-
- Version 1.9
-
- Amélioration de petit détail
- Programmation d'une unité pascal et d'un exemple pour utiliser mes
- routines
- Programme d'exemple en C++ montrant l'utilisation des routines
- Ajout de quelques options utiles dans la page de présentation
- Légère accélération des routines(+4%)
-
- Version 2.0
-
- Accéleration générale des routines(+20%)
- Ajout d'une routine pour utiliser un MOD déjà en mémoire
- Correction de l'effet E6
- Ajout des effets suivants:pattern delay,cut note,note delay,rettrig
- sample
-
- Version 2.1
-
- Recorrection du portamento tone
- Ajout d'une option sans son
- Correction d'un bug lors d'un saut manuel
- Amélioration du bug de la sound blaster avec la pause
- Correction de l'effet 9
-
- Version 2.2
-
- Ajout du support de la GUS
- Correction du bug lors d'un saut manuel avec la sound blaster
- Ajout d'une fonction détectant les cartes sonores installées
-
- Version 2.3
-
- Support des MOD 8 voix
- Reconnait les 8 octaves de scream tracker
-
- Version 2.4
-
- Utilisation de l'octet de fine tune
- Correction d'un bug quand on change de note sans changer d'instrument
- Correction d'un bug apparu avec la version 2.3 pour des fréquences
- de mixage faible
- Correction des exemples pascal et C qui étaient devenus faux
- Reécriture de la documentation
-
- Version 2.5
-
- Amélioration de la qualitée sonore pour la GUS
- Support des MOD 6 voix
- Ajout d'un volume global
- Chargement d'un MOD en overlay
-
- Future
-
- Support de nouvelle carte son (il me faudrait des informations
- dessus et que je puisse faire des tests)
- Reécriture du code (c'est par terrible pour l'instant)
- Support de nouveau format (est-ce vraimment utile ?)
- Support des derniers effets non utilisés ( ils ne servent quasiment
- jamais)
- Mixage du son sur 16 bits (cela améliorerait la qualité mais
- pénaliserait la vitesse d'execution)
-
-
- VIII - Remerciements │
- ──────────────────────┘
-
- Je tiens à remercier les personnes suivantes qui ont joué et continue
- de jouer un rôle dans le développement de ce programme:
-
- William Petiot pour les test et les réglages pour la GUS
- Stéphane Gigandet pour les nombreux tests SB et le support moral
- Tchi Southivong pour les très nombreux tests avec la GUS
- Stéphane Scherrer pour quelques documents sur la sound blaster
- Vincent Negrier pour les tests avec la SoundBlaster
- Francis Gastellu pour le nom du player
- Mark Cox pour m'avoir montré que l'on pouvait jouer un MOD sur PC
- Bisounours / Nuage pour la traduction anglaise de la documentation
- VLA pour les informations sur le transfert DMA/DSP
- CASCADA pour leur player de mod avec la GUS
-
-
-
-
- IX - Contacts │
- ────────────────┘
-
- Si vous voulez utiliser mes routines dans un programme commercial, si
- vous trouvez un ou des bug(s), si vous voulez une amélioration
- précise, si vous voulez des renseignements supplémentaires ou si vous
- avez juste quelques remarques à me faire vous pouvez me contacter à
- l'adresse suivante:
-
- M Sébastien Granjoux
- 17,rue de Paris
- 92190 Meudon
- France
-
- Vous pouvez aussi me laisser un message sur un des BBS suivants qui
- sont tous situés dans la région parisienne:
-
- Dune BBS +33-1-47-02-25-97 24.0 Bps
- Deadline BBS +33-1-46-48-67-63 14.4 Bps
- +33-1-46-44-57-96 28.8 Bps
- Eden BBS +33-1-34-15-39-67 28.8 Bps
- +33-1-34-13-95-28 14.4 Bps
-
- J'ai aussi une adresse email mais sa validité est plus aléatoire:
-
- sebastien.granjoux_barnabo@sparkhq.fdn.org
-
-
- N'hésitez pas à me contacter, je serai toujours heureux de vous
- répondre et cela me donnera l'impression que je n'ai pas écrit tout
- ce code pour rien.
-
-
- X - Où trouver Crystal Player ? │
- ─────────────────────────────────┘
-
- La dernière version de Crystal Player seras normalement disponibles sur
- les BBS suivants:
-
- - France:
-
- Dune BBS +33-1-47-02-25-97 24.0 Bps
- Deadline BBS +33-1-46-48-67-63 14.4 Bps
- +33-1-46-44-57-96 28.8 Bps
- Eden BBS +33-1-34-15-39-67 28.8 Bps
- +33-1-34-13-95-28 14.4 Bps
-
- Si vous voulez aussi distribuer Crystal Player, appelez un de ces
- BBS.
-
-
- Sébastien Granjoux le 11/01/95
-
-
-