1

J'ai du mal à inclure correctement des librairies sous as

Voici ma librairie flexlib (.text)

_ST_Redraw:
;ligne haute barre statut
move.w #1,-(a7)
move.w #83,-(a7)
move.w #159,-(a7)
move.w #83,-(a7)
move.w #0,-(a7)
jsr _DrawLine
lea 10(a7),a7
;ligne basse barre statut
move.w #1,-(a7)
move.w #93,-(a7)
move.w #159,-(a7)
move.w #93,-(a7)
move.w #0,-(a7)
jsr _DrawLine
lea 10(a7),a7
rts


(la routine fonctionne, je l'ai déja testée : redessiner la zone de statut)

et le programme qui l'utilise

include "ams_c"
include "flexlib"
bra _main
even
_main:
jsr _clrscr
move.w #1,-(a7)
movew #14,-(a7) ;le SUPER LOGO smilesmile
move.w #20,-(a7)
move.w #40,-(a7)
jsr _DrawChar
lea 8(a7),a7
jsr _ST_Redraw
jsr _ngetchx
rts


Le problème : J'obtiens juste Done!eekeek

Comment faire?
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

2

Au fait, ça ne sert à rien de faire un bra label si label est juste après... roll Et ne me sors pas que CC le fait aussi pour te défendre
Tu as du oublier de mettre include "flexlib" quelque part aussi, je pense (probablement entre le bra _main et le _main).
Et au fait, ton code est vraiment très loin d'être optimisé

3

jackiechan a écrit :
Au fait, ça ne sert à rien de faire un bra label si label est juste après... roll


C'est pour mieux imiter CC() mon enfantrageragerage
jackiechan a écrit :
Tu as du oublier de mettre include "flexlib" quelque part aussi, je pense (probablement entre le bra _main et le _main).
Et au fait, ton code est vraiment très loin d'être optimisé


Tout à fait, le code sort directement de la caltoche oui
Maintenant, c'est corrigé
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

4

Peut-être qu'il faut mettre le include "flexlib" après le bra _main roll

5

Attend, pour l'instant je sort le listing...
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

6

Quel listing ?

7

Vous voulez aussi le listing? Comme ca les experts verront certainnement d'ou ca vient, si c'est Nitro qui a mal implenté son prog
(Pour ce que ca interesse, le README précise que le listing est le 3eme argument, optionnel, de AS)

Allez,zou!

:Assembling file: routines
:1: include "ams_c"
:Assembling file: ams_c
:1: nolist
:
:End of file: ams_c
:2: include "flexlib"
:Assembling file: flexlib
:1: _ST-Redraw:
:
:2: move.w #1,-(a7)
:0x0000: 3F3C 0001
:3: move.w #83,-(a7)
:0x0004: 3F3C 0053
:4: move.w #159,-(a7)
:0x0008: 3F3C 009F
:5: move.w #83,-(a7)
:0x000C: 3F3C 0053
:6: move.w #0,-(a7)
:0x0010: 3F3C 0000
:7: jsr _DrawLine
:0x0014: F9A7
:8: lea 10(a7),a7
:0x0016: 4FEF 000A
:9: move.w #1,-(a7)
:0x001A: 3F3C 0001
:10: move.w #93,-(a7)
:0x001E: 3F3C 005D
:11: move.w #159,-(a7)
:0x0022: 3F3C 005D
:12: move.w #93,-(a7)
:0x0026: 3F3C 005D
:13: move.w #0,-(a7)
:0x002A: 3F3C 0000
:14: jsr _DrawLine
:0x002E: F9A7
:15: lea 10(a7),a7
:0x0030: 4FEF 000A
:16: rts
:0x0034: 4E75
:17: even
:
:End of file: flexlib
:3: bra _main
:0x0036: 6000 0002
:4: even
:
:5: _main:
:
:6: jsr _clrscr
:0x003A: F99E
:7: move.w #1,-(a7)
:0x003C: 3F3C 0001
:8: move.w #14,-(a7) ;même si carac demandé en char ...
:0x0040: 3F3C 000E
:9: move.w #20
:0x0044: 3F3C
:10: move.w #40,-(a7)
:0x0048: 3F3C 0028
:11: jsr _DrawChar
:0x004C: F9A4
:12: lea 8(a7),a7
:0x004E: 4FEF 0008
:13: jsr _ngetchx
:0x0052: F851
:14: jsr _ST_Redraw
:0x0054: 4EB9 00000000
:15: rts
:0x005A: 4E75
:End of file: routines
:Relocation table:
: 0x0000 - 0x0056

Tout ce que j'ai pu constater, c'est que le code des jsr est sensiblement différent pour les ROMCALLS et pour ma fonction, non référencée dans un tableau

J'attends l'avis des experts et de Nitro sur ce point:
*** pour jsr _ngetchx, dont la valeur ROMCALL est #-51
le code retourné est 4EB9 00000000 (ligne 13 de routines)
*** pour jsr _ST_Redraw,ma fonction, le code est :F851 (ligne 14 de routines)
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

8

jackiechan a écrit :
Peut-être qu'il faut mettre le include "flexlib" après le bra _main roll



Au fait, tu l'as comment, ce listing ?

9

jackiechan ==> post #6
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

10

ordivore ==> post #7

et pas besoin d'être un expert pour comprendre pourquoi le code n'est pas le même pour les ROM_CALLs que pour ta fonction : nitro utilise un hack qui permet de passer des adresses négatives à AS lors d'un jsr. Cette adresse est en fait le numéro du ROM_CALL*(-1). donc il doit rechercher dans la table des ROM_CALLs l'adresse correspondante au ROM_CALL.

11

jackiechan ==> post #4

le listing est le code machine
par contre, j'éssairais ton truc
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

12

Il n'y a rien au post #4.

Bon, j'ai finalement trouvé comment on obtenait ce listing (j'ai regardé dans le readme de AS, c'est vrai que c'était la solution la plus évidente en fait grin).
Ça peut être pratique smile

13

Au poste #4 il y a:
Attend...


J'ai essayé ta solution, ca marche!top

Du coup j'ai compris le problème: tandis que ams-c n'est juste qu'un tableau, flexlib contient une routine, donc un rts, qui met fin au programme avant même le bra _main!eek Et ca n'a rien à voir avec mon histoire de jsr.

MORALITE: Mettez toujours vos librairies APRES le bra _main (s'il existe)!!

(==>jackiechan : Alors le bra _main c'était pas utilewink?)
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

14

P*tain !!! GROS enc*lé de m*rde !!!!
Le bra _main était inutile s'il était suivi de _main !
Mais si tu rajoutes un include "file" entre, il n'est plus inutile.
rage
Tu dép*sse les b*rnes !

15

T'as pas compris ce que j'ai voulu dire : sans le _bra main; je n'aurais pas détecté l'erreur.
Alors quand je te dis que ca a servi à quelque chose... c'est vraioui
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

16

Pfff rattrape toi comme tu peux... roll

17

jackiechan
a écrit : Tu dép*sse les b*rnes !

(du calme du calme smile)
dépasse et borne sont des gros mots ? grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

Je vois que nous avons affaire à un expert...
Mais c'est vrai, "un newbie c'est là pour apprendre". Tout le monde a été newbie un jour.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

19

Je me souviens quand j'étais débutant comme lui j'ai posé les pires questions de newbie à Kevin Kofler parce que je débutais le C. Je le harcelais de mini-msg, je lui en envoyais un presque chaque jour.

20

En effet, tu étais carrément lourd. grin Mais comme on voit, ce sont ceux qui posent le plus de questions qui apprennent le plus. smile
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

Je crois qu'on a tous fait ça smile
(quoique non je ne me souviens pas avoir envoyé de mini messages, juste des centaines de posts grin)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)