1

; copie des donnés de l'ancien fichier dans le nouveau dbf d0,LoopRemplissageFichier (...)
Tout à l'heure j'essayais ce nouveau code pour la récupération de fichiers (dans Flash Savior).; *****************************************************************
; ***              Récupération d'un fichier  :-)               ***
; *****************************************************************
; *** Nécessite 2 paramètres :
; *** a5 = pointeur sur le nom du folder où se situait le fichier
; *** a6 = pointeur sur le nom du fichier en VAT virtuelle
; *****************************************************************
recuperation:
	movem.l		d0-a6,-(a7)			; on sauve les registres

	NouveauFichier	(a5),(a6),a4			; on re-crée la variable invisible
	move.l		12(a6),a3			; a3 pointe sur la variable blagueuse
	move.w		(a3),-(a7)			; empilage de la taille du fichier
	clr.w		-(a7)				; c'est sur 4 octets, donc on complète avec des 0
	move.w		12(a4),-(a7)			; empilage du handle du fichier
	jsr		doorsos::HeapRealloc		; notre fichier de 0 octet prend la taille du fichier disparu
	move.w		d0,12(a4)			; mise à jour de la VAT, le handle a peut-être changé
	addq.l		#6,a7				; restauration du pointeur de pile

	DEREF		d0,a5				; a5 pointe sur le nouveau fichier vide
	addq.l		#2,a5				; a5 pointe sur le segment de donnés
	move.w		(a3)+,d0			; d0.w = taille du segment de donnés
	subq.w		#1,d0				; -1 pour dbf
LoopRemplissageFichier:
	move.b		(a3)+,(a5)+			

Tout à l'air correct et pourtant...
screen.bmp



Trois questions sont la raison d'être de ce topic :
* Y'en a beaucoup, des erreurs inédites comme celle-ci ?
* Il signifie quoi ce message ?
* Et la plus importante, KeçKiBeugue dans mon code rage ?
Merci.
[edit]Edité par Thibaut le 21-06-2001 à 17:35:05[/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.

2

Ce qui bug je ne sais pas, mais il semblerait que lorsque UniOS est installé, certain message d'erreur comme celui là apparaisse. Mais bon, ça demande confirmation.
Site en décomposition :( www.graphiti.fr.fm

3

génial ce msg !!!
je veux le mm !!!
avatar
納 豆パワー!
I becamed a natto!!!1!one!

4

y'en a pas bcp d'autres des messages comme ca, mais tu peux tous les voir en éditant la rom à l'éditeur hexa, il sont tous réunis.

5

Je pense que le programme à généré un erreur aléatoire de l'OS, et c tombé sur celle ci...

6

Oui, c'est probablement un Line 1010 Emulator appelé par erreur (exécution de donné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é

7

ca résoud pas son pb

8

Je savais pas qu'on pouvais faire:movem.l d0-a6,-(a7) ... (j'aurais fait d0-d7/a0-a6)

9

Ca serait cool si t'explicitais ce que fais NouveauFichier

10

Ha le Maître arrive pour m'aider smile
C'est une macro qui prend pour paramètres le nom du folder où créer le fichier puis le nom du fichier. Dans le dernier paramètre est renvoyé l'adresse de l'entrée en VAT du fichier.

Vous pouvez m'expliquer ce qu'est un Line 1010 emulator et le rapport avec des objets confus
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

>Thibaut: Vous pouvez m'expliquer ce qu'est un Line 1010 emulator et le rapport avec des objets confus

Le Line 1010 emulator, également appelé exception ER_throw, est une exception appelée par les instructions dc.w $a000 à dc.w $afff. AMS s'en sert pour les messages d'erreur, donc si tu exécutes des données qui contiennent un mot (2 octets) de cette série ($a000-$afff), tu peux avoir toute sorte d'erreurs bizarres.
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é

12

donc pour générer un message d'erreur avec le TIOS, il faut faire écrire le numéro de l'erreur à un endroit puis y faire un saut confus
C'est quoi l'avantage de cette méthode barbare ?
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.

13

A quoi servent OO_GetAttr / OO_SetAttr ?
J'utilise pas ça moi !?
Et n'oubliez pas : donc pour générer un message d'erreur avec le TIOS, il faut faire écrire le numéro de l'erreur à un endroit puis y faire un saut
C'est quoi l'avantage de cette méthode barbare ?
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

Si je pige bien, la barre noire avec Line 1010 emulator n'existe plus sous 2.05.
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.

15

>[Pollux]: non, c'est un Line 1111 Emulator (et pas Line 1010) : c'est la gestion des OO_Get/SetAttr et des ROM_CALLs sur ROMs 2.0x

C'est possible.

>En revanche Line 1111 Emulator ne peut effectivement plus jamais arriver en barre noire sous AMS >=2.04

Faux. Ça peut arriver si le ROM call à appeler n'existe pas, ou pour $f000 à $f7ff, le premier ROM call possible étant $f800.
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é

16

>> si le PC passe à un endroit avec (PC)=$F123, le proc va lancer l'exception Line 1111 Emulator, et le tios va l'interpréter comme (par exemple) OO_GetAttr(0x300,0xB600); comme les paramètres sont invalides, il va dire "not found" et va mettre une erreur...

Ca veut dire que dans mon code je saute à un moment à une adresse contenant $F123 ?
Où ça sad ??
[edit]Edité par Thibaut le 22-06-2001 à 15:34:10[/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.

17

Thibault> verife si tu restaure bien la pile ... dans le cas contraire, tu te retrouve n'importe ou au premier rts ...

Et essaye aussi plusieurs fois de refaire cette erreur, pour voir si c'est toujours la meme, ou si elle change ... (ca peut donner des indications pour trouver ouest l'erreur)

18

hehe, vous remarquerez que les credits sont quand meme ecrits smile
c interessant tout ce que vs racontez. g failli le rater.

19

Oui, le problème doit être après l'affichage des noms. Je confirme que c'est probablement un problème de pile non restaurée avant de quitter par le dernier rts. Je te conseille de compter le nombre d'octets sur la pile, par exemple:
 movem.l d0-a6,-(a7) ;d0-d7: 8 registres
                     ;a0-a6: 7 registres
                     ;total: 15 registres
                     ;-15*4
                     ;-60
 move.w (a3),-(a7) ;-60-2
                   ;-62
 clr.w -(a7) ;-62-2
             ;-64
 move.w 12(a4),-(a7) ;-64-2
                     ;-66
 addq.l #6,a7 ;-66+6
              ;-60

(Moi, je fais toujours ça mentalement quand je vérifie mes comptes sur la pile.)
[edit]Edité par Kevin Kofler le 23-06-2001 à 14:27:43[/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é

20

bah a la base si y a l'affichage des noms je vois pas ce ke ca peut etre d'autre....

21

ben la home screen entry est modifiée par le programme. "a la base", il y a le nom du programme.

22

Vous voyez bien sur la routine que la pile est très bien gérée.
De toutes façon j'ai réussi à faire ma routine d'une autre manière, donc la résolution de ce bug n'est plus importante pour moi.
Mais ça reste intéressant, donc cherchons l'erreur smile

***************************************
(la nouvelle fonction pour les curieux:; *****************************************************************
; ***              Récupération d'un fichier  :))               ***
; *****************************************************************
; *** Nécessite 2 paramètres :
; *** a5 = pointeur sur le nom du folder où se situait le fichier
; *** a6 = pointeur sur le nom du fichier en VAT virtuelle
; *****************************************************************
recuperation:
	movem.l		d0-a6,-(a7)			; on sauve les registres

	lea		(a5),a0				; a0 pointe sur le nom du folder où était la var
	bsr		Chercher_Folder			; teste l'existence du folder qui contenait le fichier
	tst.w		d7				; déjà là ?
	bne.s		ContinuerRecup			; alors on continue
	jsr		filelib::createfolder		; sinon on le recrée
	bsr		Chercher_Folder			; on va chercher le handle de ce folder
ContinuerRecup:
	move.w		d7,d3				; d3.w = handle du folder de l'ancienne variable

	lea		Folder_Tempo(pc),a0		; a0 pointe sur le nom du dossier temporaire dans lequel la variable va être récupérée
	NouveauFichier	(a0),(a6),a4			; on re-crée la variable invisible
	move.w		12(a4),d2			; d2.w = handle du nouveau fichier

	jsr		filelib::hdltoindex		; recherche de son index dans le dossier

	lsl.w		#2,d2				; d2.w = adresse relative du handle de la nouvelle var
        move.l		doorsos::Heap,a1		; a1 pointe sur la table des handles
	move.l		12(a6),0(a1,d2.w)		; au handle du nouveau fichier correspond l'adresse de l'ancien

	lea		Folder_Tempo(pc),a0		; a0 pointe sur le nom du dossier temporaire dans lequel la variable a été récupérée
	bsr		Chercher_Folder			; recherche du handle du folder temporaire
	move.w		d7,d0				; d0.w = handle du folder temporaire
	move.w		d3,d2				; d2.w = handle du folder de l'ancienne variable

	jsr		filelib::move			; déplacement du fichier restauré dans son folder d'origine
	move.w		d0,d2				; d2.w = handle du folder temporaire
	jsr		filelib::hdltoindex		; recherche de l'index de ce folder dans la FAT
	jsr		filelib::delete			; effacement du dossier temporaire

	lea		(a5),a0				; a0 pointe sur le nom du folder de la var restaurée
	lea		(a6),a1				; a1 pointe sur le nom de la var elle-même
	bsr		Tester_Exist			; recherche de l'adresse de son entrée en VAT
	lea		(a6),a4				; a4 pointe sur l'entrée en VAT de la variable restaurée

	move.w		Nombre_de_Recups(pc),d0		; d0.w = nombre de fichiers récupérés jusqu'ici
	lsl.w		#2,d0				; d0.w = adresse relative des coordonnées à ajouter
	lea		Liste_Recups(pc),a6		; a6 pointe sur la liste des vars récupérées
	move.l		a4,0(a6,d0.w)			; écriture de l'adresse de l'entrée en VAT

	move.w		Nombre_de_Recups(pc),d0		; d0.w = nombre de fichiers récupérés jusqu'ici
	beq.s		FinRecup			; aucun ? Alors on se barre
	subq.w		#1,d0				; -1 pour... pfff j'en ai marre
LoopCorrectionAE:
	move.l		(a6)+,d1			; d1.l = adresse de l'entrée en VAT d'un des fichiers déjà récupérés
	cmp.l		a4,d1				; on la compare avec celle du fichier qui vient d'être restauré
	bcc.s		CorrigerAddEntry		; si celui-ci est situé devant, il faut corriger l'AdEeVAT du fichier déjà récupéré
	dbf		d0,LoopCorrectionAE		; passage au fichier récupéré suivant
	bra.s		FinRecup			; correction terminée :)
CorrigerAddEntry:
	add.l		#14,-4(a6)			; correction de l'adresse de l'entrée en VAT d'un fichier déjà récupéré
	dbf		d0,LoopCorrectionAE		; passage au fichier récupéré suivant

FinRecup:
	addq.w		#1,Nombre_de_Recups		; mise à jour du nombre de fichiers récupérés
	movem.l		(a7)+,d0-a6			; on restaure les registres
	rts						; voilà c'est fini :)
; **************************
)
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.

23

beuuuuu..
g meme + la primeur :'(

24

T'avais qu'à pas avoir un zip corrompu
tonguetonguetonguetongue
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

pisque c comme ça, je t'enverrais pas ma routine qui n'est pas encore faite tongue
grin

26

Ben tant pis, tu condamne l'intérêt de FLS tongue
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.

27

ben nan, je v tout recuperer à mon nom grin
g test routines, t'as pas les miennse grin
t piégé vadoralienalien

devildevil

nan peche que gt inquiet tout à l'heure.
ça m'aurrait ennuyé de devoir abandonner la sauvegarde en rom..

28

Ouai moi aussi...
D'ailleurs j'ai encore une mauvaise nouvelle à t'annoncer, toujours à propos de ta sauvegarde grin
Mais un choc à la fois : donc je vais attendre que tu finisse le nouveau ROM.asm tongue
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

nan, vas y, balance.. sad

30

grin
... enfin il n'y a pas de quoi rire sad
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.