Obligement - L'Amiga au maximum

Mardi 23 avril 2024 - 08:09  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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]