1

Bonjour, je voudrais créer un string à partir d'un prog en asm et y stocker des valeurs, sous DoorsOs 0.98 HW1 AMS 2.03
J'ai commencé par écrire ceci mais ça ne marche pas (sous VTI HW2 il me renvoi une adresse error).

Please help me.


;=====================================================================

include "tios.h" ;library includes files
include "filelib.h"
include "userlib.h"


xdef _main ;normal assembly program
xdef _comment

SearchFolder macro folder ; a0=Vatadress; d0.w = Handle
movem.l d1-d7/a1-a5,-(a7)
lea 1(PC),a0
jsr _SF
movem.l (a7)+,d1-d7/a1-a5
endm
_SF:
move.l a0,-(a7)
move.w #$08,-(a7)
jsr userlib::FindSymEntry
addq.l #6,a7
cmpa.l #0,a0
beq _SFErr
move.w 12(a0),d0
rts
_SFErr:
move.w #0,d0
rts


_main:



SearchFolder repertoire
move.l name,a0
jsr filelib::createfile
move.w #10,d0
jsr filelib::resizefile ; à ce niveau il doit avoir créer un fichier de 10 octets nomé "fichier2".

rts




name dc.b "fichier2",0
repertoire dc.b "main",0



_comment
dc.b "Création d'un fichier",0
end

2

Regarde la source de sma. Menu.asm.
Y'a tout et ca marche.

3

le plus simple pour creer un fichier c bien tios::VarStore...
Site personnel
Site professionnel

msn / mail : racine.f(at)free.fr

4

Ca existe ?

5

Biensur !
Voila ce que je fais dans TI-Pang :

;-----------------------------------------------------
;
;			Fichier
;
;-----------------------------------------------------

CreeFichier:
	movem.l		d1-d7/a0-a6,-(a7)

	pea		VarStr(pc)
	CALL		SymFind		;On va chercher le Handle
	lea		4(a7),a7
	tst.w		d0
	bne		FichierExistant	;Si il existe deja, on ne cree pas le fichier

	pea		VarStr(pc)
	add.l		#TailleRab+1+TailleTotaleRecords+1+3+1+1-1,(a7)		;Tag (STR)
	move.w		#TailleRab+TailleTotaleRecords+5+1,-(a7)	;Taille par défaut
	move.w		#$4000,-(a7)	;C'est un Token
	pea		VarStr(pc)	;Nom de la Var
	CALL		VarStore	;On enregistre
	CALL		SymFind		;On va chercher le Handle
	lea		12(a7),a7
FichierExistant:
	move.l		d0,-(a7)
	CALL		DerefSym
	add		#4,a7
	move.w		12(a0),d0

	move.w		d0,-(a7)
	CALL		HLock
	lea		2(a7),a7

	addq.l		#2,a0
	move.l		a0,AdresseRecords

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

TailleRab	equ	50

	dc.b	0,"maintpsave"
VarStr	dc.b	0

	dc.b	"---------",0,0,0,39,16
	dc.b	"*TI-Pang*",0,0,0,29,76
	dc.b	"---------",0,0,0,19,136

	ds.b	TailleRab

	dc.b	0
	dc.b	"SAV",0,$f8


NombreRecords		equ	3
TailleChaineRecord	equ	10
TailleValeurRecord	equ	4
TailleRecord		equ	TailleValeurRecord+TailleChaineRecord
TailleTotaleRecords	equ	TailleRecord*NombreRecords


SymFind			equ	$60
DerefSym		equ	$79
VarStore		equ	$86

Site personnel
Site professionnel

msn / mail : racine.f(at)free.fr

6

Moi je me sers de SymAdd.
C quoi le prototype de VarStore ?

7

je sais plus trop... ca doit etre marque sur le site de PaXaL
Site personnel
Site professionnel

msn / mail : racine.f(at)free.fr

8

J'irais voir ca.

9

heu.. ya encore plus simple...avec fopen et fputc...

10

Oui. Ca s'appelle librairies mon ami.

11

et oui.. mais vu que t'es 100% kernel et lib.. ca te derange paswink

12

Serieux tu connaissais pas VarStore PpHd ??
Et pis ca comme format de fichier a envoyer, donnees comprise c nickel :

	dc.b	0,"maintpsave"
VarStr	dc.b	0

	dc.b	"---------",0,0,0,39,16
	dc.b	"*TI-Pang*",0,0,0,29,76
	dc.b	"---------",0,0,0,19,136

	ds.b	TailleRab

	dc.b	0
	dc.b	"SAV",0,$f8


Ca degoute par rapport a filelib ou il fo faire des resize et tt le bordel nan ?
Site personnel
Site professionnel

msn / mail : racine.f(at)free.fr

13

Bein la c'est normale que tu ne face pas de receise, car t'as defini une taille fixe de variable...
mais pour un editeur de texte.. t'es oblifge de faire qqs reseize, sinon reserver 64kowink)

14

Ben pourquoi ? Perso, je fais pas de resize.

15

Ouais je sais smile
C d'ailleurs pour ca qu'un editeur de txt performant doit etre assez chiant a faire question memoire...
Site personnel
Site professionnel

msn / mail : racine.f(at)free.fr

16

C sur que ca doit etre chiant.

17

il y a une autre solution qui permet d'eviter les reseize, mais c'est bourin..

18

Faire une liste chainee des modif ?

19

Pas forcement. Ca peut etre moins bourrin.

20

Personnelement je fait des reseice tous les 5 Ko... ce qui est sufisant.. et pas trop contraignant...

sinon tu cherche un edroit libre dans la mem et tu t'en sert comme buffer temporaire..

21

Bon ok.
Je ne fais aucun alloc, et j'ecrase tout.

22

il y a une zone constament libre sur la ti... a vous de voir si vous voulez l'utilise...

23

"constamment libre". Cool. Ti a decide de predre de la place pour rien smile

24

Pardon ?

25

Ok, mon ange.

26

Merci !

27

Mon Père tu devais dire !

28

pphd... dit toi bien que l'espace reserve pour le fonctionnement des apps et calcul n'est pas necessaire pour un prog asm.. il peut donc etre utilise.. mais si tu veux pas me croir je m'en fou.. je sais que j'ai raison, car je l'ai deja utilise...

29

Y'a beaucoup de places ?

30

64Ko enfin sur ma calc..