comment jouer une note en asm sur VG5000µ ?

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

comment jouer une note en asm sur VG5000µ ?

Message par rendomizer »

Je cherche désespéramment de jouer une note mais un message d'erreur s'affiche a chaque tentative ??? J'utilise la routine call $008F page 76 "clefs pour VG5000"

Code : Tout sélectionner

.org $6000
_debut:    
          push hl
          ld bc,_buffer ; buffet ou sont stockés les notes
          ld e,6 ; longuer du buffet
          call $008F
          pop hl
          ret
_buffer:
.db $54,$32,$30,$43,$44,$45
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Carl »

Comment faire un sound et non un play "ABCD...."
Capture2.JPG
Capture2.JPG (56.56 Kio) Consulté 5407 fois
Capture.JPG
Capture.JPG (48.08 Kio) Consulté 5407 fois
Carl
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Carl »

Pour le Play...
Capture3.JPG
Capture3.JPG (38.1 Kio) Consulté 5403 fois
Capture4.JPG
Capture4.JPG (55.39 Kio) Consulté 5402 fois
Carl
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Daniel »

La routine $008F altère tous les registres, c'est écrit en bas de la page 76 de Clefs pour VG5000.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par rendomizer »

je n'y arrive pô. Toujours le même message d'erreur de syntax :shock:
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Mokona »

Envoie moi le code, je peux regarder.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment jouer une note en asm sur VG5000µ ?

Message par __sam__ »

Faire gaffe à la pile!!! La doc indique qu'il faut pusher un truc bidon après l'addresse de retour (la routine play se plante avec la pile). Cf l'exemple avec la routine playx au paragraphe 27.2. Un décalage sur la pile peut provoquer des erreurs bizarres, comme par exemple des fausses syntax-error.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par rendomizer »

Mokona a écrit : 06 sept. 2017 21:02 Envoie moi le code, je peux regarder.

Code : Tout sélectionner

.org $6000
    
          ld bc,_buffer ; buffet ou sont stockés les notes
          ld e,6 ; longuer du buffet
_debut:         
          call $008F
          jp _debut
_buffer:
.db $54,$32,$30,$43,$44,$45
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Mokona »

Voilà ma proposition (l'assembleur est un peu différent dans la syntaxe, mais la transcription est aisée)

Comme indiqué dans la documentation ci-dessus, il faut ajouter sur la pile, après l'adresse de retour mise par le call, une valeur qui ne servira pas.

Ceci est du à la manière dont la commande est appelée (et que je n'ai pas fini d'analyser).

L'astuce classique est donc de mettre sur la pile l'adresse de retour avec un call (l'interprêteur BASIC lui, fait ça à la main, ça serait aussi une solution valide, cf. $250a dans la ROM 1.1), puis d'embrayer sur un JP (qui lui ne touche pas la pile), avec la manipulation de la pile entre temps.

Code : Tout sélectionner

org $6000
_debut:
          ld bc,_buffer ; buffet ou sont stockés les notes
          ld e,6 ; longueur du buffer
          call play
          ret
play:
          push hl
          jp $008F
_buffer:
          defb $54,$32,$30,$43,$44,$45
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment jouer une note en asm sur VG5000µ ?

Message par joaopa »

Un call suivi d'un ret. Mes yeux saignent :mrgreen:
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par rendomizer »

Ca marche ouf, un grand merci pour cette démonstration de code. Mon VG5000 n'a rien compris :D
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13253
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Carl »

faire un grand merci à tous les intervenants dans ton post aurait été un plus... :roll:

Carl
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par Mokona »

Pour le bien être des yeux de joaopa, qui me semblent dangereusement rouge, je précise que ce squelette d'appel est une forme générale qui permet du code avant et après le call.

Si la pile contient l'adresse de retour de l'appel de "_debut" au moment du "call play" et qu'il n'y a rien à faire entre ce call et le ret, alors la paire "push hl" "jp $008F" suffit.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: comment jouer une note en asm sur VG5000µ ?

Message par rendomizer »

Un grand merci à tous les intervenants du forum vous avez été choux
Je ne suis qu'un utilisateur pas un pro
joaopa
Messages : 512
Inscription : 14 sept. 2013 12:17

Re: comment jouer une note en asm sur VG5000µ ?

Message par joaopa »

Bonjour à tous. Ce bug est vraiment étrange. Et comme je voudrais mourrir moins con, j'espère que quelqu'un pourra m'expliquer

Ceci fonctionne

Code : Tout sélectionner

play:
     push hl
     jp 0a87h
buffer: db "ABCDE"                
                
monsuperprogramme:
    ld bc,buffer
    ld e,5
    call play
MAIS ceci ne fonctionne pas (pile non valide)

Code : Tout sélectionner

buffer: db "ABCDE"

monsuperprogramme: 
    ld bc,buffer
     push hl
     call 0a87h
Quelqu'un saurait-il pourquoi?
Répondre