1

je n'ai pas la prétention de vouloir porter mes lourds programmes basic en ASM mais je voudrais savoir où trouver des sources nostub pour apprendre, pour faire quelques petites routines qui me permettrait d'égayer l'aspect visuel de mes progs en basic.
Qui veut bien m'aider ?

2

http://ti-sources.ovh.org/tutos.htm
http://ti-sources.ovh.org/routines/routines_et_algorithmes.htm

(je pensais pas que c'était toujours en ligne love)


zegoo > en fait ce site n'est plus tout à fait à jour embarrassed

3

4

5

merci pen^2
je ne connaissais pas les 2 premiers liens, çà a l'air intéressant mais c'est pas vraiment nostub !
Existe-t-il des petits de code en nostub qui faciliterait l'usage du basic et permettrait d'apprendre à migrer complètement vers l'asm nostub?
Je ne veux pas me lancer dans l'usage de vertel ou flib, çà faciliterait beaucoup de choses mais çà ne me permettrait pas d'apprendre.

6

Edited_3590

7

C'est pas plus mal de passer directment a l'assembleur... le C est quand meme un langage bcp plus compliqué que le Basic, contrairement a l'assembleur

8

Edited_3591

9

orion, ta réponse est celle qui est le plus souvent faite à ceux qui veulent se lancer dans l'asm (c'est parfois décourageant) mais comme je le dis, je n'ai pas la prétention de faire de grandes choses en asm. Je trouve que le nostub est une façon claire et nette d'aborder l'asm. Je ne suis pas gourmand, je cherche juste quelques petits trucs tout faits et proprement faits pour avancer à mon rythme dans le nostub. J'ai choisi ma voie, le nostub pas le C ni les kernels !!
Les tutos de Squale92 et de KK sont hypers intéressants mais limités (sans être péjoratif).
C'est pourquoi je réitère ma demande, faites-moi don de links sur des petites sources nostub commentées; çà doit bien exister...

10

Edited_3592

11

Orion, j'ai déjà dépasser le stade du "Hello world" dans le sens où je l'ai compris, par contre je suis perdu quand il s'agit de programmer des routines pour traiter des données du basic genre:
j'efface l'écran en le sauvegardant, j'exécute un prog basic, je restaure l'écran initial..
Et bien çà je sais pas faire!
Ou alors produire un prog asm nostub pour trier plus vite qu'avec sortA des listes du basic !!
Voilà, pour commencer à apprendre, où se situe mes souhaits !

12

Edited_3593

13

orion, il est vraiment beau ton premier prog asm !!
Mais peut-on sauvegarder l'écran, revenir a tios, lancer un prog basic, puis restaurer l'écran initial sans vertel ou flib ?

14

Edited_3594

15

Alors comment est-ce possible par vertel ou flib ? Les routines écrites en C dans ces deux librairies ne sont-elles pas portables en asm nostub ?
En tout çà me complique pas mal les choses tout çà !!!

16

Edited_3595

17

18

zegoo > le _nostub et le kernel ne sont pas très différents... Enfin, l'ASM est le même, c'est juste l'environnement d'exécution qui offre des fonctions différentes.

Pour lancer un programme BASIC, ce n'est pas ce qu'il y a de plus simple. Je crois qu'il y a des exemples là-dessus dans la FAQ de TIGCC (mais en C), sinon tu peux regarder les sources des shells existant.
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. »

19

l'exécution des programmes est une des choses les plus dures, même happy

j'ai un bout de code qui le fait, je vais essayer de le retrouver
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

20

C'est très gentil Flanker
Voilà j'ai fait un premier prog en nostub en repiquant pas mal de chose à Squale92 et M. K; j'ai tites questions:
où placer fontsetsys pour que çà marche et qui peut me dire où trouver la liste des romcalls parceque l'aide de tigcc c'est difficile si déjà on ne connait le nom des romcalls rechercées !

voici mon code:
section ".data"
include "OS.h"
xdef _nostub
xdef _ti89
xdef _ti92plus

_main:
movem.l d0-d4/a5,-(a7) ; Sauvegarde des registres d0,d4 et a5

move.l $C8,a5

pea.l 3840 ;taille à allouer
;(même chose que move.l #3840,-(a7), mais plus optimisé)
move.l HeapAllocPtr*4(a5),a0
jsr (a0) ;alloue les 3840 octets
move.l a0,d4 ;sauvegarde l'adresse du bloc alloué en d4
tst.l d4
beq nomem ;si le pointeur est nul, quitte le programme
move.l #3840,(a7) ;taille à copier
;Cette instruction n'est pas vraiment nécessaire puisque HeapAllocPtr ne modifiera
;pas la valeur qui est déjà sur la pile, mais mieux vaut ne pas se fier.
pea.l $4c00 ;source: adresse de l'écran
move.l d4,-(a7) ;destination: adresse du bloc alloué
move.l memcpy*4(a5),a0
jsr (a0) ;sauvegarde l'écran
lea.l 12(a7),a7 ;nettoie la pile

move.l ScreenClear*4(a5),a0
jsr (a0) ;appelle ScreenClear (ClrScr dans la documentation de TIGCC - c'est la seule
;fonction à ma connaissance dont les noms ne correspondent pas)

pea.l comment(pc)
move.l ST_helpMsg*4(a5),a0
jsr (a0) ;appelle ST_helpMsg


move.w #1,-(a7) ; Mode d'affichage
pea.l texte1(pc) ; Le message qu'on veut afficher
move.w #0,-(a7) ; Ordonnée
move.w #10,-(a7) ; Abscisse
move.l DrawStr*4(a5),a0
jsr (a0)


move.w #0,-(a7)
pea.l texte2(pc) ; Le message qu'on veut afficher
move.w #10,-(a7) ; Ordonnée
move.w #10,-(a7) ; Abscisse
move.l DrawStr*4(a5),a0
jsr (a0)

move.w #3,-(a7)
pea.l texte3(pc) ; Le message qu'on veut afficher
move.w #20,-(a7) ; Ordonnée
move.w #10,-(a7) ; Abscisse
move.l DrawStr*4(a5),a0
jsr (a0)

lea 34(a7),a7

move.l ngetchx*4(a5),a0
jsr (a0)



pea.l 3840 ;taille à copier
;(même chose que move.l #3840,-(a7), mais plus optimisé)
move.l d4,-(a7) ;source: adresse du bloc alloué
pea.l $4c00 ;destination: adresse de l'écran
move.l memcpy*4(a5),a0
jsr (a0) ;restaure l'écran
addq.l #8,a7
move.l d4,(a7)
move.l HeapFreePtr*4(a5),a0
jsr (a0) ;libère le bloc alloué


nomem:
addq.l #4,a7 ;nettoie la pile
movem.l (a7)+,d0-d4/a5 ;restaure d4 et a5
rts

comment: dc.b "MON PREMIER PROG EN ASM NOSTUB",0
texte1: dc.b "Salut !",0
texte2: dc.b "Ceci est mon premier prog",0
texte3: dc.b "en ASM nostub",0

21

22

merci =m=;, c ou la balise ?

23

24

zegoo :
C'est très gentil Flanker
Voilà j'ai fait un premier prog en nostub en repiquant pas mal de chose à Squale92 et M. K; j'ai tites questions:
où placer fontsetsys pour que çà marche et qui peut me dire où trouver la liste des romcalls parceque l'aide de tigcc c'est difficile si déjà on ne connait le nom des romcalls rechercées !

faut placer le fontsetsys avant le message que tu veux afficher, juste après le ST_HelpMsg
move.w #2,-(a7)
move.l  FontSetSys*4(a5),a0
jsr     (a0)
addq.l  #2,a7


j'ai pas encore retrouvé mon code, mais j'ai pas renoncé grin


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

25

26

Flanker, merci; je venais juste d'y arriver, en fait j'avais mis
move.l #2,-(a7) ; d'où l'erreur.

Martial, je ne suis pas débile, je suis juste super débutant en ASM et j'ai en prog en basic quirame pour les tris donc je voudrais apprendre à coder quelques routines en nostub pour l"améliorer.
Qu'est-ce que le kernel peut faire pour moi par rapport au nostub ?

27

le kernel t'offre qqes fonctions supplémentaires, c'est une surcouche du nostub
entre autres des ram_call (vois ça comme des rom_call supplémentaires bien pratiques)
des libs dynamiques (des fonctions qui ne sont pas disponibles en raom_call mais dans des programmes, et que tu peux utiliser dans tes programmes facilement), etc...
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

28

Concrêtement, les RAM_CALLs te permettent :
- De détecter automatiquement le matériel (modèle, version du HW, dimensions de l'écran), la version du système d'exploitation.
- D'avoir facilement accès à différentes ressources du système d'exploitation (rom_base, heap, folder_list_handle, ...)
- Que le programme renvoie une valeur au TIOS. (comme si c'était une fonction mathématique)
- Exécuter un programme
- Utiliser les librairies dynamiques à la volée
- Manipuler les pack archive
- D'émuler les fonctions exit et atexit standard

Bien sûr, tout cela est faisable en _nostub, mais le kernel met tout ça directement à ta disposition, cela a deux avantages : tu n'as pas besoin de réécrire le code nécessaire pour effectuer ces tâches (donc ton programme prend moins de place, en plus d'être plus rapide à écrire), et deuxièmement, comme les RAM_CALLs sont fournis par le kernel, si les calculatrices évoluent tu n'auras pas besoin de modifier ton programme pour prendre en compte les évolutions. Il suffira que l'utilisateur mette à jour son kernel.

Enfin, le kernel te permet aussi, en plus des RAM_CALL, d'utiliser des "Extra RAM Table", ce sont des sortes de variables qui ont une valeur pour les TI-89 et une autre pour les TI-92+ (très pratique car les dimensions de leurs écrans sont différentes).

Voilà, le kernel s'occupe également de certaines tâches très pratiques comme sauver/restaurer l'écran, vérifier que ton programme n'a pas de fuite de mémoire, etc...
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. »

29

Sasume : Ouaouh, c'est presque du chinois tout çà !!!
Je suis un super débutant qui n'arrive meme à afficher un sprite 8x8 alors c'est trop chaud pour le moment tout çà !
J'aimerais déjà trouver une liste de romcalls pour les utiliser avec l'aide de TIGCC mais je ne la trouve pas !

30

dans l'aide de tigcc, y a à peu près tout pourtant confus

affiche l'aide par le sommaire (dans le tableau de gauche), et déplie l'onglet headers files, ils correspondent plus ou moins aux thèmes

après, suffit de parcourir tout (ou de venir poser ta question ici)

sinon, pour le chinois de sasume, il y a quoi que tu ne comprends pas ?
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