1

Hello,

avec le tutoriel de mdr1 sur le site du zér0 j'ai appris comment créer les Listes, des Matrices, des Programmes, etc.
Néanmoins, comment fait-on pour lire les données et/ou les modifier ? Je sais que le registre DE pointe sur le début mais je n'ai pas compris comment on l'utilisait.
Pourriez-vous m'aider ? Si j'ai bien compris, selon le type de variable (=liste matrice etc.) c'était différent...

Merci d'avance. smile

2

Je n'ai pas compris ta question en fait ...

Si tu as une variable nommée "mavariable" et définie comme ceci :
mavariable:
.db 0


Alors tu fais :
ld hl, mavariable ;mettre l'adresse dans hl
ld a, (hl) ; mettre le contenu de l'adresse dans a


Ensuite pour une liste :
maliste:
.db 0, 1, 0, 1, 0

On va chercher à récuperer le 3eme element par exemple :
ld d, 0 ; On va utiliser un registre 16 bits pour l'addition
ld e, 2 ; Le decalage 3 devient 2 car le premier element est en fait 0 et non 1
ld hl, maliste
add hl, de ; Le resultat est dans hl
ld a, (hl) ; j'ai bien ma valeur dans a


Pour une matrice il faut aussi gérer les y.
Voici ce que j'utilise dans Same Colors :
field:
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.db 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0
.db 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0
.db 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1

; e = x
; c = y
FIELD_SET:
push bc
push de
push hl
push af

; y * 12
ld a, c
add a, a
add a, a
ld b, a
add a, a
add a, b

; + x
ld b, e
add a, b

; Decalage dans le field
ld hl, field
ld d, 0
ld e, a
add hl, de

pop af
ld (hl), a

pop hl
pop de
pop bc

ret

; e = x
; c = y
; a = la valeur de la case
FIELD_GET:
push bc
push hl
push de

; y * 12
ld a, c
add a, a
add a, a
ld b, a
add a, a
add a, b

; + x
ld b, e
add a, b

; Decalage dans le field
ld hl, field
ld d, 0
ld e, a
add hl, de

ld a, (hl)

pop de
pop hl
pop bc

ret


Est-ce que ça répond à ta question ??

3

Ben si t'as une appvar pour un jeu par exemple ? Comment t'utilises le pointeur sur la mémoire (DE je crois) ? Parce que j'ai pas réussi...

4

Je ne sais pas trop mais il y a des procedures systemes en général pour trouver un appli/programme avec son nom.
(sur ti83 c'est par exemple call _CHKFINDSYM)

5

Oui je connais mais après pour la modifier ? (l'appvar)

6

Je crois que DE pointe sur les deux octets de la taille de la variable, alors il faudra d'abords l'augmenter deux fois (inc de \ inc de). Tu peux modifier les contenus avec a:
ld (de),a
ou tu peux aussi "ex de,hl", qui échange les valeurs d'hl et de (si de=5 et hl=10, après ex de,hl de sera 10 et hl sera 5) et tu peux utiliser plus de méthodes pour changer les valeurs.

7

D'accord merci c'est les deux octets que je ne comprenais pas par exemple quand je mettais le token 54 ou je ne sais quoi ça me mettait x points d'interrogation bref merci beaucoup. wink

8

Bon alors désolé du double post mais ça a fonctionné... avant que je me rendre compte que ca avait totalement corrompu ma mémoire flash, j'arrivais pas à supprimer le programme, il y en a qui apparaissaient en double, etc. bref j'ai dû faire un ram cleared.

9

Tu veux faire quoi avec ton programme ? Peux-tu poster ton code ?

10

Je voulais juste tester. Mon code ? Euh j'ai pas ma TI sur moi va falloir attendre demain (je code avec Mimas vu que WabbitCode fonctionne pas).

11

Ah je ne savais pas que tu le programmais sur ta TI. Tu peux aussi utiliser d'autres IDEs (ou EDI si tu veux wink) ou même Notepad, il y'en a un très bon pour Windows: [URL=http://www.ticalc.org/archives/files/fileinfo/158/15892.html]Asm Studio 8x[/URL]. Il est un peu vieux et utilise TASM (pas spasm), mais au moins il fonctionne. Je crois qu'il est plus facile et beaucoup plus agrèable de programmer sur un ordinateur.

12

Oui certes mais je suis un Macintosh user. grin

13

Et [URL=http://revsoft.tifreakware.net/phpBB3/viewtopic.php?f=4&t=56]WabbitStudio Mac[/URL] ne fonctionne pas pour toi ?! Je peux parler avec lui si tu veux pour voir ce qu'on peut faire pour qu'il fonctionne !

14

WabbitCode ?Non.

15

Ah bon. Que veux-tu modifier ? Un programme ? Il faut faire attention au type du variable (et ne pas dépasser la mémoire allouée au programme/variable).

16

A la base c'était un programme, pour voir si ça fonctionnait je voulais rentrer "If A=1" en tokens, et j'avais indiqué 4 en taille lors de la création du programme.
(je montrerai dès que possible le source)