1

Hi tlm,

je voudrais executer un petit programme après la trap 4. Comme je m'emmele les pinceaux entre a7, usp et autres, vous auriez un chtit exemple svp?
Cours et tutos Asm: http://membres.lycos.fr/sirryl

2

tu detourne le trap 4 vers ta routine

ta routine:
 goto old trap 4
 ta routine {
 [...]
 }
 rte




enfin je dis ça à froid, comme ça.. c pitet pas bon..
apres je vois pas trop le pb ac a7 et tout et tout confus
rmq g jamais essayé.. ;-)
[edit]Edité par Pen^2 le 06-03-2002 à 12:36:37[/edit]

3

Apres ? Registres ? Mais non grin

NewTrap4
move.l OldTrap4,$VectorTrap4
trap #4
move.l #NewTrap4,$VectorTrap4
rte

vilou. Presque comme PenPen l'a dit, mais sans le probleme du sr pushe.

4

Et donc il n'y a aucun problème de usp ou autre? C bizarre... Bon je vais essayer
Cours et tutos Asm: http://membres.lycos.fr/sirryl

5

Je ne penses pas. Quels problemes pourraient-ils y avoir ?

6

[edit]-- censuré pour cause de dires honteux --[/edit]
[edit]Edité par Thibaut le 06-03-2002 à 17:51:55[/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.

7

Revises ton assembleur mon Thibaut.

8

grin

c'est pas tous les jours que je code des TSRs 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.

9

Bah une trap dans une trap ca me semble bizarre, c tout...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

10

triso
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.

11

Tout à fait! ou alors doom
Cours et tutos Asm: http://membres.lycos.fr/sirryl

12

Je le fais tout le temps dans mes TSR smile

13

beurk #vomis#
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

Mais non. Tu n'as aucun gout.

15

"Azur power !!!!!!! love"

Tu vois que j'ai beaucoup de goût 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.

16

Autre solution:
 pea.l return_address(PC)
 move.w SR,-(a7)
 move.l $90,-(a7)
 rts
return_address:

[edit]Edité par Kevin Kofler le 06-03-2002 à 18:25:31[/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é

17

OK, pas mal...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

18

mouais, mais alors là faut que je fasse un rte à la fin de mon prog, ok je vais tester
Cours et tutos Asm: http://membres.lycos.fr/sirryl

19

J'ai un autre petit pb, assez bizarre (j'aime ce qui est bizarre!)

Je copie tranquillement mon tsr en mémoire (heapallochigh) mais les premieres instruction sont remplacées par des ori, et ca j'aime pas, et vti non plus!

Si qqn avait la sol.

Voici le listing:

	move.l		Trap4Address,OldTrap
	move.l		#EndNewTrap-NewTrap,d6
	move.l		d6,-(a7)
	ROM_CALL	HeapAllocHigh
	move.w		d0,(a7)
	ROM_CALL	HeapDeref
	addq.l		#4,a7
	add.l		#$40000,a0 ;faut-il le mettre ou non, m'en fous j'ai une hwd1
	move.l		a0,a5

	lea		NewTrap(pc),a1
	subq.l		#1,d6
loop_copy_tsr:
	move.b		(a1)+,(a0)+
	dbf		d6,loop_copy_tsr

	bclr.b		#2,$600001
	move.l		a5,Trap4Address
	bset		#2,$600001
Cours et tutos Asm: http://membres.lycos.fr/sirryl

20

Au fait, mon code prend 2 fois moins de place que celui de PpHd (12 octets au lieu de 24).

Code de PpHd:

>move.l OldTrap4,$VectorTrap4
(Je vais être gentil et compter OldTrap4(PC) plutôt que OldTrap4.)

2 octets move.l word(PC),$long
2 octets OldTrap4(PC)
4 octets $40090

>trap #4

2 octets

>move.l #NewTrap4,$VectorTrap4

2 octets move.l #long,$long
4 octets #NewTrap4
4 octets relogement de #NewTrap4
4 octets $40090

Total: 24 octets

Mon code:

> pea.l return_address(PC)

2 octets pea.l word(PC)
2 octets return_address(PC)

> move.w SR,-(a7)

2 octets

> move.l $90,-(a7)

2 octets move.l $word,-(a7)
2 octets ($90).w

> rts

2 octets

Total: 12 octets
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

>Paxal: Je copie tranquillement mon tsr en mémoire (heapallochigh) mais les premieres instruction sont remplacées par des ori, et ca j'aime pas, et vti non plus!

Y a-t-il des trucs du genre ancien trap 4 devant le début du code? Si oui, avant move.l a5,Trap4Address, il faut un lea.l NewTrapCode-NewTrap(a5),a5.
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é

22

T parti en live là, g rien capté...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

23

Oups, je viens de me rendre compte que ma solution pour appeler l'ancien trap était fausse. sad
Voilà le code corrigé:
 pea.l return_address(PC)
 move.w SR,-(a7)
 move.l OldTrap4(PC),-(a7)
 rts
return_address:

Et ça prend toujours 12 octets comme avant (et pas 24 comme la solution de PpHd).

>Paxal: T parti en live là, g rien capté...

confus
Je pensais que le message n° 21 était clair...

Un exemple concret: si tu as un truc du genre:
NewTrap:
OldTrap4 dc.l 0
 pea.l return_address(PC) 
 ...

il faut un addq.l #4,a5 avant move.l a5,Trap4Address, pour sauter OldTrap4.
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

1. J'avais bien corrigé ton erreur, mais je pensais que tu t'étais pas trompé et que tu avais écrit ce que tu voulais. La prochaine fois je ferait gaffe wink
2. J'ai pas de dc.l ou autres avant, en revanche mes premières instruction sont éffacées. Allez comprendre...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

25

C'est koi de l'optimisation pour vous ?
la taille d'un algo ou le nb de cycles d'horloge que prend l'algo ?
T3 member
TimeToTeam : A new generation of games for TI

26

Là c plutot la taille parce que c pour détourner le OFF, mais pour 50 octets je m'en tape!
Cours et tutos Asm: http://membres.lycos.fr/sirryl

27

Oui Kevin, tu as raison embarrassed
Paxal;, est-ce que tu as des relgoements dans ton trap ?

28

Non, que des Truc(pc)
Cours et tutos Asm: http://membres.lycos.fr/sirryl

29

Il faudrait que tu en donnes plus.

30

	include "Os.h"
	xdef	_nostub
	xdef	_ti89
	xdef	_ti92plus
	xdef	_main

STR_TAG	equ	$2D
Trap4Address	equ	$90


_main:
	movem.l	d0-d7/a0-a6,-(a7)
	ROM_CALL2 	top_estack
	move.l		(a4),a0
;On regarde si l'argument est un chaine de caractère
	cmp.b		#STR_TAG,(a0)
	bne		bad_arg_error
	subq.l		#2,a0
loop_search_start:
	tst.b		-(a0)
	bne		loop_search_start

	lea		Text(pc),a1
	addq.l		#1,a0
loop_copy_text:
	move.b		(a0)+,(a1)+
	bne		loop_copy_text

	move.l		Trap4Address,OldTrap
	move.l		#EndNewTrap-NewTrap,d6
	move.l		d6,-(a7)
	ROM_CALL	HeapAllocHigh
	move.w		d0,(a7)
	ROM_CALL	HeapDeref
	addq.l		#4,a7
	add.l		#$40000,a0
	move.l		a0,a5

	lea		NewTrap(pc),a1
	subq.l		#1,d6
loop_copy_tsr:
	move.b		(a1)+,(a0)+
	dbf		d6,loop_copy_tsr

	bclr.b		#2,$600001
	move.l		a5,Trap4Address
	bset		#2,$600001

	pea		Success(pc)
	bra		affmsg

bad_arg_error:
	pea		BadArgError(pc)
affmsg	ROM_CALL	ST_helpMsg
	addq.l		#4,a7

	movem.l	(a7)+,a0-a6/d0-d7
	rts

BadArgError	dc.b	"Erreur: mauvais argument",0
Success	dc.b	"Programme installé avec succès",0

NewTrap:
	;On va à l'ancienne trap		;a7 : SR / Address Prog Appel
	pea.l		return_address(PC) 
	move.w		SR,-(a7) 
	move.l		OldTrap(pc),-(a7) 
	rts
return_address:

Suite	;On sauve les registres		;a7 : SR / Address Prog Appel
	addq.l		#2,a7			;a7 : Address Prog Appel
	movem.l	a0-a6/d0-d7,-(a7)	;a7 : Registres / Adress Prog Appel

	pea		Text(pc)
	ROM_CALL	push_parse_text
;Text transformé
	ROM_CALL2	top_estack
	move.l		(a4),(a7)
	ROM_CALL	NG_rationalESI
;Execution
	addq.l		#4,a7
	movem.l	(a7)+,a0-a6/d0-d7
	rts

OldTrap	dc.l	0
Text		dcb.b	256,0
EndNewTrap
	end


C mieux là?
Cours et tutos Asm: http://membres.lycos.fr/sirryl