Obligement - L'Amiga au maximum

Jeudi 22 juin 2017 - 14:02  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : GFA Basic - gestion des disquettes (2)
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News - juin 1991)


Comme d'habitude, il y a bel et bien trois erreurs dans le bout de code suivant. Les deux premières ne sont que de simples fautes de syntaxe que nous signalera aussitôt GFA. La troisième est plus subtile et amène le plantage du système. Sauvez donc votre programme avant de le lancer. Pour vous aider, je vous indique que cette troisième erreur se situe avant la ligne 13 (cliqueter le numéro après "Test" dans la barre de menu puis écrire 13).

Voilà l'exemple qui différencie le GFA du BASIC. En GFA, on ne se sert plus des numéros de lignes. J'aurais du dire "avant la boucle "REPEAT UNTIL"". En BASIC, on écrivait des numéros de lignes. En effet, le format d'une ligne BASIC est :

N°:LONGUEUR:INSTRUCTION(S)...
10:21:PRINT "BONJOUR !":REM écriture
20:23:PRINT "AU REVOIR !":REM écriture

Dans ces jargons, la ligne est en réalité conçue comme un bloc d'instructions et le numéro est en fait une étiquette nommant le bloc. Cela explique la possibilité d'écrire plusieurs instructions sur la même ligne, l'obligation de stocker la longueur de ligne par l'interpréteur et la lenteur de ces langages. En C, il n'y a plus de numéro de lignes mais les blocs sont délimités par () ou {}. En GFA, cela est beaucoup plus simple. Ce sont les instructions qui obligent, de manière transparente à l'utilisateur, à respecter une délimitation de bloc. Ainsi, il n'y a qu'une instruction par ligne en GFA comme en C ou en assembleur.

Revenons au code. Je confirme vos soupçons. C'est le cinquième nombre qui est incorrect. Pourquoi ? L'instruction "FILESELECT" serait-elle gravement boguée ? Certes, elle est boguée, mais ce n'est pas le bogue qui est ici en cause. Voici la vraie vérité : "FILESELECT" est une fenêtre de dialogue, et comme son homologue en assembleur, une boîte de dialogue dépend de l'écran en cours. Ici, sa hauteur est plus grande que ne le permet notre écran. Remplacez le nombre de la hauteur par 200 et le programme semblera fonctionner normalement. Quant au bogue, il est impossible à corriger sur d'autres machines que l'Amiga : Franck, quand vas-tu donc nous libérer ce fameux Lock ?

Cet oubli nous vient de l'époque où notre génial Ostrowski n'avait pas encore assimilé la philosophie de l'Amiga et sa manière de programmer proprement. C'était alors un jeune programmeur de PC puis d'Atari plein d'avenir. La programmation sur Amiga étant réservé à l'élite, Franck n'osait pas encore s'attaquer à notre machine et confia le cahier des charges à un collaborateur. Ainsi "FILESELECT" se réserve 24 octets pour ses besoins internes grâce à la fonction "Lock" (fonction Open). Il oublie de les libérer. Cela explique que l'icône GFA reste parfois après la fin de la session de travail.

Bien. Remplacez par 0 le numéro 1 désignant l'écran sur la première ligne de code GFA, et supprimez la ligne d'ouverture de fenêtre. Lancez. C'est la surprise. Cet écran est l'écran Workbench. Par contre, les paramètres le décrivant non pas été pris en compte. Le programme se poursuit et GFA s'aperçoit que nous voulons écrire du texte sans avoir défini de fenêtre d'écriture. Vous me ferez trois Ave et lirez cinq Sourates et ça passera pour cette fois : GFA nous posera sa fenêtre plein écran. En assembleur, crac.

Justement, me dites-vous, comment serait le code en assembleur. Facile, on utilise des structures C comme on le fait déjà en GFA sans le savoir (GFA est écrit en assembleur mais utilise le Workbench pensé en BCPL et C). Attention, l'assembleur est moins lisible et plus complexe. En macro, mettre :

GFA Basic

Je vous avais prévenu que GFA est le meilleur langage de programmation. Je rassure cependant les débutants en Devpac, on peut faire plus simple. On peut aussi créer une fonction qui ressemblera à s'y méprendre à la fonction GFA OPENS.

GFA Basic
GFA Basic


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]