1

Ce topic a pour objectif de concentrer les pbs rencontrés avec Pedrom. Je viens à l'instant de corriger un bug dans GFA TEM. memcmp ne fonctionne pas de la même façon que sur AMS. (bon c'est de ma faute aussi car j'ai réutilisé le registre %a0 après le passage de memcmp)!

La fonction DrawClipPix ne fonctionne pas du tout, aucun pixel ne s'affiche sur l'écran.
La fonction DrawClipLine n'est pas clippée.
Il semble que les opérations avec les flottants ne sont pas parfaites. Genre cos, sin et tan qui donnent des résultats assez délirant! Cosinus = Sinus sur Pedrom!
Je constate aussi une erreur de virgule... avec la négation genre avec A=52.21 -A=-5.221E12289. Le reste des opérations (multiplication, addition, soustraction, division) semble fonctionner.

Je constate aussi que quand j'affiche quelque chose avec printf ou quand je sors du programme qui passe par ligne de commandes (gfatem ("tokenbuf"), j'ai un nombre flottant assez aléatoire affiché tout en haut.

Voilà les pbs que j'ai pu constater.

Je voudrai aussi noter que GFA Basic tout court ne fonctionne pas sur Pedrom, je vais regarder tout ça en détail!
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

>memcmp ne fonctionne pas de la même façon que sur AMS. (bon c'est de ma faute aussi car j'ai réutilisé le registre %a0 après le passage de memcmp)!
Oui c'est de ta faute.

>La fonction DrawClipPix ne fonctionne pas du tout, aucun pixel ne s'affiche sur l'écran.
Tiens ? Etrange.

> La fonction DrawClipLine n'est pas clippée.
Oui

>Genre cos, sin et tan qui donnent des résultats assez délirant!
cos=sin=tan = random sur PedroM grin

> Je constate aussi une erreur de virgule... avec la négation genre avec A=52.21 -A=-5.221E12289.
Corrige

> j'ai un nombre flottant assez aléatoire affiché tout en haut.
gfatem ("tokenbuf")
est un appel de fonction. Il renvoit donc une valeur a savoir le dernier nombre flottant utilise (a peu pres).
Appelle comme : gfatem tokenbuf
Pour appeller un programme.

3

Quel printf au fait ?

4

printf tout court. smile
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.

5

printf de tigcc ou de pedrom ?

6

tigcc, désolé.
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.

7

A oui un autre petit bug à signaler, quand la fonction getcalc provoque un 'time out', le curseur se déplace tout à droite.
A noter que je test tout avec Pedrom 0.78.
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.

8

Utilise la version 0.80 ! !!!! triso

9

Non j'ai dit une bêtise, j'utilise bien la version 0.80 depuis le début!
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

Ben c'est pas normale.

11

Avec plus de tests je vois que la chiffre assez aléatoire qui s'affiche tout en haut est dû tout simplement parce que j'execute un programme de cette façon:

gfatem("main\test") et non
gfatem test

Donc en gros reste le pb avec la fonction DrawClipPix qui n'affiche rien.
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.

12

Voici le code"
;void DrawClipPix (short x, short y);                                           
DrawClipPix:
        move.w  4(a7),d0
        move.w  6(a7),d1
DrawClipPix_reg
        cmp.w   CLIP_MIN_X,d0
        blt.s   \end
        cmp.w   CLIP_MAX_X,d0
        bge.s   \end
        cmp.w   CLIP_MIN_Y,d1
        blt.s   \end
        cmp.w   CLIP_MAX_Y,d1
        bge.s   \end
        bsr.s   _GetScrPtr
        move.w  CURRENT_ATTR,d2
        bra.s   DrawPix_Inline
\end    rts

;void DrawPix (short x, short y, short Attr);                                   
DrawPix:
        move.w  4(a7),d0
        move.w  6(a7),d1
        bsr.s   _GetScrPtr
        move.w  8(a7),d2
DrawPix_Inline:
        beq.s   \revers
        subq.w  #1,d2
        beq.s   \normal
        bchg.b  d1,(a0)
        rts
\normal bset.b  d1,(a0)
        rts
\revers bclr.b  d1,(a0)
        rts


Tu peux pas tracer, s'il te plait ?

13

Je tracerai ça ce soir.
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

Bon je vois le pb, le code est parfait sauf jusqu'à
beq.s \revers
Bref normalement ça devient
beq.s   \normal
subq.w  #1,d2 
beq.s   \revers
bchg.b  d1,(a0) 
rts


Voilà donc rien de méchant!
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.

15

Tiens il me semblait que l'attirbut 0 c'etait l'ecriture en blanc ?

16

Non c'est l'attribut 1.
0 = A_NORMAL.
1 = A_REVERSE.
2 = A_XOR.
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

trinon
enum Attrs {A_REVERSE, A_NORMAL, A_XOR, A_SHADED, A_REPLACE, A_OR, A_AND, A_THICK1, A_SHADE_V, A_SHADE_H, A_SHADE_NS, A_SHADE_PS};
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. »

18

19

J'ai tord en effet. Donc ce qui se trouve dans CURRENT_ATTR est faux.
Je ne vois que ça comme explication.
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.

20

Fais-tu au moins un SetCurAttr (A_NORMAL) ?

21

Je vois, le pb est résolu.
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

Je relance le sujet car je voudrai savoir si il est possible d'insérer GFA-Basic en ROM et de l'executer comme SIDE?
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.

23

Heu... Oue, surement. Mais ca demande un peu de boulot de ta part. Tu es AMS 1.0x compatible ?

Alors remplacer
#include <tigcclib.h>

par

#ifdef PEDROM
#include "PedroM-Internal.h"
#else
#include <tigclib.h>
#endif

et
#include "..\Structs.h"
#include "..\System\File.h"
par:
#include "../Structs.h"
#include "../System/File.h"

ensuite faut voir. Surement si tu es motive smile

24

Bon j'ai modife PedroM pour qu'il calcule dynamiquement a la compilation le debut des archives. ca sera plus simple d'integrer des modules.

25

Ok merci, en ASM c'est le même principe je présume?
Oui je suis compatible en théorie avec AMS 1.0x.
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.

26

Bon j'ai modife PedroM pour qu'il calcule dynamiquement a la compilation le debut des archives. ca sera plus simple d'integrer des modules.

top ca pourait m'interesser pour TIM.
Sinon est ce que les fonctions trigo sont prévues pour les prochaines release de PedroM?
avatar

27

28

>Ok merci, en ASM c'est le même principe je présume?
Pardon.

>Oui je suis compatible en théorie avec AMS 1.0x.
Oui, c'est bon. Par contre TPRbuilder est une belle daube pour compiler.
Apres avoir traduit un peu, j'ai
 tigcc main.c Sources/codes/Memory.c Sources/codes/Stri
c Sources/codes/Screen.c Sources/codes/File.c Sources/codes/Error.c Sources/c
s/Interrupt.c Sources/codes/Parameters.c Sources/Codes/Functions.c Sources/co
/Scanner.c Sources/codes/ExprFind.c Sources/codes/Tokenisor.c Sources/codes/U
kenisor.c Sources/codes/ExprMake.c Sources/codes/ExprTokens.c Sources/codes/E
Var.c Sources/codes/ExprExecute.c Sources/codes/TokensExec.c Sources/codes/To
sFunc.c _kb_getkey.asm -o "GFA Basic" -pack gfadata -n GFABasic -Os -Wall -fo
-frame-pointer -std=gnu99 -WA,-g,-t --optimize-nops --optimize-returns --opti
e-branches --optimize-moves --optimize-tests --optimize-calcs --remove-unused
cut-ranges --reorder-sections --merge-constants -DUSE_TI89 -DUSE_TI92PLUS -DU
V200 -DMIN_AMS=101 -DKERNEL_FORMAT_BSS -DKERNEL_FORMAT_DATA_VAR -ISources/Hea
s/ -ISources/Tables -ISources

In file included from Sources/Headers/Header.h:7,
                 from main.c:4:
Sources/Headers/Structs.h:122:7: warning: no newline at end of file
In file included from Sources/Headers/Header.h:8,
                 from main.c:4:
Sources/Headers/Library.h:8:7: warning: no newline at end of file
In file included from main.c:4:
Sources/Headers/Header.h:11:29: Tables\Tbl_Tags.h: No such file or directory
Sources/Headers/Header.h:12:31: Tables\Tbl_Tokens.h: No such file or director
Sources/Headers/Header.h:13:30: Tables\Tbl_Funcs.h: No such file or directory
Sources/Headers/Header.h:14:30: Tables\Tbl_Error.h: No such file or directory
Sources/Headers/Header.h:15:28: Tables\Tbl_Lst.h: No such file or directory
Sources/Headers/Header.h:18:27: System\Memory.h: No such file or directory
Sources/Headers/Header.h:19:27: System\String.h: No such file or directory
Sources/Headers/Header.h:20:27: System\Screen.h: No such file or directory
Sources/Headers/Header.h:21:25: System\File.h: No such file or directory
Sources/Headers/Header.h:22:26: System\Error.h: No such file or directory
Sources/Headers/Header.h:23:30: System\Interrupt.h: No such file or directory
Sources/Headers/Header.h:24:31: System\Parameters.h: No such file or director
Sources/Headers/Header.h:25:30: System\Functions.h: No such file or directory
Sources/Headers/Header.h:28:27: Other\Scanner.h: No such file or directory
Sources/Headers/Header.h:29:28: Other\ExprFind.h: No such file or directory
Sources/Headers/Header.h:30:29: Other\Tokenisor.h: No such file or directory
Sources/Headers/Header.h:31:31: Other\UnTokenisor.h: No such file or director
Sources/Headers/Header.h:32:28: Other\ExprMake.h: No such file or directory
Sources/Headers/Header.h:33:30: Other\ExprTokens.h: No such file or directory
Sources/Headers/Header.h:34:27: Other\ExprVar.h: No such file or directory
Sources/Headers/Header.h:38:34: Functions\TokensExec.h: No such file or direc
y
Sources/Headers/Header.h:39:34: Functions\TokensFunc.h: No such file or direc
y
Sources/Headers/Header.h:40:35: Tables\Tbl_ExecTokens.h: No such file or dire
ry
Sources/Headers/Header.h:41:35: Functions\ExprExecute.h: No such file or dire
ry

Je n'ai pas de repertoire Functions, System et Other.
(Les autres, c'est a cause des \ ).

> ca pourait m'interesser pour TIM.
vaporware.

>Sinon est ce que les fonctions trigo sont prévues pour les prochaines release de PedroM?
Je compte tout reecrire.

>La bête noire de PpHd je suppose
pas vraiment smile

29

>Ok merci, en ASM c'est le même principe je présume? Pardon.


GFA-TEM est codé 100% en ASM et je me demandais juste si il n'y avait pas un xdef... ou un truc de ce genre là à ajouter?


Merci pour tout PpHd.

Sinon j'ai une fonction memcpy pour PedRom qui pourrait t'interesser car plus rapide que celle d'AMS:
|=========================================================================
|Func_memcpy
|-------------------------------------------------------------------------
|Fast copy
|-------------------------------------------------------------------------
|input:
|  dc.w %d0 = Nombre d'octets
|  dc.l %a0 = Source
|  dc.m %a1 = Destination
|
|output:  
|
|destroy: 
|=========================================================================
_Func_memcpy_same_parity_address:
		tst.w      %d0					|Si paire?
		jbeq       _Func_memcpy_fast_copy		|Copie directe		
		move.b     (%a0)+,(%a1)+			|Aligne données
		subq.l     #1,%d1
_Func_memcpy_fast_copy:
		moveq.l    #0,%d0				|Efface %d1
		move.w     %d1,%d0				|%d0 dans %d1
		lsr.w      #2,%d0				|Divise %d1 par 4
		jbeq       _Func_memcpy_no_fast_copy		|Copie simple si égale à 0
		subq.l     #1,%d0
_Func_memcpy_fast_copy_loop:
		move.l     (%a0)+,(%a1)+
		subq.l     #4,%d1
		dbf        %d0,_Func_memcpy_fast_copy_loop
		dbf        %d1,_Func_memcpy_simple_copy
		rts		
_memcpy:
Func_memcpy:			
		moveq.l    #0,%d1
		move.w     %d0,%d1
		jbeq       _Func_memcpy_exit			|Si taille 0   
		move.l     %a0,%d0				|%a0 dans %d1
		move.l     %a1,%d2				|%a1 dans %d2
		andi.w     #1,%d0				|Parité
		andi.w     #1,%d2				|Parité
		cmp.w      %d0,%d2				|Si égalitée
		jbeq       _Func_memcpy_same_parity_address	|Détermine la parité		
_Func_memcpy_no_fast_copy:		
		subq.l     #1,%d1
_Func_memcpy_simple_copy:
		move.b     (%a0)+,(%a1)+
		dbf        %d1,_Func_memcpy_simple_copy
_Func_memcpy_exit:		
		rts

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.

30

Es-tu sur que c'est plus rapide que celle d'AMS ? Et pour quelle taille ?