PpHd
a écrit : Tu compiles avec : tigcc genscr16.c gendat.asm ?
PpHd a écrit :
copy preos/include/* tigcc/include/asm
_flag_3 _readonly equ _flag_3
;attends 2 appuis de touches ROM_CALL ngetchx jsr (a4)
ifnd ROM_CALL_reg ROM_CALL_reg equr a4 ;compatibilité endc
ROM_CALL_reg equr a0 include "OS.h"
PpHd
a écrit : C'est pas une raison valable.
Kevin Kofler a écrit :
Tu sais très bien que je ne peux pas reprendre tes includes à la lettre parce que le linker n'est pas le même. Par exemple, on ne peut pas mettre _readonly parce que Obj2ti ne comprend pas. On doit mettre:_flag_3 _readonly equ _flag_3
JM avait fixé ce format (et il en avait parlé sur ce forum), mais tu as préféré faire n'importe quoi pour MakePrgm.
Et puis, nous avons des nécessités de compatibilité que tu n'as pas. Avec le nombre de programmes qui utilisent doorsos.h, on ne peut pas se permettre de ne pas inclure un fichier doorsos.h avec des déclarations en doorsos::. D'ailleurs, tu nous rends le travail assez pénible avec tes headers compatibles seulement à 90% avec les anciens. Par exemple, le suivant ne marchera pas avec ton OS.h alors que ça marchait avec l'ancien:;attends 2 appuis de touches ROM_CALL ngetchx jsr (a4)
tout ceci parce que tu as changé le registre utilisé pour les ROM_CALLs.
Il fallait mettre (ce que je vais probablement faire pour TIGCC):ifnd ROM_CALL_reg ROM_CALL_reg equr a4 ;compatibilité endc
et utiliser ROM_CALL_reg dans la macro ROM_CALL. Comme ça, si on veut utiliser a0, on met:ROM_CALL_reg equr a0 include "OS.h"
Sinon, ROM_CALL2 devrait toujours utiliser a4, et ROM_PTR devrait utiliser ROM_PTR_reg, qui serait mis à a0 par défaut.
La raison pourquoi tout ceci nous rend le travail pénible est qu'il y a 2 jeux de headers incompatibles, et qu'on ne sait pas avec lesquels être compatibles. Moi, je suis pour la compatibilité avec les sources existantes. Mais quand il y aura plein de sources assemblées avec tes headers non-standard, on risque de finir par devoir mettre des ifd _preos_compat de partout et de mettre dans la documentation de mettre d'utiliser -v_preos_compat pour compiler des programmes prévus pour tes headers.
Et puis gendat.asm est un fichier de données, donc il doit de toute façon être dans .data!!!
Si ça marchait autrement avant, c'est parce que link.exe ne combinait pas les sections entre fichiers. GNU ld le fait.
Et il vaut mieux prendre les includes de TIGCC, qui sont compatibles à 100% avec Obj2ti, alors que ceux de PpHd contiennent des trucs du style _mistub (non supporté) ou _readonly (qui devrait être _flag_3, cf. ci-dessus).
Et les paquets d'includes sont tous les 2 "axés" à la fois kernel et _nostub.
Ceci dit, il y aura bientôt un tios.h qui permettra d'assembler les programmes faits pour les includes de PreOs qui sera livré avec une version future de TIGCC. (Je vais m'en occuper.)
Ceci dit, il y aura bientôt un tios.h qui permettra d'assembler les programmes faits pour les includes de PreOs qui sera livré avec une version future de TIGCC. (Je vais m'en occuper.)
les kernels c bien ,c même trés bien je trouve
sa permet de moins s'embetter avec les macro call
la sauvegarde de registre, etc...
le seul truc que je suis pas d'accord c les jeux qui demande 10 librairies avant de pouvoir fonctionner , c pour sa que j'ai essayer de faire ma propre lib
ainsi, lorsque (plus tard) je ferais un jeu, ben au lieux
d'utiliser que 2 ou 3 fonctions de 4 ou 5 lib
ben je regrouperais ces fonctions dans une seule et unique lib
en adaptant les routines a mes besoins
ainsi, on aura besoin que d'une seul et unique lib (au lieux de plusieurs)
et le poids total sera diminuer car j'utiliserait seulement
les fonctions que j'aurais besoins
move.l ScreenClear*4(a5),a0 jsr (a0)
LOL, parce que c'est dur de faire un moveq.l d3-d7/a2-a6,-(a7) au début et un moveq.l (a7)+,d3-d7/a2-a6 à la fin...
Et prends mon tutorial, il y a même le code pour la sauvegarde de l'écran prêt à être copié et collé. (Ça me fait penser à ce qu'on devrait mettre une option SAVE_SCREEN dans OS.h. Je vais m'en occuper quand je mettrai à jour les headers.)
move.l ScreenClear*4(a5),a0
jsr (a0)
prend 6 octets seulement. (Ça me fait penser à ce qu'on devrait mettre une option OPTIMIZE_ROM_CALLS dans OS.h. Je vais m'en occuper quand je mettrai à jour les headers.)
Par exemple, toutes les fonctions qui sont dans graphlib ont un équivalent exact soit dans la ROM, soit dans TIGCCLIB. Et mon tutorial explique comment utiliser les fonctions de TIGCCLIB. Cf. section V, en particulier V.2. C'est très facile en plus!
LOL, tu trouves que jsr doorsos:creenClear ou jsr tios:
creenClear est plus simple que call ScreenClear ou ROM_CALL ScreenClear? Moi, je ne trouve pas que c'est le cas.
Et puis, jsr tios:creenClear prend 8 à 10 octets!!! (10 pour le premier appel, 8 pour tout appel successif au même ROM_CALL.)
N'importe quoi!!! Si tout le monde fait comme toi, au lieu d'avoir 4 ou 5 librairies dynamiques, on en aura une dizaine: une par auteur! C'est vraiment la pire des choses que tu peux faire!!!
Si tu ne veux pas utiliser trop de librairies dynamiques, fais-en une statique!!! C'est facile de faire une librairie statique avec A68k avec TIGCC. Et je peux t'aider avec ça si tu n'y arrives vraiment pas.
Kevin Kofler a écrit :
LOL, tu trouves que jsr doorsos:creenClear ou jsr tios:
creenClear est plus simple que call ScreenClear ou ROM_CALL ScreenClear? Moi, je ne trouve pas que c'est le cas.