1

Je voudrais créer une libriarie statique en ASM pour être utilisé en C et en ASM. Je ne sais pas du tout comment procéder et je voudrais savoir comment on fait étape par étape!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

2

J'ai essayé la méthode suivante pour créer ma librairie:

section ".data"
include 'os.h"

xdef MaFonction1
xdef MaFonction2

MaFonction1:
...
rts

MaFonction2:
....
rts

Pour compiler je fait:
TIGCC MaLibrairie.asm
ar -r MaLibrairie.a MaLibrairie.o

A savoir que ma librarie possède des fonctions de Doorsos!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

3

Kevin t'a donné la démarche précise dans un topic (je vais essayer de le retrouver).
Pour que ne soient linkées que les fonctions utilisées, tu devrais les écrire dans des fichiers différents.

Et ça veut dire quoi que ta librairie POSSÈDE des fonctions de Doorsos (d'ailleurs, ce kernel est complètement dépassé) ??

[edit] : j'ai retrouvé le post :
Kevin Kofler a écrit :
* On n'utilise pas de fonctionnalités kernel. Donc:
- ROM_CALLs seulement à travers le procédé officiel
- pas de RAM_CALLs, sections BSS ou librairies
- seul header autorisé: os.h. Pas de tios.h, doorsos.h etc.
* On met au début: section ".data"
* On supprime tous les xdef _ti89, xdef _ti92plus, xdef _main etc.
* On met un xdef pour chaque fonction à exporter.
* Si les fonctions sont utilisables séparément, on les met dans des fichiers .asm séparés, compilés séparéments (pas avec include!), pour que seules les fonctions réellement utilisées soient linkées dans les programmes.
* On utilise:
- dans l'IDE: Project / Options / Target: Function Archive
- en ligne de commande: tigcc -ar fichier1.asm fichier2.asm fichier3.asm -o libstat.a

4

geogeo a écrit :
Pour compiler je fait:
TIGCC MaLibrairie.asm ar -r MaLibrairie.a MaLibrairie.o

Fais tigcc -ar MaLibrairie.asm -o MaLibrairie.a, c'est plus simple.
A savoir que ma librarie possède des fonctions de Doorsos!

Voilà le problème.
Commence par lire ça: http://members.chello.at/gerhard.kofler/kevin/ti89prog/asmnstbf.htm. Ne t'occupe pas de trucs comme la sauvegarde de l'écran, c'est le problème du programme utilisateur, pas de la librairie. Mais lis bien les sections décrivant comment on appelle un ROM_CALL.
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é

5

La procédure que tu vient de me donner je les suivit à la lettre est j'ai résussit de créer ma librairie avec l'extension a mais le problème et le suivant:

En C pour pouvoir l'utiliser je fait:

extern void Play2Channel (void *Channel1 asm("a1"), void *Channel2 asm("a2"), unsigned short Tempo asm("d2"));

et lorqsque je veut l'appeler dans un programme, un message d'erreur apparâit comme quoi la fonction CALCULATOR n'est pas définit. Dans le fichier ASM MaLibrairie.asm j'utilise CALCULATOR. Quand je parlait de doorsos c'était pour remplacer OS.h par Dooros.h mais ça marche pas!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

6

En résumé, remplace:
jsr doorsos::toto
par:
 move.l $c8,a0
 move.l toto*4(a0),a0
 jsr (a0)


(post croisé)
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

geogeo
a écrit : et lorqsque je veut l'appeler dans un programme, un message d'erreur apparâit comme quoi la fonction CALCULATOR n'est pas définit. Dans le fichier ASM MaLibrairie.asm j'utilise CALCULATOR. Quand je parlait de doorsos c'était pour remplacer OS.h par Dooros.h mais ça marche pas!

Tu utilises CALCULATOR pour quoi faire?
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

geogeo
a écrit : et lorqsque je veut l'appeler dans un programme, un message d'erreur apparâit comme quoi la fonction CALCULATOR n'est pas définit. Dans le fichier ASM MaLibrairie.asm j'utilise CALCULATOR.
Euh.. Ça n'a rien à voir, mais j'ai l'impression que tu utilises ton fichier .asm quand tu veux utiliser ta librairie. Il faut utiliser le .a !

9

Non j'ai trouvé le problème, toute les procédures que vous avez citait je les avit faite mais j'avais juste à remplacer la RAM_CALL CALCULATOR par un fonction :

move.l $C8,d3
swap d3
lsr.w #6,d3
move.b d3,calc

J'ai tout simplement besoin de cette fonction pour identifier la calculatrice et ainsi gérer correctement le clavier!

Merci Kevin pour ton aide et ton site web!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

10

Ma librairie PolySnd fonctionne en statique mais je voudrais savoir pourquoi le son est pourri (ralentissement).

Lorsque je tape cela:

INT_HANDLER save_int_1=GetIntVec (AUTO_INT_1);
SetIntVec (AUTO_INT_1, DUMMY_HANDLER);

Play2Channel(cle_sol,cle_fa,7000);

SetIntVec (AUTO_INT_1, save_int_1);

La désactivation de l'int 1 se fait correctement mais après la fin de la librairie, la restauration de l'int 1 ne ce fait pas donc la calculatrice se plante!

Par contre lorsque l'int1 et activé, le son est très pourri(c'est normal) mais après la fin de la librarie, la calculatrice à la main et ne se plante pas. Je voudrais savoir si la fonction SetIntVec ne modifie pas les registres...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

11

geogeo a écrit :
Non j'ai trouvé le problème, toute les procédures que vous avez citait je les avit faite mais j'avais juste à remplacer la RAM_CALL CALCULATOR par un fonction :

move.l $C8,d3
swap d3
lsr.w #6,d3
move.b d3,calc
J'ai tout simplement besoin de cette fonction pour identifier la calculatrice et ainsi gérer correctement le clavier!

Catastrophe! Cette fonction ne marchera pas sur Voyage 200!

Voilà comment fait le "startup code" de TIGCC pour détecter le modèle de calculatrice:
	move.l 0xC8,%a0

	/* Calculator Detection */
| At first, assume TI-92 Plus.
| It takes less space to write the values into %d0 first and then check whether they are correct.
	moveq #1,%d0
| Move the address of the jump table to %d1.
	move.l %a0,%d1
	and.l #0x400000,%d1
| Now %d1 is 0 on a TI-89 or V200, or 0x400000 on a TI-92+.
	jbne __calc_in_d0__
| Otherwise, assume TI-89.
	clr.w %d0
| Get the address of the ScrRect variable into a1.
	move.l (%a0,0x2F*4),%a1 /* ScrRect */
| If ScrRect+2 (x2) is less than 200, it is a TI-89.
	cmp.b #200,2(%a1)
	jbcs __calc_in_d0__
| Otherwise, it is a V200.
	moveq #3,%d0
__calc_in_d0__:
| Fill __calculator now, since __calc_is_OK__ may be located at different places.
	lea __calculator(%pc),%a1
	move.w %d0,(%a1)
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

Et si c'est juste pour distinguer TI-89 d'une part et TI-92+/V200 d'une autre part, le test de ScrRect tout seul suffit.
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é

13

La Voyage 200 à le même clavier que la TI-92 plus? Donc la fonction calculator fonctionne sur toute les calculatrices!
Je vais quand la remplacer! T'as réponse à tout, c'est vraiment super!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

14

geogeo
a écrit : Je voudrais savoir si la fonction SetIntVec ne modifie pas les registres...

SetIntVec est une macro, pas une fonction.

En revanche, vérifie que tu ne détruis pas de registres que tu n'as pas le droit de détruire dans Play2Channel. Tu as le droit de détruire d0, d1, d2, a0 et a1. Tous les autres registres doivent être sauvegardés et restaurés.
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é

15

geogeo
a écrit : La Voyage 200 à le même clavier que la TI-92 plus? Donc la fonction calculator fonctionne sur toute les calculatrices!

Pas celle que tu utilises. La V200 a le même clavier que la TI-92+ (certaines touches changent d'emplacement physique, mais ça n'a pas d'importance), mais elle a sa ROM en $200000, donc tu la détectes comme une TI-89 si tu ne testes que l'adresse de la ROM.
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

Je me disez que le problème venait de là. Je peut donc sauvegarder les registres sur la pile!

Est tu sûr que la fonction CALCULATOR ne fonctionnera pas correctement sur une V200 car mon teste et le suivant: Si 0 alors TI-89 sinon TI-92 Plus ou V200 et sachant que TI-92 et V200 on le même clavier alors le problème ne se pose plus.
A moins que sur une V200 CALCULATOR ne renvoye 0?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

17

A d'accord! Merci pour cette fonction, je vais l'inclure tout de suite!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

18

Oui, l'adresse de la ROM sur V200 commence à l'adresse $2000, donc ton test renverra 0...

19

$200000, pas $2000. smile
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

A juste une question, je voie un label __calculator, je vourdrais savoir à quoi ça correspond!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

21

Je n'arrive pas à adapter ta fonction en ASM pure. Je n'arrive pas à transformer move.l (a0,$2F*4),a1 avec une correspondance en ASM autre que celui de TIGCC!
C'est bon le problème est résolus, la calculatrice ne plante plus et le son et de bonne qualité. Il ne reste plus que le clavier!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

22

move.l $2F*4(a0),a1
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é

23

Je peut paraître débutant mais en effet je pose beaucoup de question pour améliorer ma syntaxe et donc améliorer mes programmes, c'est comme ça que j'évolue!
Excuse moi pour le dérangement!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

24

> Excuse moi pour le dérangement!
C'est pas grave, tout le monde en passe par là un moment à un autre...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

25

De plus tu sembles t'être heurté à une différence de syntaxe entre GNU et A68k, c'est vrai que ce n'est pas toujours facile...
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.

26

Bon la nouvelle version de PolySnd sera bientôt prête:
-Compatible à 100% V200
-Possibilitée de jouer des musiques sur 4 voies
-Convertisseur (version bêta donc pas parfait) pour faciliter la création musical
-Librairie statique pour le développement d'application Kernel et Nostub
-Amélioration de la librairie Kernel.
-Un version identifiant HW1 et HW2

Mais malheuresement pas pour l'instant, ne semble pas pouvoir être utilisé avec les niveaux de gris et appuye de la touche ESC qui n'est pas instantané. Mais cela arrivera!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

27

Pour le problème de la touche qui arrête la musique, tu devrais utiliser la touche ON qui ne se lit pas comme les autres touches mais qui déclenche une interruption. Il suffit de rediriger cette interruption pour arrêter la lecture.
En ce qui concerne les niveaux de gris tu désactives les interruptions ou tu les redirige pour faire la musique?
avatar
;)

28

BiHi
a écrit : Pour le problème de la touche qui arrête la musique, tu devrais utiliser la touche ON qui ne se lit pas comme les autres touches mais qui déclenche une interruption. Il suffit de rediriger cette interruption pour arrêter la lecture.

Ne pas oublier de tester le bit du port I/O correspondant pour vérifier que [ON] soit bien appuyé. L'auto-interruption n°6 est aussi appelée dans certaines autres circonstances. Piles faibles par exemple.
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é

29

C'est quel port IO qu'il faut tester?
avatar
;)

30

Cf. http://m101.ryd.student.liu.se/J89hw.txt, comme pour tout ce qui est matériel.
$60001A RW
	:1	READ:  Current status of the [ON] key, =0 if pressed
	:7-0	WRITE: Acknowledge [ON] key interrupt (level 6)
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é