Après avoir passé
l'AmigaBasic par le 'Trashcan', à cause de ses nombreux bugs,
vous décidez de vous lancer dans le C. Vu le prix
astronomique des compilateurs commerciaux, et après une
recherche dans le DPs, vous tombez sur la version freeware de
DICE...
C'est ainsi que j'ai débuté avec le C il a 2
ou 3 ans. Grâce à lui, j'ai pu réellement
attaquer ce langage. A l'époque, mon Amiga n'avait que 512 Ko
et 1 seul lecteur, autant dire que faire marcher un compilateur
dans ces conditions ne relevait que du masochisme. Je suis donc
passé à 1 Mo. A noter que Dice est le seul
compilateur, à ma connaissance, utilisable avec seulement 1Mo
et 1 lecteur. J'ai aussi essayé avec le Lattice ou l'Aztec,
... Séquence 'grille-pain'. Mais il possède aussi
d'autres avantages comme la facilité avec laquelle on peut
créer des programmes résidents, et pour les plus
bidouilleurs, la possibilité de créer des programmes
rommables.
Dans ce premier article, je vous parlerais donc de la façon d'installer DICE avec des petites configurations ( Version freeware ), puis de la version enregistrée. Plus tard nous aborderons les caractéristiques spécifiques de Dice et d'astuces qui nous faciliterons la vie,ainsi que de l'utilisation de bibliothèques externes. A noter que tout ceci ne concernera pas uniquement DICE,mais aussi les autres compilateurs.
J'ai utilisé le
système suivant presque un an avant d'acheter un disque dur
et beaucoup d'amis continue à utiliser un environnement
semblable sans problèmes. Il faut donc au minimum un ...
Amiga ( Non, ... si, si !) avec au moins 1 Mo. Le drive interne
suffit. Pour une fois les utilisateurs d'Amiga sous 1.3 seront
avantagés car les nouvelles versions du système
utilisent plus de mémoire, et la Config des disquette
suivantes n'est valable qu'avec les Includes et les Libraries du
1.3, celles du 2.0 étant plus volumineuse. De toute façon,
les versions enregistrées du compilateurs, plus récentes,
sont plus adaptées à la programmation sous 2.0.
Il nous faut donc 2 disquettes :
Formater la première
et installez-la en tant que système ( INSTALL DF0:
).
L'environnement de programmation sera le Shell, mais plutôt
que d'utiliser celui de Commodore, je vous conseil de prendre Csh :
il est moins gourmand en mémoire et surtout, toutes les
commandes sont internes, d'où un "bootage" plus
rapide - ce qui plus qu'intéressant lorsque l'on programme
en C où le Guru a souvent des crises de méditation -.
Pour que tous rentre sur la disquette, une compression s'avère
indispensable. Personnellement, j'utilise Turbo-Imploder pour les
exécutables, car il compresse aussi les Bibliothèques
,... . Je conseille d'avoir 2 versions de celui-ci : La dernière
en date ( v4.0 à l'heure où j'écris ces lignes
) et une plus ancienne ( 3.x ) car les récentes ne permettent
plus de compresser les programmes pures. PowerPacker sera utile pour
compresser les textes ( Docs, ... ). Même si des utilitaires
comme PP permettraient aussi de réduire les includes, je le
déconseille à cause du temps ajouté à la
compilations. En parlant de textes, il nous faut aussi installer sur
cette disquette un éditeur: on va laisser tomber ED qui est
tous juste bon pour un PC pour se pencher vers micro-Emacs de la
disquette Extra ou vers des DPs. Certains ont été
crées uniquement pour la programmation comme Az qui permet de
tester les [] et les {}. J'ai laissé tombé Dme (
fournis avec Dice ) car trop compliqué, et surtout trop
volumineux.
Passons maintenant à l'installation de Dice,
voici donc le contenu de ma première disquette :
|
On reconnaît les répertoires propres aux disquettes systèmes sur Amiga (s, l, devs, c). Les autres proviennent de l'archive de DICE. Le but étant d'éviter le grille pain, seul les fichiers n'étant chargés qu'une fois ( les exécutables ) et ceux n'étant pas 'importants' comme les docs sont installés. Dans c: très peut de commande AmigaDos mais beaucoup d'utilitaires :
|
Remarquez res1.3: il s'agit
de la commande resident qui est renommée car CSH
contient aussi un resident (A notez qu'avec les versions récente, 5.?? ou +, on peut force l'utilisation d'une commande externe en mettant sa premiere lettre en maguscule Resident
); ils ne sont pas compatibles mais
nous avons besoin des deux comme nous le verrons plus loin ... Parmi
les utilitaires, on reconnais ceux de PowerPacker, Border qui nous
donne un shell sans ... bords, Guru qui explique les codes du
méditeurs fou, alors que Gomf tente de les éviter ( la
version 1.0 est du DP ), NoPalReset pour éviter que l'Amiga
ne boot en NTSC, Kill'em ( anti-virus ), Dmouse ou MachIV pour la sélection automatique des
fenêtres et le Blanker ; la version FreeWare de Dice ne
comportant pas l'attribut _chip, nous devons utiliser un programme
pour placer correctement nos données graphiques.
J'utilise FixHunk ( programme DP qui était fourni avec
mon extension mémoire Spirit).
Pour ceux qui n'ont pas ce
programme, voici la procédure à suivre :
|
|
|
|
Il est évident que
tous ces fichiers ne concernent que ma configuration et qu'ils doivent
être personnalisés ( par exemple un 'SetMap f
' devra
être ajouté si vous avez un clavier français, ce
qui n'est pas le cas de mon A1000. )
Voici quelques scripts utiles :
|
|
|
Derniere remarque : J'utilise des 'alias' pour la compilation
make salut
' )
Sur la seconde disquette, nous allons placer les INCLUDEs de DICE, et de Commodore.
Il faut savoir que ces dernières ne sont pas comprises
dans la distribution FreeWare de Dice, mais on peut ce les procurer,
soit au près de Commodore, soit dans la distribution d'un
autre compilateur. Dans ce cas, il ne faut garder que celles dont
l'entête est (C) Commodore. Créer un repertoire INCLUDE
( makedir dice2:include
) et copier tout les fichiers de dice. Dans
ce directory, créer un sous-répertoire Amiga13 ( pour
les includes du 1.3 ) ou/et Amiga20 pour les includes du 2.0. Dice
permet en effet de les dissocier mais attention : ce qui ce trouve
dans amiga13 n'est pas accessible d'une manière standard si
vous développez en 2.0 et vice versa ( voir les flags -1.3
et -2.0). Créer un directory LIB ou l'on placera les
librairies du C.
A noter que l'Amiga.lib fournie avec la version
freeware ne contient pas toutes les fonctions, mais comme l'indique
l'auteur, il nous suffit de prendre celles d'un autre compilateur ou
assembleur ( hormis l'Aztec ), d'exécuter un LIBTOS pour
disposer d'une bibliothèque parfaitement utilisable.
|
La version freeware de Dice se trouve sur une Fred Fish ( je laisse a ed: le soin de trouver laquelle ). Elle est quelque peut "bridées" par rapport à la version commerciale ( pas de _chips, ni de flottant), et elle n'est plus mise à jour depuis un moment . Dcc a donc moins d'options, et dispose de moins d'utilitaires...
Après 2 ans
d'utilisation de la version Freeware, la seule chose qui m'empêchait
d'acquérir cette version était la commande au USA: Les
conditions de M.Dillon étant trop compliquées.
Heureusement la société SOMEWARE a résolut ce
problème.
Mise à jour 2000 :
SOMEWARE n'existe malheureusement plus depuis un moment, mais la version enregistrée de DICE est disponnible sur Aminet, avec les sources il me semble. Par contre elle n'est plus développée ou soutenue.
Mais pourquoi acquérir cette version ?
Premièrement, du coté éthique, si on utilise
très souvent un programme, surtout aussi bon que Dice, autant
s'enregistrer pour permettre à son auteur de continuer ...
D'un coté plus pratique, la version enregistrée
continue à évoluer, dispose d'un environnement complet
et d'options tous à fait intéressantes ( comme la pile
dynamique, la gestion des fichiers à l'Unix, ... ).
Bref, j'ai donc commandé cette version. Après quelques jours j'ai reçu un paquet contenant un classeur ( La doc du compilateur et de ses utilitaires le tous en français ), et trois disquettes contenant les exécutables, les docs, les Includes et les bibliothèques du 1.3 et du 2.0 ... Stop, le tous sur 3 disquettes !!! Oui, mais tous y est compressé avec Lharc. Pas de panique, la procédure d'installation est très simple et surtout très puissante.
Séquence installation ... Sous le workbench, seul l'icône du programme d'installation est présent ( sur la première disquette évidement ). Quelques remarques:
|
si intuition < 36 ( WB < 2.0 )
lecture du fichier env:var
sinon ( on est sous 2.0)
GetVar(var)
fin
D'un point de vue logique,
tous devrait bien marcher : Si on utilise le 2.0 la fonction système
GetVar() est appelée, sinon, on va lire le contenue du
fichier ( car les variables d'environnement sous AmigaDos sont en
fait des fichiers particuliers stockés dans ENV: ). Lors de
la compilation, et QUELQUES SOIT LA VERSION du système, DICE
vas génèrer le code pour la lecture directe du
fichier, MAIS AUSSI POUR L'APPEL DE GetVar() !! Dlink recherchera
donc un lien vers _GetVar() ce qui provoque une erreur car
l'Amiga13.lib ne contient pas cette fonction ! La solution est donc
de linker tous le temps avec les bibliotheques du 2.0, le programme
est capable d'appeler le bon code quelque soit la version du
KickStart. La version freeware n'a pas ce genre de problème,
car les bibliothèques sont beaucoup plus réduites.
Contrairement à la version freeware, je vais me pencher sur un système plus puissant car j'ai "légèrement" upgradé mon A1000 : Il tourne maintenant sous 2.0 ( avec Zkick ), dispose de 6 Mo de Ram , d'un disque dur de 52 Mo et d'un 68010... Le programme d'installation est très bon et surtout très convivial, mais l'opération a quand même pris 3/4 d'heure a cause du désarchivage !! J'ai vraiment apprécié le teste que fait le programme pour indiquer si le drive peut recevoir Dice ( avec le nombre de blocks manquant si l'installation n'est pas possible ). Ne disposant plus que de 5Mo sur le disque, j'ai du faire "le ménage" dans la distribution. Le programme permet de sélectionner facilement ce que l'on veut installer. J'ai donc supprimé les Includes Amiga1.3 avec les libairies correspondantes, Libs qui contient une update des librairies mathématiques du 1.3, dutils,dme,sources,doc car elles sont imprimées dans le classeur,lib,cc et s. Man contient de l'aide sur les bibliothèques. Je les ai converties et compactées pour les utiliser avec Adoc. Bref, le tous fait quand même quelques 4.5 Mo !! Comme pour la version freeware, un coup d'Imploder et de PowerPacker m'a fait gagner 250 Ko ( ce qui est loin d'être négligeable ,le reste étant pris par les Includes et les Bibliothèques ... ).
Deux scripts sont crées pour lancer Dice ( Dice_Path et Dice_Startup ). Utilisant Csh, je les ai remplacés par d'autres, basés sur ceux de la version FreeWare.
La commande du 2.0 est incluse dans la Rom donc inaccessible à CSH. La solution est d'utiliser celle du 1.3, qui est compatible avec le 2.0 et tous rentre dans l'ordre !
La prochaine fois je vous donnerais les sources d'un programme que j'ai réalisé pour configurer Dice car les alias seraient trop nombreux avec la version enregistré. Je parlerai aussi de l'utilisation des librairies partageable de l'Amiga. En attendant, les débutants peuvent jeter un oeil sur l'exemple donné dans la docs de dice ( première compilation ) qui est très intéressant.