1

qui pourrait me donner une routine courte et rapide?
je sais je pourrais le faire en C puis regarder le fichier ASM, je l'ai fait mais c'est le bordel!

et sinon à quoi sert LINK #xx, Ax ?
ça crée un buffer? le C l'utilise tout le temps!

thanx

2

c'est vraiment chiant, je poste un topic et ensuite je repond aux autres donc le 1e disparait ;-)
faudrait que je fasse le contraire...

3

erf c'est facile.. tu alloue un espace de 3840 octet, puit tu copie l'ecran dedans..
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

4

Voila :

;-----------------------------------------------------
;
;			Sauvegarde Ecran
;
;-----------------------------------------------------
	move.w		#959,d0
	move.l		#$4C00,a0
BoucleSauvegardeEcran:
	move.l		(a0),-(a7)
	clr.l		(a0)+
	dbra		d0,BoucleSauvegardeEcran


;-----------------------------------------------------
;
;			Restaure Ecran
;
;-----------------------------------------------------

	move.w		#959,d0
	move.l		#$4C00+3840,a0
BoucleRestaurationEcran:
	move.l		(a7)+,-(a0)
	dbra		d0,BoucleRestaurationEcran
Site personnel
Site professionnel

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

5

Pas besoin d'alouer.
Site personnel
Site professionnel

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

6

Oh le barbare! 3Ko dans la pile en moins! smile
Cours et tutos Asm: http://membres.lycos.fr/sirryl

7

Bah ouais smile
Et ca a tjrs marche tres bien smile
Plus precisement, 3480 octets smile
Site personnel
Site professionnel

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

8

et alors ?
moi je fais bien un link #-13240,a6 dans un de mes programmes smile
Ca bouffe 13240 dans la pile et je vois pas ou est le probleme ? La pile c 16 Ko de memoire qui n'est jamais utilisée ...
avatar
pwet

9

D'ou les 16Ko dont on parlait tt a l'heure smile
Site personnel
Site professionnel

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

10

Ah mais ca me va, je suis surpris, d'ailleurs je devrais peut etre moi aussi utiliser un peu plus la pile...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

11

le pb c que si on lance un prog qui utilise la pile a partir d'un autre programme qui l'utilise, au bout d'un moment ca risque de saturer sad
Site personnel
Site professionnel

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

12

meuh nan smile
avatar
pwet

13

y a de la marge smile
avatar
pwet

14

merci FlashZ ;-)
c'est vrai que je pensais pas pouvoir foutre ça comme ça dans la pile...

et LINK alors ça sert à quoi exactement?

15

euh link c pour "allouer" un buffer sur la pile smile
c pas vraiment de l'ollocation mais c le seul mot qui me vient !

link #-x,an
est equivalent a:
move.l an,-(a7)
move.l a7,an
lea -x,a7

et unlk an
est equivalent a:
move.l an,a7
move.l (a7)+,an
avatar
pwet

16

il y a qqchose que je ne comprends pas très bien!

Je déclare:
buffer_screen dc.l 0 ;espace de 4 octets
var dc.w 0 ;espace de 2 octets.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Code en partie de Bill-Bob wink
;je sauvegarde l'ecran!
lea $4c00,a1
move.l buffer_screen(pc),a0
move.w #959,d0

loop_sauv move.l (a1)+,(a0)+
dbf d0,loop_sauv


Puis ensuite je vérifie si var = 0 eh ben oui il est toujours = 0 pourtant l'ecran est remplie de pixel au raz de la gueule!

est ce que c'est normal ou j'ai pas compris comment code le Motorolla 68000!
LinuX Powa (:

17

Pollux a très bien résumé
Cours et tutos Asm: http://membres.lycos.fr/sirryl

18

erf le probleme.. flashZ.. c'est que tu bouffes deja 3 ko de la pile au debit de ton programmes.. alors que la ples est plutot un moyen assez rapide pour stoque des donnees..
Si tu l'utilises pour stoque l'ecran pour le laisser sur la pile pendant tout le programmes je trouve que c'est plutot du gachi...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

19

si je comprend bien alors

buffer dc.l 0 <=> buffer_1 ds.b 3840

alors
move.l buffer,a0 <=> lea buffer_1,a0

si c'est ça alors j'avais pas compris beaucoup de chose en ASM
LinuX Powa (:

20

je persiste a dire que je prefere alouer pour ce cas la.....
Bein ouiwink
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

21

mais ca bouffe de la RAM grin
Site personnel
Site professionnel

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

22

Ouais et en plus si tu le fais en nostub je te dis pas combien il va bouffé le cul de ta calc!
LinuX Powa (:

23

Les ROM_CALLs, c'est pour les chiens? Voici un code qui ne prend que 4 octets sur la pile au lieu de 3840. (Et on pourrait aussi dégager ces 4 octets en rajoutant des instructions de plus.)

 move.l d4,-(a7)
 move.l #3840,-(a7)
 ROM_CALL HeapAllocPtr
 move.l a0,d4 ;sauvegarde l'adresse en d4
 tst.l d4
 beq nomem ;si pointeur nul, dégage
 move.l #$4c00,-(a7)
 move.l d4,-(a7)
 ROM_CALL memcpy ;sauvegarde l'écran
 addq.l #8,a7
;ton programme principal
 move.l d4,-(a7)
 move.l #$4c00,-(a7)
 ROM_CALL memcpy ;restaure l'écran
 addq.l #4,a7
 ROM_CALL HeapFreePtr
 addq.l #4,a7
nomem:
 addq.l #4,a7
 move.l (a7)+,d4
 rts


>ParadiZe: Ouais et en plus si tu le fais en nostub je te dis pas combien il va bouffé le cul de ta calc!

N'importe quoi. Le _nostub ne gaspille pas autant de place.
[edit]Edité par Kevin Kofler le 29-06-2001 à 09:52:17[/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é

24

C'est toujours le même problème: lors de l'éxecution, le programme est mis en RAM, donc si ton programme prend plus d'octets (en code), alors tu auras moins de RAM, et les ROM_CALLs ca en bouffe de la place en code...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

25

ouais Kevin, dans la procedure de save du LCD en C, il me semblait bien que ça faisait un ROM_CALL..
9A8 ou un truc comme ça non?

sinon FlashZ, LEA $4C00,A0 ce serait pas plus rapide que MOVE.l #$4C00,A0 ? il me semble, j'ai regardé les timings...

26

Lol ! Kevin Kofler je vais esssayé!
LinuX Powa (:

27

>ZOlive: 9A8 ou un truc comme ça non?

Utilise include "OS.h". Ça te permet d'utiliser les noms des ROM calls plutôt que les numéros.
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é

28

Kevin : ça va je suis pas con pour les include... seulement j'ai cherché dans tous et pas de "9A8" alors je me demande ce que c'est cette ROM_CALL, et est-ce que c'en est une?

29

Il faut diviser par 4. En effet, la table des ROM calls étant une table de pointeurs, donc de longs, le numéro du ROM call est multiplié par 4 dans l'appel.

Donc $9A8 correspond à $26A, c'est-à-dire memcpy.
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é

30

>ZOlive : on s'en fout du timing ici !
On ne s'en occupe que lors d'un moteur de jeu par exemple. Ici ca ne sert a rien, c'est juste au lancement du programme et en quittant, et il est impossible de faire la difference de vitesse a une si petite echelle.
Site personnel
Site professionnel

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