6809 Assembly Language dans un environnement Windows 10 moderne

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
jonesypeter
Messages : 33
Inscription : 08 mai 2021 15:33
Localisation : West Sussex, Great Britain

Re: 6809 Assembly Language dans un environnement Windows 10 moderne

Message par jonesypeter »

Merci pour toute l'aide apportée. J'ai utilisé l'interface disque TO7/70.

Je suis désolé de dire que j'ai encore des problèmes.

Je travaille sur le livre "make games in assembler" en parallèle avec la lecture d'autres livres généraux sur le 6809.

http://dcmoto.free.fr/documentation/fai ... index.html

Le premier exemple des pages 20 et 21 fonctionne comme prévu, mais lorsque j'essaie d'exécuter le deuxième exemple de la page 23, je n'obtiens qu'une série de points en haut de l'écran.

Voici le code source :

Code : Tout sélectionner

(main)MAIN.ASM   * Marquage du programme principal
	ORG $A000
PUTC	EQU $E803
ECRAN	PSHS U,Y,X,DP,D,CC
        LDU #TABLE
DEBUT	LDB ,U+
        CMPB #4
        BEQ FIN
        JSR PUTC
        BRA DEBUT
FIN	PULS U,Y,X,DP,D,CC,PC

TABLE	FCB $1B
        FCB $44
        FCB $1B
        FCB $53
        FCB $1B
        FCB $60
        FCB $0C
        FCB $14
        FCB $04	
        END
Voici le résultat de la compilation:

Code : Tout sélectionner

/*--------------------------------------------------------------*
 * Compilé avec C6809 v0.83                                     *
 *--------------------------------------------------------------*
 * Fichier source      : exemple.ass
 * Fichier destination : PROGRAM.BIN
 * Contenu :
 *     Main     0:MAIN.ASM     276
 *--------------------------------------------------------------*/

Macro Pass
Pass1
Pass2
      2        A000                      ORG $A000
      3                  E803     PUTC   EQU $E803
      4  5+10  A000 34   7F       ECRAN  PSHS U,Y,X,DP,D,CC
      5  3     A002 CE   A012             LDU #TABLE
      6  4+2   A005 E6   C0       DEBUT  LDB ,U+
      7  2     A007 C1   04               CMPB #4
      8  3     A009 27   05               BEQ FIN
      9  8     A00B BD   E803             JSR PUTC
     10  3     A00E 20   F5               BRA DEBUT
     11  5+12  A010 35   FF       FIN    PULS U,Y,X,DP,D,CC,PC
     12
     13        A012 1B            TABLE  FCB $1B
     14        A013 44                    FCB $44
     15        A014 1B                    FCB $1B
     16        A015 53                    FCB $53
     17        A016 1B                    FCB $1B
     18        A017 60                    FCB $60
     19        A018 0C                    FCB $0C
     20        A019 14                    FCB $14
     21        A01A 04                    FCB $04
     22                  0000             END

000000 Total Errors

000005 Total Symbols
     1x          Label A005 DEBUT
     0x          Label A000 ECRAN
     1x          Label A010 FIN
     1x          Equ   E803 PUTC
     1x          Label A012 TABLE
Je charge le disque et tape

Code : Tout sélectionner

loadm "PROGRAM.BIN",40960,r
J'ai vérifié deux fois que tous les opérandes correspondent au texte, et que les adresses sont les mêmes.

Merci
codes.zip
Comprend Codes.lst, disk.sap, program.bin et exemple.ass.
(9.54 Kio) Téléchargé 89 fois
Site Web et forum My Sinclair ZX Spectrum

J'utilise DeepL et Google Traduction
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: 6809 Assembly Language dans un environnement Windows 10 moderne

Message par Daniel »

La mémoire a-t-elle été réservée avec l'instruction CLEAR avant de charger le programme ?
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
jonesypeter
Messages : 33
Inscription : 08 mai 2021 15:33
Localisation : West Sussex, Great Britain

Re: 6809 Assembly Language dans un environnement Windows 10 moderne

Message par jonesypeter »

Daniel a écrit : 15 mai 2021 12:51 La mémoire a-t-elle été réservée avec l'instruction CLEAR avant de charger le programme ?
I tried

Code : Tout sélectionner

clear,&H9FFF

Code : Tout sélectionner

loadm"PROGRAM.BIN",40960,r
but still get the same issue with just dots at the top of the screen.
Site Web et forum My Sinclair ZX Spectrum

J'utilise DeepL et Google Traduction
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: 6809 Assembly Language dans un environnement Windows 10 moderne

Message par __sam__ »

Ton programme commence par "ORG $A000", ce qui signifie qu'il a une adresse de chargement. Plus tard tu fais:

Code : Tout sélectionner

loadm "PROGRAM.BIN",40960,r
La valeur centrale (40960) n'est pas vraiment une adresse de chargement, mais un décalage (translation).
Sans titre.png
Sans titre.png (174.91 Kio) Consulté 2101 fois
C'est à dire que dans ce cas ton programme sera chargé et lancé en $A000 (<== donné par le ORG) + 40690 (<== donné par le paramètre du LOADM) = $4000. Or $4000 est le début de l'adresse vidéo: le haut de l'écran. Les petits points que tu vois sont ton programme :!: :mrgreen:

Donc tout est normal en un sens, mais ca n'est pas ce que tu veux faire. Ce qu'il te faudrait c'est juste faire un LOADM "PROGRAM.BIN" sans aucun argument en plus, puis un EXEC 40960 ou EXEC &HA000 pour le lancer.

:idea: Une autre possibilité bien plus pratique est de:
  1. Toujours utiliser "ORG" en tête de programme pour lui donner une adresse de chargement, et surtout ajouter l'adresse de lancement après le END final. (L'adresse de lancement peut être différente de l'adresse de chargement suivant les programmes.)

    Code : Tout sélectionner

    (main)PROGRAM
    	ORG $A000
    
        ...code/données... 
    
     START
        ...point d'entrée...
            END START
  2. Réserver la mémoire du programme par le basic de sorte que ce dernier ne l'écrase pas (le -1 est important):

    Code : Tout sélectionner

    CLEAR,&HA000-1
  3. Charger et lancer le programme sans décalage en laissant vide le 2nd argument du LOADM:

    Code : Tout sélectionner

    LOADM "PROGRAM.BIN",,R
Ainsi le programme se charge automatiquement à l'adresse précisée dans le ORG et lancé à l'adresse précisée dans le END, le tout sans écraser si être écrasé par le BASIC.
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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: 6809 Assembly Language dans un environnement Windows 10 moderne

Message par Daniel »

Le fichier binaire PROGRAMME.BIN a une adresse de chargement en $A000.

program.png
program.png (3.55 Kio) Consulté 2095 fois


Le premier paramètre de LOADM est un déplacement par rapport à l'adresse normale.
Avec LOADM"PROGRAMME.BIN",40960 le fichier se charge en $A000 + 40960 = $4000, donc en mémoire écran.

Pour le charger et l'exécuter, il faut taper :

Code : Tout sélectionner

LOADM"PROGRAM.BIN",,R
[Edit] __sam__ a été plus rapide :wink:
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
jonesypeter
Messages : 33
Inscription : 08 mai 2021 15:33
Localisation : West Sussex, Great Britain

Re: 6809 Assembly Language dans un environnement Windows 10 moderne

Message par jonesypeter »

Merci beaucoup Samuel et Daniel. Très appréciée. J'en ai assez maintenant pour me faire travailler.
Site Web et forum My Sinclair ZX Spectrum

J'utilise DeepL et Google Traduction
Répondre