1

chui un débutant en ASM et g voulu faire un tunnel vertical... g fai un code qui trace les 11 première ligne du circuit. La première toute seule et les 10 suivante grace à une boucle!
kan je lance le prog la première foi tout marche à merveille, les lignes se tracen depuis le début de l'écran et le prog attend que j'appuye sur une touche pour sortir
mais les choz se gatte kan je relance le prog: la le tracé ne commencent pas à la premère ligne de l'ecran, il est décalé d'une dizaine de lignes (g pas conté exactement), et dé que c fini, la ti89 s'etteind toute seul et ne veu plus s'allumer.
ce méme problème apparai également kan je lance le prog la première fois (tout marche bien) et que j'etteind la ti: elle ne veu plus s'allumer!!!

g fait es test sur VTI, HW2, ROM 2.01 et voici le prog:

include "doorsos.h"
include "graphlib.h"
include "userlib.h"

xdef _main
xdef _ti89


_main:
jsr graphlib::clr_scr
move.w #10,d5

;debut

move.w rallyX,d0
move.w rallyX,d1
move.w rallyY,d2
jsr graphlib::vert

move.w rallyY,rallyY2
add.w #29,rallyY2

move.w rallyX,d0
move.w rallyY2,d1
move.w #159,d2
jsr graphlib::vert

add.w #1,rallyX

boucle:

move.w #4,d0
jsr userlib::random
move.w d0,hazard

move.w #2,d0
jsr userlib::random
cmp #1,d0
beq plus
bne moin


moin:
move.w hazard,d3
sub.w d3,rallyY
bra tracer


plus:
move.w hazard,d3
add.w d3,rallyY
bra tracer

tracer:
move.w rallyX,d0
move.w #0,d1
move.w rallyY,d2
jsr graphlib::vert


move.w rallyY,rallyY2
add.w #29,rallyY2


move.w rallyX,d0
move.w rallyY2,d1
move.w #159,d2
jsr graphlib::vert

add.w #1,rallyX

dbra d5,boucle

jsr userlib::idle_loop
rts

rallyX: dc.w 0
rallyY: dc.w 35
rallyY2: dc.w 0
hazard: dc.w 0

end


merci de m'aider les gars smile

2

Eh ben il faut initialisé tes variables soit en les remettant tous à 0
ou tu mets

un bss avant tes données!

BSS
rally: dc.w 0
etc...
LinuX Powa (:

3

attention Les variables dans un BSS ne sont pas initialisées du tout (même pas à 0)!
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é

4

Ah bon!Il me semble que j'avais lu ça qqpart donc à koi ça sert de mettre un BSS!confus
LinuX Powa (:

5

Ça sert à épargner de la place dans le programme sans utiliser les fonctions adaptées (Heap*), car les kernels allouent automatiquement les BSS. C'est une des fonctions des kernels créées pour les programmeurs paresseux.
[edit]Edité par Kevin Kofler le 02-07-2001 à 15:05:18[/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é

6

OU ceux qui veulent prendre moins de place dans leurs programmes...
Cours et tutos Asm: http://membres.lycos.fr/sirryl

7

Sans BSS, il suffit d'un HeapAllocPtr et d'un HeapFreePtr, et on peut accéder à toutes les variables par des n(an). Avec BSS, pour chaque accès à une variable, il y a un relogement à effectuer, ce qui prend dans la plupart des cas plus de place que 2 simples ROM calls.
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é

8

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é

9

M. Kofler> ouais mais ca bouffe une grande zone de mémoire, l'autre technique ne bouffe que des morceaux ce qui peut éviter un grabage collector
Cours et tutos Asm: http://membres.lycos.fr/sirryl

10

>Paxal: M. Kofler> ouais mais ca bouffe une grande zone de mémoire, l'autre technique ne bouffe que des morceaux ce qui peut éviter un grabage collector

Non. Une section BSS est allouée comme 1 seul bloc.
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é

11

merci les gars la le problème du décalage est réglé, mais un autre bug est apparu!!! voici le code du prog:

include "doorsos.h"
include "graphlib.h"
include "userlib.h"

xdef _main
xdef _ti89


_main:
jsr graphlib::clr_scr
move.w #0,rallyX
move.w #35,rallyY
move.w #0,rallyY2
move.w #0,hazard
move.w #14,d5

;debut

move.w rallyX,d0
move.w rallyX,d1
move.w rallyY,d2
jsr graphlib::vert

move.w rallyY,rallyY2
add.w #29,rallyY2

move.w rallyX,d0
move.w rallyY2,d1
move.w #159,d2
jsr graphlib::vert

add.w #1,rallyX

boucle:

move.w #4,d0
jsr userlib::random
move.w d0,hazard

move.w #2,d0
jsr userlib::random
cmp #1,d0
beq plus
bne moin


moin:
move.w hazard,d3
sub.w d3,rallyY
bra tracer


plus:
move.w hazard,d3
add.w d3,rallyY
bra tracer

tracer:
move.w rallyX,d0
move.w #0,d1
move.w rallyY,d2
jsr graphlib::vert


move.w rallyY,rallyY2
add.w #29,rallyY2


move.w rallyX,d0
move.w rallyY2,d1
move.w #159,d2
jsr graphlib::vert

add.w #1,rallyX

dbra d5,boucle

jsr userlib::idle_loop
rts

rallyX: dc.w 0
rallyY: dc.w 35
rallyY2: dc.w 0
hazard: dc.w 0

end


dans la fonction _main, à la 6ème ligne il y a ceci: move.w #14,d5
j'utilse d5 dans une boucle qui s'appelle "boucle" avec la fonction "dbra d5,boucle"
j'ai mi 14 dans d5, donc la boucle se fait 14 fois et donc 14 "double ligne" se trace
les probléme commence kan je met dans d5 une valeur supérieur ou égal à 15... la la ti me trace d'abord toute les lignes parfaitement bien, et ensuite, elle s'étein juste apré et bien sur on peu plus l'allumer!!!

bizzar, jcomprend rein confus

12

>>j'ai mi 14 dans d5, donc la boucle se fait 14 fois

nan, 15 fois. il parait qu'apres la zone de l'ecran, il y a des données que le tios n'aime pas voir modifiées.. c surement pour ça que ta ti s'eteint.

13

nan pen² la boucle va se faire d4-1 soit ici 13 fois!

ouais après le buffer de l'écran il y a des donnés très importante c'est ce que m'avait dit ExtendeD! smile
LinuX Powa (:

14

nan 15 fois !!!!!!!!!!!!!
avatar
pwet

15

nan 14 fois car quand tu veux effacé l'écran tu fais!

move.w #959,d0 ;car 3840/4 = 960 , pourtant on met bien 959 et ça l'efface
LinuX Powa (:

16

Tu est un peu fatigué mon cher Patrick wink

Il faut soustraire 1 unité car la boucle dbf effectue n+1 itérations. Donc pour avoir n itérations tu sousrtais 1 car n+1-1 = n...
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

meme avec 15, sans dépassé l'ecran, ca marche pas, ca s'éteind!!! donc je ne modifie aucune donné importante apré le buffer de l'ecran...

18

ba c ce que g dis, mais sans expliquer.. (heuresement que tu es là wink)

19

oui oui.
de toutes façons tu as bien fait parce qu'apres mon post, c allé de 13 à 15 itération grin
une conclusion était nécessaire.

20

pas vraiment : il suffisait de prendre en compte le fait que c paradize qui pensait que c'etait 13 ou 14 fois pour etre sur que c'etait bien 15 smile
avatar
pwet

21

lol grin
ben ouais moi je dis que des conneries ! grin
LinuX Powa (:

22

ben un coup tu affirmes que c 13 ... puis tu affirmes que c 14 !
autant dire que tu parles plus vite que tu reflechis ...
avatar
pwet

23

Bill-Bob->
>>pas vraiment : il suffisait de prendre en compte le fait que c paradize qui pensait que c'etait 13 ou 14 fois pour etre sur que c'etait bien 15


mdr !

24

vou nme comprené pa apparamment !!!
essayé de compiler le prog en métan a la 6ème ligne de la fonction _main() move.w #14,d5 ou alors moveq.w #14,d5 ou alors moveq #14,d5 vou allé voir que ca marche, mais kan je mé move.w #15,d5 ou moveq.w #15,d5 ou moveq #15,d5 ca plante alors jvou di pa pour move #159,d5 ou ...
vou comprenez main-nan: kan je comile ya aucun pb avec doors, mai kan je lance le prog sur vti, la ca plante! et je pige pa pourkoi, vu ke jné fai que changer une petite valeur sur d5 (14 ca marche et 15 ca marche plus et 159 non plus)
ce n'est pas un probléme de nombre de boucle ou d'itération que j'ai, mai un probléme de plantage pour une raison INCONNU!!!

25

ça plante sur quelle instruction ?

26

sad Si vous voulez que je me casse du forum dite le moi !

Et je vous jure que je pointe plus le bout de mon put1 de pseudo ici!

LinuX Powa (:

27

include "doorsos.h"
include "graphlib.h"
include "userlib.h"
xdef _main
xdef _ti89

_main:
jsr graphlib::clr_scr
clr.w rallyX
move.w #35,rallyY
clr.w rallyY2
clr.w hazard
move.w #240-1,d5 ; [i][b]largeur de l'écran pour 92, 160 pour 89

; debut

move.w rallyX,d0
move.w rallyX,d1
move.w rallyY,d2
jsr graphlib::vert

move.w rallyY,rallyY2
add.w #29,rallyY2
;move.w rallyX,d0 ; déjà dans d0
move.w rallyY2,d1
moveq #128-1,d2 ; pas 159!!! la hauteur de l'écran est 128 pour 92, 100 pour 89
jsr graphlib::vert
add.w #1,rallyX

boucle:

moveq #4,d0
jsr userlib::random
move.w d0,hazard
moveq #2,d0
jsr userlib::random
cmp.w #1,d0
beq plus
;bne moins ; inutile

moins:

move.w hazard,d3
sub.w d3,rallyY
bra tracer
plus:
move.w hazard,d3
add.w d3,rallyY
;bra tracer ; inutile

tracer:
move.w rallyX,d0
clr.w d1
move.w rallyY,d2
jsr graphlib::vert

move.w rallyY,rallyY2
add.w #29,rallyY2
;move.w rallyX,d0 ; déjà dans d0
move.w rallyY2,d1
move.w #128-1,d2 ; comme + haut
jsr graphlib::vert

add.w #1,rallyX
dbra d5,boucle

jsr userlib::idle_loop
rts

bss ; tant qu'on y est!
rallyX: dc.w 0
rallyY: dc.w 0
rallyY2: dc.w 0
hazard: dc.w 0
end

smile
Vala! ça devrait marcher.

Tu avais réglé la hauteur de l'écran à 160 au lieu de 128, en fait tu étais en train
de massacrer joyeusement toutes les données qu'il y a derrière...

Sinon, tu peux faire les manipulations directement sur les registres au lieu d'utiliser
des variables.


avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

28

ParadiZe : personne n'a dit ça, ni même ne l'a pensé.
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.