Posté le 28/02/2012 à 11:06 Membre depuis le 10/03/2011, 279 messages
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
Posté le 29/02/2012 à 10:44 Membre depuis le 02/02/2009, 672 messages
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 ??

Posté le 29/02/2012 à 11:23 Membre depuis le 10/03/2011, 279 messages
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...
Posté le 03/03/2012 à 20:15 Membre depuis le 02/02/2009, 672 messages
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)
Posté le 04/03/2012 à 17:32 Membre depuis le 10/03/2011, 279 messages
Oui je connais mais après pour la modifier ? (l'appvar)
Posté le 06/03/2012 à 14:53 Membre depuis le 03/06/2011, 520 messages
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.
Posté le 06/03/2012 à 18:50 Membre depuis le 10/03/2011, 279 messages
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
Posté le 07/03/2012 à 10:25 Membre depuis le 10/03/2011, 279 messages
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.
Posté le 07/03/2012 à 16:43 Membre depuis le 03/06/2011, 520 messages
Tu veux faire quoi avec ton programme ? Peux-tu poster ton code ?
Posté le 07/03/2012 à 22:00 Membre depuis le 10/03/2011, 279 messages
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).
Posté le 08/03/2012 à 11:05 Membre depuis le 03/06/2011, 520 messages
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.
Posté le 08/03/2012 à 15:11 Membre depuis le 10/03/2011, 279 messages
Oui certes mais je suis un Macintosh user. grin
Posté le 08/03/2012 à 16:58 Membre depuis le 03/06/2011, 520 messages
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 !
Posté le 08/03/2012 à 21:19 Membre depuis le 10/03/2011, 279 messages
WabbitCode ?Non.
Posté le 09/03/2012 à 06:13 Membre depuis le 03/06/2011, 520 messages
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).
Posté le 09/03/2012 à 08:19 Membre depuis le 10/03/2011, 279 messages
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)