|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Moi : Amis programmeurs, bonjour. Vous : Clameurs de toutes sortes et cris d'allégresse. Moi : Nous ouvrons aujourd'hui une rubrique dédiée à la programmation en C avec un grand C. Nous essaierons suivant votre volonté de faire à la fois de l'initiation aussi bien que de la programmation plus évoluée. De toute façon si vous êtes débutant en C, nous vous conseillons dès aujourd'hui la bible du C qu'est le Kemighan et Ritchie (en vente dans toutes les bonnes pharmacies). En fait, nous souhaiterions que cette rubrique devienne un recueil de trucs, astuces et autres routines indispensables à la programmation sur Amiga : gestion des sprites, BOB, gestion des écrans, des fameux (oui, on peut dire fameux) "Dual Playfields" (double champ de jeu), "scrollings" (défilements), et caetera, et caetera. Vous : Oh ! Il parle le latin couramment. Moi : Donc, disais-je avant que vous m'interrompiez subrepticement, nous voudrions créer une dynamique de développement, et plutôt que d'écrire dans votre coin des routines qui tuent, faites-en profiter la grande communauté fraternelle que sont les utilisateurs d'Amiga (j'ai un faible pour les envolées lyriques, quoique obsolètes, dans le plus pur style néo-bab flamboyant). Dans les prochains numéros d'A-News nous allons donc vous passer quelques listings d'utilitaires et nous vous invitons donc à nous envoyer vos oeuvres. Donc aujourd'hui, bande de petits veinards, acte I, scène 1, chapitre 1, paragraphe 1, ligne 1... de cette rubrique. Et quelle rubrique, puisque nous démarrons très fort doit-on reconnaître. Installation du compilateur Lattice 4.0 sur une seule disquette Vous qui avez seulement un lecteur de disquette, 512 ko de mémoire, et à qui on n'a cessé de dire qu'il n'y avait que l'Aztec C de valable, vous allez enfin pouvoir programmer comme un grand et pour de vrai. Remarque : si vous possédez une version 3.03 ou 3.10 vous pouvez faire la même chose mais vous disposerez de moins de place sur la disquette du fait que les fichiers includes ne sont pas sous forme compactée et que les versions 3.03 et 3.10 ne sont pas compatibles avec les fichiers compactés. Les disquettes Lattice C Procurez-vous le compilateur chez votre fournisseur favori. Examinons ensemble le contenu des trois disquettes. Disquette 1 : divers répertoires ; celui qui nous intéresse plus particulièrement est le répertoire "C" qui contient le compilateur. lc1 et lc2 qui sont les deux passes du compilateur et l'éditeur de liens "blink" plus quelques utilitaires tels que lcompact qui permet de compacter les fichiers sources et les fichiers includes pour le compilateur. Pour le reste, se reporter à la doc fournie par Lattice. Disquette 2 : un répertoire "source" contenant des sources en C. Un répertoire "lib" contenant les bibliothèques de l'éditeur de liens. Un répertoire "compacth" qui contient les fichiers includes compressés avec le lcompact. Disquette 3 : un répertoire "include" qui contient les fichiers includes éditables, c'est-à-dire que l'on peut charger sous éditeur ce qui n'est pas le cas des fichiers compactés. Copie des fichiers Première opération : recopier le disque 2. Pour cela, chargez votre Workbench, ouvrez un CLI et invoquez la commande "diskcopy" comme suit :
Deuxième étape : remettez votre Workbench dans le lecteur et recopiez les commandes suivantes en RAM : copy, cd, dir, makedir, delete, ed, rename, execute, install, relabel, path, assign, stack. Pour cela, tapez les lignes suivantes :
Remettez votre copie de la disquette 2 dans le lecteur et tapez "cd DF0:" Si vous êtes débutant, vous n'avez pas besoin de toutes les bibliothèques de l'éditeur de liens "linker" (sinon je suppose que vous ne lirez pas cet article). Tapez donc les quelques lignes suivantes ce qui libérera de la place sur la disquette.
Insérez de nouveau votre Workbench. Tapez :
Insérez de nouveau votre disquette.
Remettez la disquette 1 du compilateur et tapez :
Remettez la copie de la disquette 2.
Appelez maintenant l'éditeur en tapant "ed s/cc". Puis sous éditeur tapez ces cinq lignes :
Tapez "Esc+x" pour sortir de l'éditeur en sauvegardant. La première ligne passe en paramètres le nom du fichier que l'on veut utiliser. Si l'on a tapé "execute cc projet", la variable <file> est substituée par "projet". L'option "-oram:" indique à la passe 1 du compilateur qu'il doit travailler en mémoire ce qui permet de compiler plus vite que si l'on compile directement sur la disquette. C'est pourquoi la passe 2 travaille sur le fichier en ram: qui s'appele "nom_de_fichier.q" pour créer un fichier en ram: nommé "nom_de_fichier.o". Pour l'éditeur de liens "FROM" indique les fichiers à partir desquels on travaille. Il doit toujours y avoir le fichier lib/c.o et le fichier "nom_de_fichier.o". "TO" indique le nom du fichier de l'exécutable à créer. "LIB" indique les bibliothèques utilisées par l'éditeur de liens. Elles doivent obligatoirement être dans cet ordre sans quoi il risque de se produire des effets bizarres à l'exécution du programme. Le drapeau (flag) "CHIP" indique à l'éditeur de liens que toutes les variables doivent être allouées dans la mémoire Chip, C'est-à-dire dans les 512 premiers ko. Ceci permet en particulier de travailler avec une extension mémoire sans avoir de problème. Rappelons que, entre autres, les sprites doivent se trouver dans la mémoire Chip, de même que les tampons pour les accès disque lorsque l'on pilote directement le lecteur de disquette. Repassez sous éditeur en tapant "ed s/startup-sequence" puis tapez :
Sauvegardez avec "Esc+x". La commande "setmap" permet de passer en clavier français. Attention, il faut que le fichier 1 soit présent dans le répertoire "devs/keymaps". "Path RAM: add" indique à votre ordinateur préféré que s'il ne trouve pas la commande que vous invoquez il doit aller regarder en RAM: si elle n'y est pas. Bien sûr, si elle y est il l'exécute. "Assign nom_de_variable: chemin" indique au système de fichiers que chaque fois qu'il rencontre la variable "nom_de_variable:" il doit la remplacer par le chemin correspondant avant d'exécuter la commande. Exemple :
Chaque fois que le système de fichiers trouvera SYS: il le remplacera par "LATTICE C V 4.0". La ligne "assign INCLUDE: SYS:include" sera donc interprétée comme suit : assign INCLUDE: "LATTICE C V 4.0:include". La variable "INCLUDE:" indique au compilateur par l'intermédiaire du système de fichiers que les fichiers includes se trouvent dans le répertoire de nom "include". La commande "stack 20000" permet de modifier la taille de la pile utilisée par le compilateur, "stack" tout seul affiche la taille de la pile actuelle (il doit donc afficher 20000) ceci est très utile si votre programme utilise beaucoup d'appels de fonctions. Si en cours de compilation vous voyez apparaître le message "stack overflow" changez cette commande en "stack 30000" ce qui devrait résoudre le problème. Voilà, il ne vous reste plus qu'à redémarrer et si tout s'est bien passé, et que vous n'avez rien oublié, vous verrez apparaître le message "stack 20000" puis le 1> du CLI. Testons tout cela Il ne reste plus qu'à tester. Tapez donc "ed test" pour éditer ce petit programme de démo style de ceux fournis dans les manuels de Basic.
Après avoir sauvegardé ce magnifique exemple, tapez "execute cc test" et attendez. Quand le 1> du CLI réapparaît tapez "test" et il s'exécutera (remarque : si vous voulez garder l'exécutable n'oubliez pas de faire "copy ram:test df0:" avant d'éteindre l'ordinateur). Avec cette technique vous devez disposer d'environ 160 ko sur la disquette. Si toutefois votre programme ne rentre pas sur la disquette (prog.c + prog.0 + prog) vous pouvez utiliser la solution deux disquettes. Recopiez la disquette que nous venons de "fabriquer". Nous l'appellerons maintenant "Linker" alors que l'autre se nommera "Compilateur". Sur la disquette du compilateur, les bibliothèques de l'éditeur de liens ainsi que le blink :
...permet de récupérer plus de 100 ko. Puis éditez le fichier s/cc et enlevez les deux dernières lignes : ed s/cc. Positionnez le curseur sur la ligne 3 et tapez deux fois "Ctrl+b" puis "Esc+x". Sur la disquette "Linker", effacez c/lc1 et c/lc2 par "delete c/lcl c/lc2". On récupère ainsi environ 160 ko. Vous pouvez aussi effacer les fichiers includes si le coeur vous en dit. Modifiez le fichier "s/cc" comme suit :
Il ne reste plus qu'à le renommer : "rename s/cc s/link". Pour compiler Mettez la disquette "Compilateur" dans le lecteur et tapez votre programme. Pour le compiler tapez "execute cc prog" et attendez que le lecteur s'arrête de tourner. Mettez la disquette du compilateur et tapez "execute link". Le fichier "prog.o" sera recopié sur la disquette ainsi que l'exécutable "prog". Remarque : si une erreur survient au cours de la compilation appuyer sur la barre d'espace pour arrêter le défilement de l'écran et la touche "back space" pour reprendre la compilation. "Ctrl+C" vous permet d'arrêter la compilation à tout moment (versions 3.10 et 4.0 uniquement).
|