1

Quelqu'un peut-il me donner une routine qui fait fopen en asm (de préférence avec as) svp ?
Toutes mes tentatives ont été soldées par des échecs
Le gentil timide du 64

2

je crois que Thibaut en avt fait une.

3

Voilà l'assembleur produit par GCC pour celle de TIGCC:
.LC0:
	.ascii "wa+\0"
	.text
	.even
	.globl	fopen
fopen:
	lea (-76,%sp),%sp
	movm.l #0x1f3e,-(%sp)
	move.l %a1,%a6
	sub.l %a4,%a4
	lea (62,%sp),%a5
	move.b (%a1),%d7
	clr.w 42(%sp)
	cmp.b #98,1(%a1)
	jbeq .L3
	cmp.b #98,2(%a1)
	jbne .L2
.L3:
	move.w #1,42(%sp)
.L2:
	clr.w %d6
	clr.w %d5
	clr.b (%a5)
.L4:
	addq.l #1,%a5
	move.b (%a0)+,%d0
	move.b %d0,(%a5)
	jbne .L4
	move.l 200.w,%a0
	move.l %a5,-(%sp)
	move.l 384(%a0),%a0
	jbsr (%a0)
	move.l %d0,%d4
	clr.w %d0
	swap %d0
	addq.l #4,%sp
	tst.w %d0
	jbeq .L7
	move.l 200.w,%a0
	move.l %d4,-(%sp)
	move.l 484(%a0),%a0
	jbsr (%a0)
	move.l %a0,%a2
	move.w 10(%a0),%d0
	and.w #-32232,%d0
	addq.l #4,%sp
	jbeq .L8
	move.l 200.w,%a0
	pea .LC0
	move.l %a6,-(%sp)
	move.l 2520(%a0),%a0
	jbsr (%a0)
	addq.l #8,%sp
	moveq.l #0,%d0
	cmp.w #0,%a0
	jbne .L1
.L8:
	move.w 12(%a2),%d5
	jbra .L9
	.even
.L7:
	moveq.l #0,%d0
	cmp.b #114,%d7
	jbeq .L1
.L9:
	move.l 200.w,%a0
	pea 20.w
	move.l 648(%a0),%a0
	jbsr (%a0)
	move.l %a0,%a3
	addq.l #4,%sp
	moveq.l #0,%d0
	cmp.w #0,%a0
	jbeq .L1
	cmp.b #114,%d7
	jbeq .L13
	cmp.b #97,%d7
	jbne .L12
.L13:
	moveq.l #1,%d6
	tst.w %d5
	jbeq .L14
	move.l 200.w,%a0
	move.w %d5,-(%sp)
	move.l 612(%a0),%a0
	jbsr (%a0)
	move.l %a0,%a4
	move.l 200.w,%a0
	move.w %d5,-(%sp)
	move.l 632(%a0),%a0
	jbsr (%a0)
	move.l %d0,14(%a3)
	addq.l #4,%sp
	jbra .L12
	.even
.L14:
	moveq.l #119,%d7
.L12:
	cmp.b #119,%d7
	jbne .L16
	moveq.l #2,%d6
	move.l 200.w,%a0
	lea (44,%sp),%a2
	move.l %a2,-(%sp)
	move.l 1664(%a0),%a0
	jbsr (%a0)
	move.l 200.w,%a0
	move.l %a5,-(%sp)
	move.l 368(%a0),%a0
	jbsr (%a0)
	move.l %d0,%d4
	clr.w %d0
	swap %d0
	addq.l #8,%sp
	tst.w %d0
	seq %d0
	move.b %d0,%d3
	ext.w %d3
	neg.w %d3
	move.l 200.w,%a0
	move.l %a2,-(%sp)
	move.l 1668(%a0),%a0
	jbsr (%a0)
	addq.l #4,%sp
	tst.w %d3
	jbne .L17
	move.l 200.w,%a0
	pea 128.w
	move.l 576(%a0),%a0
	jbsr (%a0)
	move.w %d0,%d5
	move.l 200.w,%a0
	move.l %d4,-(%sp)
	move.l 484(%a0),%a0
	jbsr (%a0)
	move.w %d5,12(%a0)
	addq.l #8,%sp
	seq %d0
	move.b %d0,%d3
	ext.w %d3
	neg.w %d3
.L17:
	move.l 200.w,%a0
	tst.w %d3
	jbeq .L18
	move.l %a5,-(%sp)
	move.l 376(%a0),%a0
	jbsr (%a0)
	move.l 200.w,%a0
	move.l %a3,-(%sp)
	move.l 652(%a0),%a0
	jbsr (%a0)
	moveq.l #0,%d0
	addq.l #8,%sp
	jbra .L1
	.even
.L18:
	move.l #128,14(%a3)
	move.w %d5,-(%sp)
	move.l 612(%a0),%a0
	jbsr (%a0)
	move.l %a0,%a4
	addq.l #2,%sp
	tst.w 42(%sp)
	jbeq .L19
	clr.w (%a0)
	jbra .L16
	.even
.L19:
	move.l #327681,(%a0)
	move.l #536928256,4(%a0)
.L16:
	clr.l %d0
	move.w (%a4),%d0
	add.l %a4,%d0
	tst.w 42(%sp)
	jbeq .L21
	addq.l #2,%d0
.L21:
	cmp.b #97,%d7
	jbne .L22
	moveq.l #2,%d6
	move.l %d0,%a0
	jbra .L23
	.even
.L22:
	lea (2,%a4),%a0
	tst.w 42(%sp)
	jbne .L23
	lea (5,%a4),%a0
.L23:
	cmp.l %d0,%a0
	jbne .L26
	or.w #32,%d6
.L26:
	cmp.b #43,1(%a6)
	jbeq .L28
	cmp.b #43,2(%a6)
	jbne .L27
.L28:
	or.w #3,%d6
.L27:
	tst.w 42(%sp)
	jbeq .L29
	or.w #64,%d6
.L29:
	move.w %d5,8(%a3)
	move.l %a4,4(%a3)
	move.w %d6,10(%a3)
	move.l %a0,(%a3)
	clr.w 12(%a3)
	move.w #128,18(%a3)
	move.l %a3,%d0
.L1:
	move.l %d0,%a0
	movm.l (%sp)+,#0x7cf8
	lea (76,%sp),%sp
	rts

(Je ne vais pas recopier les sources et la licence ici. Elles sont dans les sources de TIGCC.)
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é

4

J'espère que Thibaut ou quelqu'un du même type ne va pas faire partir ce topic en sucette...

[edit par Ximoon:]
"Il est interdit de lancer une polémique à propos du fait que la TIGCC Team avait refusé les routines de Thibaut.
[C'est ce qu'XDanger voulait dire].
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

5

--- post auto locked ---

6

lol

7

Pfff XDanger se permet de faire la propagande de ses pauvres idées, mais moi, il me l'interdit... Je t'aime de plus en plus calin

Tails : j'avais codé une fonction fopen plus petite (de 100 octets) que celle que Kevin t'as présentée. Je vais essayer de la retrouver smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

8

Tiens, j'ai carrément retrouvé toutes mes fonctions concernant les fichiers smile Y'a pas tout : j'ai aussi fprintf, fwrite, etc dans d'autres fichiers.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

9

faudrait pas initialiser a6 avant ?
genre move.l 200,a6, pour qu'il pointe vers la jump table ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

10

>fopen:
>; Code original de Thibaut B
>; Debogue par Kevin Kofler

Tiens, je ne me rappelais même plus d'avoir corrigé des bogues là-dedans. smile
Mais un bogue grave reste toujours: ces fonctions ne marchent pas avec un nom de fichier en ROM (archive ou autre)! On n'a pas le droit de modifier la chaîne passée, et encore moins de modifier l'octet qui se trouve devant. Et il faut modifier pas mal de trucs pour corriger ça. C'est pour ça que les routines ont été refusées.
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é

11

Merci beaucoup Thibault et Kevin.
Et Kevin, où sont les sources de fputc de tigcc stp Dans celles que j'ai téléchargé, elle n'y est pas
Le gentil timide du 64

12

Dans le répertoire archive des sources.
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é

13

J'ai aussi cette fonction dans la lib Azur si tu veux (si tu prends les sources de TIGCC, tu auras des modifs à faire).

Kevin : ouai. Mais si Tails fait gaffe à cette limitation et qu'il garde la routine pour lui, y'a pas de problème wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

14

Thibaut> je t'avais donné une méthode pour éviter le pb du nom de fichier en ROM qui prend vraiment pas bcp de place...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

j'aiv regardé les ".s", mais ils ne sont pas tout à fait compatibles avec AS() (par exemple le "lea -72(sp),sp" das fopen, pourquoi 72?, les registres Dn déhja initialises)

Thibault, tu peux me passer tes fonctions de ta librairie azur stp ?
Le gentil timide du 64

16

Tails
: j'aiv regardé les ".s", mais ils ne sont pas tout à fait compatibles avec AS() (par exemple le "lea -72(sp),sp" das fopen, pourquoi 72?, les registres Dn déhja initialises)

* Parce que c'est 72. smile
* sp = a7
* "les registres Dn déhja [sic] initialises [sic]" ???
* Si c'est ça qui pose problème:
movm.l #0x1f3e,-(%sp)
movm.l (%sp)+,#0x7cf8
alors je peux te dire que ça correspond à:
movem.l %d3-%d7/%a2-%a6,-(%a7)
movem.l (%a7)+,%d3-%d7/%a2-%a6
Tu peux aussi mettre l'opcode entier en hexa:
dc.l $48e71f3e
dc.l $4cdf7cf8

Thibault, tu peux me passer tes fonctions de ta librairie azur stp ?

Cf. message n°7.
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é

17

Oui mais THibault m'a dit qu'il en a d'autres
Le gentil timide du 64

18

fopen : "move.l a1,a6"
--> d'ou vient la valeur de a1 ?

"72"
--> le movem+les parametres ne font pas tout ca
Le gentil timide du 64

19

Kevin Kofler :
alors je peux te dire que ça correspond à:
movem.l %d3-%d7/%a2-%a6,-(%a7)
movem.l (%a7)+,%d3-%d7/%a2-%a6
Oui, enfin, si tu assembles avec AS, tu devras enlever les '%'

20

Tails :
fopen : "move.l a1,a6" --> d'ou vient la valeur de a1 ?

Passage par registres. filename en a0, mode en a1.
Tu peux aussi mettre le:
 move.l  4(a7),a0
 move.l  8(a7),a1

de Thibaut si ça t'amuse.
"72" --> le movem+les parametres ne font pas tout ca

Il y a aussi les variables locales.
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

Quelles vazriables locales ?
Le gentil timide du 64

22

Bah il utilise la pile pour stocker des trucs. On appell ça des variables locales parce qu'e C, quand tu utilises des var locales, elles sont mises sur la pile

23

Et cette routine est d'ailleurs écrite en C (cf. sources de TIGCCLIB). C'est pour ça que l'assembleur est illisible par morceaux (movem en hexa).
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é

24

Kevin Kofler :
Tu peux aussi mettre le:
 move.l  4(a7),a0
 move.l  8(a7),a1
de Thibaut si ça t'amuse.

Il n'aura pas besoin de le faire puisqu'il demande mes routines. Peut-être parcequ'elles sont plus rapides et plus petites grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

25

JS : j'ai énormément de fonctions. La lib azur comporte plein d'headers. Y'a des headers pour le graphisme (c'était la toute première version de GX), le clavier, les timers événementiels (qui sont intégrés à la dernière version de GX), les fichiers, les maths, etc. Qu'est-ce qui t'intéresse (je te ferai un zip) ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

26

Thibaut > les fichiers et le graphisme stp
> Que veut dire l'op code seq ? (Il figure dans le fichier .a de fopen)
Le gentil timide du 64

27

regarde dans une doc à :
SCC

28

SEQ est l'une des instructions Sxx (pafois appelées Scc également, SCC existe, c'est pour ça que je préfère les appeler Sxx).
"SET <ea> if [condition is true]".
C'est décrit comme: "si xx est vraie alors 0xFF -> destination sinon 0x00 -> destination" dans ma doc et dans toute doc d'un 68k, fait par Motorola ou un autre fondeur.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

29

30

XDanger : je pense pas que ça soit une bonne idée de trop détailler un truc qui se trouve aussi facilement dans une documentation wink
ça donne de mauvaises habitudes smile