120

Oui, et il suffit de désactiver la protection de la mémoire basse (effacer le bit 2 à $600001) pour changer le vecteur d'IT.

trap.txt:

Address in table   Assigned function
----------------   -----------------
0000 to 0007       Reset vector (initial SSP and PC)  (0-1)
0008 to 000B       Bus error vector                     (2)
000C to 000F       Address error vector                 (3)
0010 to 0013       Illegal instruction vector           (4)
0014 to 0017       Zero divide vector                   (5)
0018 to 001B       CHK instruction vector               (6)
001C to 001F       TRAPV instruction vector             (7)
0020 to 0023       Privilege violation vector           (8)
0024 to 0027       Trace vector                         (9)
0028 to 002F       Line 1010/1111 emulator vectors  (10-11)
0030 to 003B       Unassigned, reserved             (12-14)
003C to 003F       Uninitialised interrupt vector      (15)
0040 to 005F       Unassigned, reserved             (16-23)
0060 to 0063       Spurious interrupt vector           (24)
0064 to 007F       Level 1-7 interrupt auto-vectors (25-31)
0080 to 00BF       TRAP #0-15 instruction vectors   (32-47)
00C0 to 00FF       Unassigned, reserved             (48-63)
0100 to 03FF       User interrupt vectors          (64-255)


Edit: cross avec BiHi hehe
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.

121

Ca coute rien d'ajouter $40000 a l'adresse, pour economiser un bclr et un bset, mais enfin c'est vrai que les 2 sont possibles smile

122

J'avais cru lire quelque part qu'il y'a des problèmes avec le Ghost Space sur certaine hw1 nan?
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.

123

k merci pour tout!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
j'ai dl aussi sur la page de xop tous les tunnels que j'ai trouvé, je dois avoir le code de 3 d'entre eux, je regarderai

Au fait, comment ça mache les labels locaux?? ça a l'air bien pratique.

124

Un label local n'est utilisable qu'entre les 2 labels qui l'encadrent
Son identifiant est precede du caractere '\'
l'avantage est que 2 labels locaux peuvent porter le meme nom du moment qu'ils ont une portee differente
il y a surement d'autres trucs a dire la dessus, regarde le zguide pour plus de precisions.

125

ok merci t1 chui trop con j'ai même pas pensé à regarder le zguide, je vais voir ça

126

nounoun
: J'ai refait le scroll à la main, pour ne plus utiliser les fonctions de graphlib (scrtomem et memtoscr)

1. Pourquoi pas utiliser tios::memmove? La fonction est dans la ROM, pourquoi ne pas l'utiliser?
2. Pourquoi ça:
;Enregistre l'écran dans le heap (buffer) ;Ecrit l'écran une ligne plus bas

? Tu peux directement déplacer le contenu de l'écran, pas la peine de passer par un buffer. Ça prend 2 fois moins de code et va 2 fois plus vite. Et ça économise de la mémoire.
nounoun
: Je voudrais aussi avoir un nombre aléatoire sans utiliser userlib, et sans prendre la routine du tios, car la doc de tigcc dit qu'elle est très lente, mais je ne sais pas du tout comment m'y prendre

Tu utilises celle de TIGCCLIB: bsr rand.
Pour l'initialiser, ben:
	move.b 6291479,%d0
	not.b %d0
	clr.l %d3
	move.b %d0,%d3
	move.l 200.w,%a0
	cmp.l #999,-4(%a0)
	jbls .L1114
	move.l 5104(%a0),%a0
	move.l (%a0),%d2
	tst.w version_matérielle /* Ici, tu peux utiliser HW_VERSION
en mode kernel, ou le résultat de __gethwversion de TIGCCLIB en mode
_nostub. */
	jbeq .L1115
	move.l %d2,%d0
	add.l %d0,%d0
	add.l %d2,%d0
	move.l %d0,%d1
	lsl.l #4,%d1
	add.l %d1,%d0
	add.l %d2,%d0
	jbra .L1116
	.even
.L1115:
	move.l %d2,%d0
	lsl.l #2,%d0
	add.l %d2,%d0
	lsl.l #3,%d0
	sub.l %d2,%d0
	add.l %d0,%d0
.L1116:
	add.l %d0,%d3
.L1114:
	move.l %d3,__randseed

Ça correspond à mon code C:
    // compute random seed from 0x600017 and FiftyMSecTick
    unsigned long randnum=255-peekIO(0x600017);
    if (!AMS_1xx) randnum+=(*((volatile unsigned long*)(_rom_call_addr(4FC))))*
                           (_Gray3PIsRealHW2()?52:78);
    srand(randnum);

Sasume
: P.S. : quelle est la taille de l'expace fantôme ?

7 espaces fantôme de 256 KO chacun. Le dernier (0x1C0000) a un traîtement particulier sur HW1, donc ça en fait 6 d'utilisables (0x40000, 0x80000, 0xC0000, 0x100000, 0x140000 et 0x180000).
Et celle de l'espace protégé ?

La RAM normale fait 256 KO. Les premiers 288 octets sont protégés. Certaines adresses négatives qui ne correspondent à rien (0xFFE00000-0xFFFFFFFF) le sont aussi, pour mieux détecter les débordements de la pile. Sachez aussi que le premier octet des adresses est totalement ignoré (ne sort jamais du processeur), donc les adresses "négatives" protégées sont en fait 0xE00000-0xFFFFFF, mais ces adresses ne correspondent à rien (ne sont pas mappées).
nounoun
: Je pense donc que c'est comme ça qu'on fait des tsr? Un programme programme lancé par un int fait un peu ce qu'il veut, et rend la main?

C'est une classe de TSRs. On peut aussi en installer sur les hooks prévus par AMS, notamment EV_hook.
Mais dans tous les cas, il ne suffit pas d'installer un handler et quitter le programme, il faut recopier le code dans un bloc de mémoire verrouillé, sinon à la prochaîne compression du heap, ça plante. Et pour qu'on puisse recopier le code, il faut soit qu'il soit entièrement PC-relatif, soit qu'on le reloge lors de la recopie.
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é

127

Ximoon
: J'avais cru lire quelque part qu'il y'a des problèmes avec le Ghost Space sur certaine hw1 nan?

Pas vraiment:
* Il y aurait un problème si TI se mettait à rajouter de la RAM à leurs calculatrices, mais ce n'est pas prévu apparemment (la V200 et la TI-89 Ti ont toujours 256 KO de RAM).
* Il y a un espace fantôme qui pose problème sur HW1: 0x1C0000. Mais personne n'utilise celui-là, celui en 0x40000 marche très bien.
* Sur HW1, il ne faut pas toucher aux espaces fantôme à protection Flash désactivée parce que ça modifie la protection anti-exécution en FlashROM. Mais pratiquement aucun programme n'est exécuté à protection Flash désactivée.
Bref, il n'y a pas vraiment de problèmes. Et pas mal de programmeurs utilisent l'astuce +0x40000 pour accéder aux vecteurs d'interruption. TIGCCLIB aussi.
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é

128

OK, je ne savais pas (j'ai toujours fait ça proprement moi... remarque pour quelques octets, pourquoi pas...)
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.

129

t1 merci Kevin, chui trop con, j'y ai même pas pensé pour le scroll (chui encore un bleu fo me pardonner grin)

Si je n'utilise pas les fonctions de la ROM, c'est pour apprendre à faire moi-même ce genre de routines simples.
Au fait, dans mon prog, quand je fais include tigcclib, ça marche po sad

-Au fait, j'ai lu des trucs sur les int, mais je ne connais pas leur fréquence, ni la manière de la changer... (sans passer par les fonctions toutes faites du TIOS).
-Quelle est la fréquence de rafraichissement de l'écran?


EDIT:

J'ai eu qq pb pour faire des boucle, quand j'ai voulu en imbriquer deux:

move.w #3,D0
move.w #10,D1
\loop
...
...
...
dbra D0,\loop
...
...
dbra D1,\loop

Avec ça, j'ai crashé mon vti à chaque fois (Er_Throw au bout de 3 secondes)
Au fait g tigcc 0.94

130

Reflechis bien: dans ton extrait de code, d0 doit etre reinitialise chaque fois que d1 est decremente.

131

ah lol, merci gringrin

sinon, j'ai essayé d'utiliser le push_rand du tios:
pea ran(pc)
jsr tios:tongueush_rand
move.w (A7),D0
lea 4(A7),A7
.....
ran dc.w 6

et en fait,je ne sais pas ce qui ne marche pas, mais CA NA MARCHE PAS en tout cas. Ceci dit, ça ne plante pas, donc...

132

[HS] [ nosmile ] rulezzz smile[/HS]
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

133

nounoun > ca m'etonnerai beaucoup que le resultat du random soit mis sur la pile.

134

Sally -> lol grin

extrait de la doc de tigcc:
push_rand pushes a random number on the expression stack. Range should point either to END_TAG, or to an integer expression. If Range points to END_TAG, push_rand pushes a floating point number between 0 and 1. If Range points to an integer value n, push_rand pushes an integer number between 1 and n if n is positive, or between -n and -1 if n is negative.
Note: This function calls the TI-Basic random number generator, so it has nothing to do with the random number generator from stdlib.h (i.e. with the functions rand, random, randomize, and srand). You can use the function cmd_randseed (instead of srand) to set the seed for the TI-Basic random number generator. Note also that push_rand is much slower than the random number generator implemented in stdlib.h.

135

La pile d'expression (Expression Stack ou EStack) N'est PAS la pile pointée par a7 !
Regarde la doc de TIGCC à son sujet. Son fonctionnement est plus complexe que les piles pointées par a7
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

136

k merci


Au fait comment afficher à l'écran un nombre? C'est quand même con de calculer un score et de ne pas pouvoir l'afficher...

137

nounoun :
Au fait, dans mon prog, quand je fais include tigcclib, ça marche po sad

Tu n'as pas besoin de l'inclure, mais tu peux appeller toutes les fonctions (celles qui ne sont pas des defines ou des ROMCALLs) en faisant bsr fonction.
Le linker reconnaît que la fonction est définie dans tigcclib et il l'inclut directement.
avatar
;)

138

même pour une macro?
et au fait pour ceux ui auraient la réponse dans la poche, je répète les dernières questions:

-Quelle est la fréquence de rafraichissement de l'écran?
-Au fait comment afficher à l'écran un nombre? C'est quand même con de calculer un score et de ne pas pouvoir l'afficher...

139

nounoun
:-Au fait, j'ai lu des trucs sur les int, mais je ne connais pas leur fréquence, ni la manière de la changer... (sans passer par les fonctions toutes faites du TIOS).
cf ./119
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

140

pkoi tu dis ça????? gni
nan en fait j'ai pas eu le temps de fouiller, merci beaucoup je vais tout de suite voir

141

C'est dans la doc de SetIntVec
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

142

oui, c'est ce que je suis en train de regarder en ce moment même
mais quand ces romcalls n'étaient pas encore supprotés par les OS, comment faisait-on?

143

Les interruptions ne sont pas des ROM_CALLS confus
Si tu parles de SetIntVec, il me semble qu'il est là depuis AMS 1

Mais dans mon post, je t'ai expliqué comment détourner les interruptions manuellement...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

144

oui, c'est ce que je vais faire.
Mais à partir de ta méthode, comment modifier la fréquence des int?

145

Ce n'est pas la même chose. Je t'ai expliqué comment substituer ta routine maison à la routine d'une interruption.
Pour modifier la fréquence des interruptions, tu devrais lire le [google]j89hw.txt[/google] (et puis il y a plein d'autres infos hyper intéressantes dedans, comme la fréquence de rafraichissement de l'écran). Et puis en fait, il n'y a que l'auto-interruption 5 dont tu peux changer la fréquence.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

146

ah ok, merci beaucoup!!!

147

nounoun
: même pour une macro?

Non.
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é

148

Pour afficher un nombre, il te suffit de transformer ton nombre en une chaine et d'afficher la chaine.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

149

Sasume-> C'est bien ce que je pensais, donc il faut que je fasse un alog pour convertir mon nombre hexa nombres décimaux, et après le convertir en caractère?

Kevin:
Tu peux directement déplacer le contenu de l'écran, pas la peine de passer par un buffer. Ça prend 2 fois moins de code et va 2 fois plus vite. Et ça économise de la mémoire.

C bon, c'est fait, mais du coup c encore plus rapide, va falloir que j'arrange ça absolument.
Sinon, maintenant je me passe de graphlib::fill et de graphlib::line, et je travaille à remplacer graphlib:: put_sprite (c un peu plus cho!!)

Edit: Put*** de smileys

150

je mieux pour convertir ton nombre en chaîne , c'est le ROM_CALL sprintf qui devraît t'être pas mal utile... le seul inconvénient, c'est qu'il faut que tu prévois un espace assez grand...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.