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

31

Vire cette ligne : addq.l#2,a7;a7 : Address Prog Appel (le rts juste avant s'en charge), et met un rte à la place du rts final du TSR.

32

Comme Extended. PAs mieux.

33

Ca change rien au fait que les premieres lignes de codes sont ecrasées...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

34

Bon je sais pas comment j suis arrivé mais ca marche.
Au fait, le prog c une execution d'instruction utilisateur à chaque allumage de la TI, mais bon vous l'aviez tous vu!
Cours et tutos Asm: http://membres.lycos.fr/sirryl