1

Ca peut avoir l'air con (bon d'accord: ça l'est) mais... je sais pas afficher le contenu d'un registre autrement qu'en faisant 300000 tests. -_- Vous kavez de l'expèrience, pourriez pas me dire comment kon fait?
J'en rajoute: j'aimerais bien une méthode Nostub et une optimisée DoorsOs (si ça existe).

Rien qu'une fonction qui donerais le caractère associé à un code m'aiderait. Je crois avoir vu un truc comme ça dans doorsos.h; mais je sais pas m'en servir. D'où ma question suivante: y'a pas une doc sur les roms calls? (y'en a une mais où (Google donne pas grand chose)).
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

2

Pour la doc des rom calls prend celle de Tigcc
pour afficher le contenu d'un registre tu peux utiliser sprintf puis DrawStr
(ou bien la librairie hexlib)
Fiou.

3

Euh.. sprintf?
C'est pas une commande du C ça? Paske moi j'essaie d'apprendre l'assembleur (j'ai essayé le C mais je le trouve plus difficile).
J'ai donc essayé d'extraire ce dont j'avait besoinde string.h ; bein j'ai pas réussi:
Je croit avoir compris: rom call N°53, y faut empiler un pointeur vers l'adresse dans laquelle on mettras la string, puis le chiffre mais... j'sais pas apeller une fonction de la rom par son numèro -_- (j'ai commencé à apprendre hier soir).

Pour ce qui est de hexlib... déjà faut une librairie supplèmentaire. Et pis je l'ai regardée, j'ai cru comprendre qu'elle se contentait d'afficher un sprite correspondant au nombre... doit y'avoir mieux (vu que j'apprends, faut que je prenne maintenant les bonnes habitudes).

Par contre la doc sur les roms calls incluse dans Tigcc me rendra service en attendant que je trouve mieux (elle est plutôt orienté programmeurs C).

Merci beaucoup de m'avoir répondu.
Brice
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

4

sprintf est un rom call de AMS (le 53 effectivement).

va voir le tuto de Kevin Kofler pour apprendre a utiliser les rom calls en assembleur :
http://www.ti-fr.org/prog/index.php3?do=asm/tuto/asm1
Fiou.

5

LAISSE TOMBER DOORSOS!!!
put1 kan c'est que les sites mettront ça a jour? roll

DOORSOS EST DEPASSE !!!!!!!!!!!!!!
utilise PreOs (http://www.timetoteam.fr.st)
ou Unios (www.ti-fr.otg rubrique archive)

mais prends PreOs! c'est le mieux
sinon pour afficher le contenu d'un registre, c'est comme pour afficher un nombre, tu divise le reg par 10, tu récupère le reste (entre 0 et 9) tu y ajoutes 48, t'as le code du caractère, tu l'enregistre dans une chaine en mem, tu passe au char suivant, jusqu'à ce que le nombre =0, et ensuite t'affiche la chaine.
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

6


A sBibi:
J'disais "DoorsOS" pour "DorsOs comatible". J'utilise UniveralOS depuis des millénaires (depuis la version 1.1x je croit).
Preos à l'air très prometeur, mais sa mauvaise habitude de bugger quand je lance PCT par shift-on avec l'éditeur de programmes en Ti-Basic ouvert m'a découragée (c'etait le seul langage que je connaissais il y a peu).
Merci beaucoup pour la méthode d'affichage (elle à l'air impec celle là).

A Tachman:
J'vais regarder cette doc: j'essaierais d'uiliser le nostub, quand ça augmenteras pas trop la taille de mes programmes (là c'est le cas).
Je te remercie à nouveau donc ^_^.
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

7

>sBibi: sinon pour afficher le contenu d'un registre, c'est comme pour afficher un nombre, tu divise le reg par 10, tu récupère le reste (entre 0 et 9) tu y ajoutes 48, t'as le code du caractère, tu l'enregistre dans une chaine en mem, tu passe au char suivant, jusqu'à ce que le nombre =0, et ensuite t'affiche la chaine.

Ne lui donne pas de mauvaises idées. sprintf est fait pour ça. Ce n'est pas une bonne idée de reprogrammer les ROM_CALLs.

Sinon, la version la plus récente de mon tutorial est là:
http://ti89prog.kevinkofler.cjb.net/asmnstbf.htm
(Ça fait des lustres que j'ai dit à nEUrOne de le mettre à jour sur Ti-Fr, mais il y avait toujours des problèmes de FTP.)
[edit]Edité par Kevin Kofler le 07-04-2002 à 17:29:33[/edit]
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é

8

Kevin>> Ne lui donne pas de mauvaises idées. sprintf est fait pour ça. Ce n'est pas une bonne idée de reprogrammer les ROM_CALLs.

Admet que c'est cool de reprogrammer certaine ROM_CALL wink
BURNING FIRE !
SiTe eN PrEpArAtIoN

9

Admet que c'est cool de reprogrammer certaine ROM_CALL > pas quand on a appris l'asm la veille wink
Fiou.

10

Donc: je convertis en utilisant une rom_call, et je verrais la suite demain -_^.
En tout cas, c'est sympa de répondre aussi vite quand quelqu'un a un problème top.
J'éspères que j'aurais un jour le courage (et les moyens) d'écrire quelque chose "d'utile" (rien que le mot me fait peur), histoire de vous remercier ^_^.
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

11

>Preos à l'air très prometeur, mais sa mauvaise habitude de bugger quand je lance PCT par shift-on avec l'éditeur de programmes en Ti-Basic ouvert m'a découragée (c'etait le seul langage que je connaissais il y a peu).


mad Et on peut pas me prevenir pour que je corrige ce bug.
Bon je vais voir ca.

12

>Preos à l'air très prometeur, mais sa mauvaise habitude de bugger quand je lance PCT par shift-on avec l'éditeur de programmes en Ti-Basic ouvert m'a découragée (c'etait le seul langage que je connaissais il y a peu).

Et on peut pas me prevenir pour que je corrige ce bug.
Bon je vais voir ca.


Oups -_-.
J'l'avait déjà vu signalé, alors je me suis dit que tu le savais.
Je cherche d'autre bugs, et je te mail mon "rapport" ^_^.
A tout de suite;
Brice
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

13

>j'aimerais bien une méthode Nostub et une optimisée DoorsOs (si ça existe)
Le GNU C se moque de nostub/kernel...

Ceci marche (si c'est d0 que tu veux afficher, bien entendu):
unsigned long val;

asm("move.l %d0,%0":"=d"(val));
ClrScr();
printf_xy(0,0,"0x%08lX",val);
GKeyIn(NULL,0);

C'est ce que disait du reste TachMan: printf_xy utilise sprintf et DrawStr...
Désassemble mon code dans VTI...


Au fait, quelqu'un pourrait-il m'expliquer pourquoi ce code est assemblé comme:
move.l d0,d0 <-- pourquoi cette ligne totalement inutile ??
move.l d0,-(sp)
...
Peut-être que j'ai mal écrit un truc, car c'est la première fois que j'utilise cette extension GNU, dans un 'programme' que je fais tout seul. J'ai 'pompé' dans ExtGraph et tthdex pour faire ça...

'Homines, dum docent, discunt' comme dit Sénèque...


[edit]Edité par XDanger le 08-04-2002 à 13:51:38[/edit]
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

14

C'est pas le SHIFT+On, c'etait le hot-reset dans les programmes basic.
D'ailleurs je peux rien y faire.

15

C'est pas le SHIFT+On, c'etait le hot-reset dans les programmes basic.
D'ailleurs je peux rien y faire.


Si c'est à moi que tu réponds, je peut te certifier que:
1-Shift+On fait planter l'éditeur de programmes ou de textes quand je suis en cours d'édition.
2-Ce bug et d'autres ne surviennent pas avec UniOs (c'est pour ça que je le garde).

Une méthode pour résoudre le problème serait peut-être de simplement fermer la fenêtre d'édition et de la rouvrir après? C'est pas propre, mais j'essaierais de le faire quand je m'en serait sortit avec cette saleté de registre (DrawStrXY m'affiche n'importe quoi puis, pour finir, une ligne qui défile et un plantage)
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

16

-

17

grin
tu fait un tableau et c bon
avec un ds.x
et voilivoilou
En préretraitre

18

>Orion: Matrice ds.w 15x15
autre chose ?

>Brice: Merci. je vais pouvoir ca de plus pres.

19

pphd: la tu fait un cas particulier comme matrice
orion:
tu peut faire des ds.x avec x=b,w ou l
et apres tu met la taille de ton tableau
En préretraitre

20

de toutes façons tous les langages compilés sont traduits en asm, donc en asm tout est possible ;p

21

Mes sources. A adapter un poil.
; Convertit une chaine en un nombre
; In:
;	a0 -> chaine (NULL)
; Out:
;	d0.l = Nombre
; Destroy:
;	d0-d1/a0
strtonbr:
	moveq	#0,d0
loop		moveq	#0,d1
		move.b	(a0)+,d1
		beq.s	end
		sub.b	#'0',d1
		mulu.w	#10,d0
		add.l	d1,d0
		bra.s	loop
end:	rts

; Put the number d2.l at coordinates ( d3.w = X, d4.w = Y) with (d1).w digits
; on genlib::window
; In:
;	d3.W = X
;	d4.w = Y
;	d1.w = Number of digits
; Out :
;	nothing
; Destroy :
;	nothing
put_number:
Putnumber:
PutNumber:
Put_number:
	movem.l d0-d2/a0-a1,-(a7)

	lea	(Free_buffer+100)(a6),a0	; Load tempory storage string adress
	clr.b	(a0)		; for DrawStrXY
Rep1:
		divu	#10,d2		; d3 / 10
		swap	d2		; Work on the rest
		addi.b	#'0',d2		; Add 48 to the rest of the division
		move.b	d2,-(a0)	; Save the rest
		subq.w	#1,d1		
		beq.s	CSDone		; to avoid a crash if the number has too many digits
		clr.w	d2		; Clear the rest
		swap	d2		; New number D2.l = Int(D2.l / 10)
		bne.s	Rep1		; No need of 'tst' because 'swap' does it

	tst.w  d1
	beq.s	CSDone	
		subq.w	#1,d1			; For dbf
Rep2:			move.b #'0',-(a0)	; Complete par des 0 (si on veut des espaces : ' ')
			dbra.s	d1,Rep2
CSDone:
	; Here X=d3, Y=d4 and A0 -> String
	move.w	d3,d0
	move.l	d4,d1
	move.l	genlib::window,a1		; Or ?
	jsr	genlib::put_large_string	; Or ?
Stat1:
	movem.l (a7)+,d0-d2/a0-a1
	rts

22

Bouh, personne ne répond à ma question...

PpHd: pourrais-tu poster une version sans GenLib, s'il te plaît ?
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

23

PpHd : beurk c'est pas très optimisé puke.gif
XDanger : parceque la valeur était déjà stockée dans d0 par GCC, donc voilà quoi wink Mais il ne faut pas pour autant que tu supprimes la première ligne car GCC pourrait très bien stocker la valeur ailleurs attention
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.

24

Thibaut: Propose mieux alors. Moi ca me suffit.

25

La fonction strtonbr de la bibliothèque Azur, par exemple tongue
atol:
 moveq   #0,d0
 moveq   #0,d1
 move.l  4(a7),a0
atol_recursion:
 move.b  (a0)+,d1
 beq.s   atol_fin
 cmp.b   #'-',d1
 beq.s   atol_neg
 cmp.b   #173,d1     ; (-)
 beq.s   atol_neg
atol_conv:
 sub.b   #'0',d1     ; +-------------
 cmp.b   #9,d1       ; |
 bhi.s   atol_fin    ; |
 add.l   d0,d0       ; |
 move.l  d0,d2       ; | La conversion se fait vraiment ici
 lsl.l   #2,d0       ; |
 add.l   d2,d0       ; |
 add.l   d1,d0       ; |
 move.b  (a0)+,d1    ; |
 bne.s   atol_conv   ; +-------------
atol_fin:
 rts

[edit]Edité par Thibaut le 09-04-2002 à 12:32:23[/edit]
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

Moi, je propose:

- convertir une chaîne de caractères en un nombre:
 pea.l chaine(PC)
 bsr atol
 addq.l #4,a7
 move.l d0,nombre

(à linker avec tigcc.a, ce qui sera fait automatiquement si tu assembles en utilisant TIGCC.)

- convertir un nombre en une chaîne de caractères:
 move.l $c8,a5
;...
 move.l nombre(PC),-(a7)
 pea.l format(PC)
 pea.l buffer(PC)
 move.l sprintf*4(a5),a0
 jsr (a0)
 lea.l 12(a7),a7
;...
format: dc.b '%ld',0
buffer: ds.b 12



Pourquoi propose-je cela? Tout simplement parce qu'il suffit d'avoir lu la documentation de TIGCC pour savoir faire, il ne faut pas être un expert en assembleur. D'ailleurs, si j'avais moi-même besoin de ces routines, je ferais comme ça. Pourquoi se fatiguer à réinventer la roue?
[edit]Edité par Kevin Kofler le 09-04-2002 à 12:41:16[/edit]
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é

27

>Thibaut: Tout ca pour un mulu #10 smile
>Kevin: Ton opinion est tout a fait defendable.

28

PpHd : oui mais au moins c'est hyper rapide tongue Parceque comme Azur optimise mal, il faut que je compense la vitesse où je le peux : dans les fonctions de la bibliothèque.

Et puis y'a pas que le mulu #10,dn d'optimisé !

[14]; === PpHd ===[/14]
loop:
        ...
        move.b  (a0)+,d1
        [b]beq.s   end[/b]
        ...
        [b]bra.s   loop[/b]
end:
        rts

[14]; === Thibaut ===[/14]
atol_conv:
        ...
        move.b  (a0)+,d1
        [b]bne.s   atol_conv[/b]
        rts

Sans compter le moveq #0,d1 que tu exécutes à chaque itération... grin

Tu me déçois puke.gif wink
[edit]Edité par Thibaut le 09-04-2002 à 13:55:22[/edit]
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.

29

C'est toi qui me decoit. Tu ne vois pas ou optimiser.

30

?????????????????????????????
Attend, j'ai :
- une instruction de branchement contre deux pour toi,
- un moveq avant la boucle contre <nombre de chiffres> moveq pour toi.

Alors il faut que tu m'expliques comment ta routine peut être plus rapide fou
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.