Bonjour a tous. Je suis nouveau sur ce site et j'aimerai que l'on m'aide. A savoir comment injecter du code assembleur dans un émulateur msx.
mon site vg5000µ
!login ou Inscrivez-vous pour poster
Bonjour a tous. Je suis nouveau sur ce site et j'aimerai que l'on m'aide. A savoir comment injecter du code assembleur dans un émulateur msx.
mon site vg5000µ
Bienvenue,
La methode la plus simple est soit de créer un fichier .DSK dans lequel vous y mettez votre fichier binaire, soit un fichier .ROM.
L'entête d'un fichier binaire fait 7 octets (FEh, adresse de début, adresse de fin, adresse de d'execution).
Exemple en assembleur :
org 8500h Header: db FEh dw start,end,start start: ;votre programme à la place de cette ligne end:
L'entête d'un fichier ROM fait 16 octets (41h,42h, adresse de d'execution, et le reste de zero)
Exemple en assembleur :
org 04000h Header: db 41h,42h dw start,0,0,0,0,0,0 start: ;votre programme à la place de cette ligne end: ds end-04000h
Jetez un oeuil dans le "wiki -> Programming" du site pour connaitre la carte de la mémoire ou autre. Ça peut aider.
un simple "hello world" pour commencer ...
J'ai essaillé mais sans resultat l'application msx2cas reconnait le fichier msx cas: bin mais je ne retrouve pas les données dans la mémoire en 8500h ???
Bienvenue,La methode la plus simple est soit de créer un fichier .DSK dans lequel vous y mettez votre fichier binaire, soit un fichier .ROM.
L'entête d'un fichier binaire fait 7 octets (FEh, adresse de début, adresse de fin, adresse de d'execution).
rendomizer wrote :
.org $c000 Header: .db $FE .dw start,end,start ; bios call to print a character on screen CHPUT: .db $00a2 ; the address of our program start: ld hl, message mainLoop: ld a, (hl) cp 0 ret z call CHPUT inc hl jr mainLoop message: .db "Hello world!",0 ; use the label "start" as the entry point end:Ca marche pô !?
Remplacez les deux lignes suivantes :
CHPUT: .db $00a2
Par celle-ci :
CHPUT .equ $00a2
J'ai testé avec http://clrhome.org/asm/
ça marche. Essayez de trouver un assembleur plus standard, ça vous évitera de devoir modifier les instructions tout le temps.
merci gdx. Pourquoi le label CHPUT n'a pas de " : " ? Quelle différence y a t il entre " equ et dw " ?
Les deux points sont là pour indiquer que le label prendra la valeur de l'adresse de cet endroit à la compilation, equ c'est pour spécifier une adresse soit-même et lorsqu'il n'y a rien, le label prend l'adresse déjà spécifiée par les deux point ou equ.
merci gdx
Pourquoi le sprite 2 a les mêmes data que le sprite 1 ???
https://msxpen.com/codes/-LQk83dB-TkifzQwBs-y
Selon la taille des sprites (8 ou 16), il y a une table de 64 ou 256 formes de sprite pour définir jusqu'à 32 sprites. Chaque sprite peu utiliser la même forme ou une différente. Je n'ai pas le temps de fouiller dans ton programme mais tu as sans doute spécifié la même forme pour ces deux sprites.
Don't you have an account yet? Become an MSX-friend and register an account!