--== DEVLYNX ==--

 
 
|
 
 
 
 
Accueil
News
Doc
Mémoire
Recrutement
Faq
Liens
Pseudo :

Mot de passe :


Pas de compte ?

S'inscrire...


Statistiques

Documentation


Rootretour à l'arborescence des catégories » Documentation techniqueEnsemble des informations pouvant être utiles au développement » Dinstinguer Lynx I / Lynx II
«««« ( /^\ ) »»»»
INFOS SUR LA CATEGORIE

Créée le : 2012-05-09 23:26:07
Par : vince





INFOS SUR LA PAGE

Titre : Test Lynx I ou Lynx II
Sous Titre : Un peu de code...
Langue : FRA
Source :
Auteur : vince
Posté par : vince

Test Lynx I ou Lynx II

Un peu de code...

Certains d'entre vous ont peut être besoin de savoir comment différencier la cible d'exécution. Est-ce que mon programme est exécuté sur Lynx I ou sur Lynx II ?

Avec l'aide de sage sur AtariAge, j'avais le nom du registre à titiller pour tester tout ça.

Au cas où vous auriez un besoin similaire, voici une petite démo de ce qu'il faut coder, "à minima" :

// les includes d'usage...
#include <lynx.h>
#include <lynxlib.h>

// buffers vidéos, vu ce qu'on teste on peut garder les deux...
char SCREEN[8160] at (MEMTOP-16320);
char RENDER[8160] at (MEMTOP-8160);

// on définit le buffer MSTEREO et son adresse 0xFD50
char MSTEREO at 0xFD50;

// une petite palette pour la forme
char pal[]={
0x00,0x0F,0x00,0x0F,0x0F,0x00,0x0C,0x08,0x08,0x0F,0x08,0x08,0x08,0x08,0x04,0x0F,
0x00,0xFF,0x0F,0x0F,0x00,0xF0,0xCC,0x8C,0x88,0x8F,0xFF,0x4F,0x48,0xF0,0x08,0xFF
};

// fonction synchronisation
void Vsync()
{
#asm
vretrace:
lda $fd0a
bne vretrace
#endasm
}

// programme principal
main() {
// une petite variable locale pour la lecture
unsigned char val;

// initialisations "standards"
InitIRQ();
CLI;

// on passe en mode double-buffering, sans collisions
SetBuffers(SCREEN,RENDER,0);

// on charge notre jolie palette
SetRGB(pal);

// on écrit une valeur dans MSTEREO, 0x10 soit "le canal 0 dans l'oreille gauche, tout le reste à off"
MSTEREO=0x10;

// on fait un fond d'écran noir
DrawFBox(0,0,160,102,0);

// on lit la valeur de MSTEREO
val=MSTEREO;

// est-ce qu'on retrouve bien la valeur que nous avons écrite ?
if (val==0x10) {
// Lynx II, on fait 2 rectangles
DrawFBox(20,20,20,62,0x0F);
DrawFBox(60,20,20,62,0x0F);
} else {
// Lynx I, on fait un rectangle
DrawFBox(20,20,20,62,0x0F);
}

// on affiche par le swapbuffer vu qu'on est en double buffering
SwapBuffers();

// on attend une synchro verticale pour la forme
Vsync();

// une petite boucle infinie pour ne pas quitter main()
for(;;){
}
}


Au final, ce petit programme vous affiche la version de votre Lynx en chiffres romains...

Ce code peut être simplifié à l'extrème de sorte d'obtenir une fonction de test v1/v2.

(Source : ) (Un peu de code...)
«««« ( /^\ ) »»»»

générée en 4 ms
-= DevLynx, un site par vince pour vous =-