[Thomson] DCMOTO nouveau

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 4622
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] DCMOTO nouveau

Message par __sam__ » 16 avr. 2016 12:19

MO5 et MO6 ou uniquement MO5 ?
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
Xavier
Messages : 1000
Enregistré le : 03 avr. 2014 14:42

Re: [Thomson] DCMOTO nouveau

Message par Xavier » 16 avr. 2016 12:23

Merci Daniel pour le temps passé à perfectionner cet émulateur, empreint d'un travail passionné et studieux.

Daniel
Messages : 11702
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel » 16 avr. 2016 14:15

__sam__ a écrit :MO5 et MO6 ou uniquement MO5 ?
Uniquement MO5. Il reste à faire pareil pour les autres modèles, mais quand il y a plusieurs banques de RAM et un registre de palette ça complique un peu la restauration. Je donne le code de restauration sur MO5 si quelqu'un veut prendre la suite. Dans l'immédiat je me repose un peu 8) En fait non, j'ai d'autres projets à terminer, en particulier l'émulation du 6309 et du MEA8000. Vous avez peut-être vu les prémices dans les options de dcmoto_nouveau.

Code : Tout sélectionner

*==============================
* Secteur de boot
* Charge le secteur 2 en $9E00
*==============================

 ORG  $2200
 FDB  $E082   $207E (BRA DEBUT) crypte
 ORG  $227F
 FCB  $F3     checksum
 
DEBUT
 LDU  #$2048  adresse code commande 
 LDX  #$9E00  adresse buffer
 STX  $07,U
 LDX  #$0000  unite 0 piste 0
 STX  $02,U
 LDA  #$02    secteur 2
 STA  $04,U
 LDB  #$02    code operation lecture
 STB  $00,U
 SWI
 FCB  $26     lecture secteur
 JMP  $9E00   execution sdload5

 END 

Code : Tout sélectionner

/**************************************************\
*                 S D L O A D 5                    * 
*           (c) 2016 - Daniel Coulom               *  
*           http://dcmoto.free.fr/                 *
*           http://forum.system-cfg.com/           *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune  garantie  et *
* sans  engager  la  responsabilité  de  l'auteur. *
* Vous  pouvez  l' utiliser,  le  modifier  et  le *
* diffuser librement, en conservant cette  licence *
* et les références de l'auteur dans   toutes  les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/

* Ce programme permet de restaurer sur un ordinateur
* Thomson une sauvegarde de dcmoto sur carte SD de
* l'etat de la memoire et des registres du MO5.
* Il initialise toute la ram sauf dernier bloc et
* lance le programme SDRUN5 charge en $1F40 et
* duplique dans les deux banques de RAM video.
* Les ports $A7C0-$A7CF sont sauves en $1FC0
* Les registres du microprocesseur en $1FD0

* SDMOTO utilise le 2eme port joystick
* Port A $A7CC
* PA5 en sortie --> SD Clock     SCK  DB9 pin 2
* PA6 en sortie --> SD Data IN   MOSI DB9 pin 3
* PA7 en entree <-- SD Data OUT  MISO DB9 pin 4
*
* SDMO utilise le port magnetophone
* Port A $A7C0 pour les donnees 
* PA6 en sortie --> SD Data IN   MOSI DB9 pin 3
* PA7 en entree <-- SD Data OUT  MISO DB9 pin 4
* Port B $A7C2 pour l'horloge
* PA3 en sortie --> SD Clock     SCK  DB9 pin 2


/**************************************************\
*                Version 2016.04.08                *
\**************************************************/
* Historique
* 2016.04.08 apres optimisation fonctionne avec SDHC 
* 2016.04.03 sdrun5 est maintenant separe de sdload5
* 2015.07.01 version pour MO5 seul
* 2015.06.14 premiere version operationnelle sur MO5
* 2015.06.13 debut du projet


*------------------------------------------------------
* DEBUT DU PROGRAMME
*------------------------------------------------------
  ORG   $9E00 
  BRA   INIT          initialisations 
  FDB   RBYTE         adresse routine RBYTE

*------------------------------------------------------
* FONCTION DE LECTURE DE LA CARTE SD
*------------------------------------------------------
CMD18
  FCB   $52           read multiple block
  FDB   $0000         adresse bloc (poids fort)
  FDB   $0000         adresse bloc (poids faible)
  FCB   $FF           checksum non testee 
  FCB   $00           code retour attendu  

*------------------------------------------------------
* Initialisations MO5
*------------------------------------------------------
INIT
  ORCC  #$50
  LDD   $208E         octets poids fort adresse
  STD   CMD18+1       stockage pour commande CMD18
  LDD   $2090         octets poids faible adresse
  STD   CMD18+3       stockage pour commande CMD18
  LDA   #$A7          valeur initialisation DP pour MO
  TFR   A,DP          initialisation DP
  LDS   #$9FFF        S pointe en zone preservee

* Modification routine lecture SD pour interface SDMO
  LDA   $A6FF         numero banque CS91-280
  CMPA  #$B0          test banque B0
  BEQ   INIT2         CS91-280 est en mode SDMOTO 
  LBSR  RBSDMO        modification RBYTE pour SDMO
  BRA   INIT3         suite des initialisations

* Initialisation PIA pour SDMOTO
INIT2
  LDA   <$CE          lecture registre de controle A
  ANDA  #$FB          raz bit 2 
  STA   <$CE          selection DDRA
  LDB   #$60          set bits 5 et 6
  STB   <$CC          bits MOSI et CLOCK en sortie
  ORA   #$04          set b2
  STA   <$CE          selection PA

*------------------------------------------------------
* Lancement de la commande CMD18 et saut de deux blocs 
*------------------------------------------------------
INIT3
  LDU   #CMD18        adresse commande CMD18
  JSR   $A028         EXCMD = execution commande
  BSR   SAUT          lecture bloc (secteur de boot)
  BSR   SAUT          lecture bloc (secteur sdload5)

*------------------------------------------------------
* CHARGEMENT MEMOIRE VIDEO COULEURS
*------------------------------------------------------
  LDA   <$C0          lecture port a du pia systeme
  ANDA  #$FE          selection video couleur 
  STA   <$C0          modification port a
  LDY   #$0000        adresse memoire video 
  LDB   #$10          16 blocs = 8K
  BSR   LOAD          chargement 16 blocs video couleur
      
*------------------------------------------------------
* CHARGEMENT MEMOIRE VIDEO FORMES et RAM UTILISATEUR
* Le dernier bloc n'est pas chargé pour ne pas
* ecraser ce programme 
*------------------------------------------------------
  INC   <$C0          selection video formes
  LDY   #$0000        adresse memoire video 
  LDB   #$4F          79 blocs a lire
  BSR   LOAD          chargement 79 blocs

*------------------------------------------------------
* Lancement de SDRUN5 pour chargement du dernier bloc
*------------------------------------------------------
LASTB
  BSR   RBYTE         lecture octet
  CMPA  #$FE          comparaison avec $FE
  BNE   LASTB         attente debut secteur
  LDS   #$1FFF        pile en memoire video
  JMP   $1F40         lancement du chargement 

*------------------------------------------------------
* CHARGEMENT A L'ADRESSE Y DE B BLOCS DE 512 OCTETS 
*------------------------------------------------------
LOAD
  PSHS  B             compteur de boucles  
LOAD1
  BSR   RBYTE         lecture octet
  CMPA  #$FE          comparaison avec $FE
  BNE   LOAD1         attente debut secteur
  LDX   #$0200        initialisation compteur
LOAD2
  BSR   RBYTE         lecture d'un octet
  STA   ,Y+           stockage octet lu
  LEAX  -1,X          decrementation compteur
  BNE   LOAD2         nouvelle lecture
  BSR   RBYTE         lecture CRC1
  BSR   RBYTE         lecture CRC2
  DEC   ,S            decremente compteur
  BNE   LOAD1         chargement bloc suivant
  PULS  B,PC          depilage B et retour
  
*------------------------------------------------------
* Saut de 512 octets 
*------------------------------------------------------
SAUT
  BSR   RBYTE         lecture octet
  CMPA  #$FE          comparaison avec $FE
  BNE   SAUT          attente debut secteur
  LDX   #$0200        initialisation compteur
SAUT1
  BSR   RBYTE         lecture d'un octet
  LEAX  -1,X          decrementation compteur
  BNE   SAUT1         nouvelle lecture
  BSR   RBYTE         lecture CRC1
  BSR   RBYTE         lecture CRC2
  RTS                 retour

*------------------------------------------------------
* LECTURE D'UN OCTET (SDMOTO) = 175 cycles
* Valeur de l'octet dans le registre A en sortie
*------------------------------------------------------
RBYTE
  LDA   #$FE          b0 marqueur fin de boucle (2)
RBYTE1      
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$CC          clock high, di high       (4)
  CMPB  <$CC          PA b7 (bit lu) -> carry   (4)
  LDB   #$5F          clear bit 5               (2)
  STB   <$CC          clock low, di high        (4)
  ROLA                C (bit lu) -> b0 reg A    (2)
  BCS   RBYTE1        suite de la boucle        (3) 
  RTS                 retour (octet dans A)     (5)

*------------------------------------------------------
* LECTURE D'UN OCTET (SDMO) = 175 cycles
* Valeur de l'octet dans le registre A en sortie
*------------------------------------------------------
RBYTE2
  LDA   #$FE          b0 marqueur fin de boucle (2)
RBYTE3      
  LDB   #$7F          set bit 3                 (2)  
  STB   <$C2          clock high                (4)
  CMPB  <$C0          read bit (PA b7) dans CC  (4) 
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4)
  ROLA                C (bit lu) -> b0 reg A    (2)
  BCS   RBYTE3        suite de la boucle        (3) 
  RTS                 retour (octet dans A)     (5)

*------------------------------------------------------
* REMPLACEMENT DE LA ROUTINE RBYTE POUR SDMOTO
* PAR LA ROUTINE RBYTE2 POUR SDMO
*------------------------------------------------------
RBSDMO
  LDY   #RBYTE2       adresse routine SDMO   
  LDX   #RBYTE        adresse routine RBYTE
RBSDMO1
  LDB   ,Y+           lecture routine SDMO
  STB   ,X+           ecriture routine RBYTE
  CMPX  #RBYTE2       test de fin
  BNE   RBSDMO1       nouvelle boucle
  RTS                 retour
       
  END

Code : Tout sélectionner

/**************************************************\
*                  S D R U N 5                     * 
*           (c) 2016 - Daniel Coulom               *  
*           http://dcmoto.free.fr/                 *
*           http://forum.system-cfg.com/           *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune  garantie  et *
* sans  engager  la  responsabilité  de  l'auteur. *
* Vous  pouvez  l' utiliser,  le  modifier  et  le *
* diffuser librement, en conservant cette  licence *
* et les références de l'auteur dans   toutes  les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/

* Ce programme fait suite a la restauration de la
* memoire du MO5 par SDLOAD5. Il charge le dernier
* bloc en $9E00-$9FFF, restaure les ports des PIA,
* les registres du processeur et lance l'execution.
* Il est charge en $1F40 dans les deux banques de
* la memoire video, pour permettre la modification
* de $A7C0 pendant l'execution du programme.
* Les ports $A7C0-$A7CF sont stockes en $1FC0
* Les registres processeur sont stockes en $1FD0


/**************************************************\
*                Version 2016.04.05                *
\**************************************************/
* Historique
* 2015.04.05 restauration ports PIA systeme et manettes 
* 2015.04.04 pogramme duplique dans les 2 banques video
* 2016.04.03 premiere version operationnelle

*------------------------------------------------------
* DEBUT DU PROGRAMME
*------------------------------------------------------
  ORG   $1F40 
  
*------------------------------------------------------
* COPIE DE LA ROUTINE DE LECTURE D'UN OCTET
* CETTE ROUTINE EST PROGRAMMEE DANS SDLOAD5
* SON ADRESSE EST STOCKEE EN $9E02
*------------------------------------------------------
SDRUN
  LDY   $9E02         adresse routine RBYTE a copier
  LDX   #RBYTE        adresse copie de la routine RBYTE
  LDB   #$10          nombre d'octets a copier
SDRUN1
  LDA   ,Y+           lecture octet 
  STA   ,X+           copie octet 
  DECB                decremente le compteur
  BNE   SDRUN1        boucle de copie

*------------------------------------------------------
* LECTURE DU DERNIER BLOC EN $9E00
*------------------------------------------------------
  LDY   #$9E00        adresse de chargement
SDRUN2
  BSR   RBYTE         lecture d'un octet
  STA   ,Y+           stockage de l'octet
  CMPY  #$A000        test de fin
  BNE   SDRUN2        nouvelle lecture

*------------------------------------------------------
* RETABLISSEMENT ETAT NORMAL DU PIA MUSIQUE ET JEUX
*------------------------------------------------------
  LDD   #$0000        valeur pour CRA-CRB 
  STA   <$CE          selection DDRA-DDRB
  LDB   #$3F          definition directions
  STD   <$CC          selection directions
  LDD   #$0404        valeur pour CRA-CRB
  STD   <$CE          selection PA-PB
  LDD   #$FFC0        valeur pour PA-PB
  STD   <$CC          initialisation PA-PB

*------------------------------------------------------
* RESTAURATION DES REGISTRES DES PIA
*------------------------------------------------------
  LDD   PIA           valeurs PA-PB du PIA systeme
  STD   <$C0          restauration PA-PB systeme
  LDD   PIA+12        valeurs PA-PB du PIA manettes
  STD   <$CC          restauration PA-PB manettes

*------------------------------------------------------
* CHARGEMENT DES REGISTRES ET EXECUTION
*------------------------------------------------------
  LDD   REG+4         valeur future registre S
  SUBD  #$1FFF        difference valeur actuelle
  STD   SDRUN9+2,PCR  stocke increment pour LEAS
  LDD   REG+8         registres DP et CC
  PSHS  B             empilage valeur pour CC
  TFR   A,DP          retablissement registre DP
  LDD   REG+10        retablissement registre D
  LDX   REG           retablissement registre X
  LDY   REG+2         retablissement registre Y
  LDU   REG+6         retablissement registre U
  PULS  CC            retablissement registre CC
SDRUN9                    
  LEAS  $FFFF,S       retablissement registre S
  JMP   [REG+12]      retablissement registre PC

*------------------------------------------------------
* LECTURE OCTET SDMOTO ou SDMO
*------------------------------------------------------
RBYTE
  RMB   16            reserve 16 octets pour RBYTE

*------------------------------------------------------
* ZONES DE SAUVEGARDE PIA ET REGISTRES
*------------------------------------------------------
  ORG   $1FC0
PIA
  RMB   16            reserve zone stockage $A7C0-$A7CF   
REG
  RMB   14            zone stockage registres
        
  END
Daniel
L'obstacle augmente mon ardeur.

gm03
Messages : 80
Enregistré le : 16 avr. 2016 15:31

Re: [Thomson] DCMOTO nouveau

Message par gm03 » 16 avr. 2016 15:34

Merci Daniel pour cet ajout ! Enfin je peux accéder à des titres qui ont bercé mon enfance ! (Lorann, Las Vegas ...)

__sam__
Messages : 4622
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] DCMOTO nouveau

Message par __sam__ » 18 avr. 2016 09:02

Daniel a écrit :Ce matin nouvelle version 2016.04.16 de dcmoto_nouveau à http://dcmoto.free.fr/emulateur/index.html
Le site, le zip, le binaire et la doc du zip parlent tous de 2015.06.04. Je n'ai pas trouvé la 2016.04.16. Il y a un truc?
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11702
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel » 18 avr. 2016 09:55

La version 2015.06.04 de dcmoto est la dernière version "stable" diffusée.
L'annonce de la création de fichiers mrx_mo5.sd concerne uniquement la dernière version beta en cours de développement, intitulée dmoto_nouveau, comme indiqué dans le titre du fil de discussion.
La voici : http://dcmoto.free.fr/emulateur/dcmoto_nouveau.zip

Cette version est aujourd'hui la 2016.04.16 mais elle change très fréquemment. Il y en aura peut-être une nouvelle demain. Vous l'utilisez à vos risques et périls. En particulier l'émulation du 6309 est en chantier et ne fonctionne pas. J'ai commencé à ajouter quelques instructions mais il en manque encore beaucoup.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
jb_jb_fr
Messages : 319
Enregistré le : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: [Thomson] DCMOTO nouveau

Message par jb_jb_fr » 18 avr. 2016 10:08

Daniel a écrit :En particulier l'émulation du 6309 est en chantier et ne fonctionne pas. J'ai commencé à ajouter quelques instructions mais il en manque encore beaucoup.
Ah....
Je vois que certains font comme les petits copains :-) :-)

__sam__
Messages : 4622
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] DCMOTO nouveau

Message par __sam__ » 18 avr. 2016 10:59

Ah ok. C'est que ton message avec le support des états MO5 était ambigu puisqu'il pointait sur la dernière version officielle et pas le zip de dcmoto_nouveau. En plus comme les dates correspondaient, on aurait pu croire sans problème à une typo (2016->2015).
Cette version est aujourd'hui la 2016.04.16 mais elle change très fréquemment. Il y en aura peut-être une nouvelle demain. Vous l'utilisez à vos risques et périls. En particulier l'émulation du 6309 est en chantier et ne fonctionne pas. J'ai commencé à ajouter quelques instructions mais il en manque encore beaucoup.
Tu fais une émulation au cycle près ? Ca veut dire qu'en mode natif 6309 les instructions 6809 seront encore plus rapides. 8)

JB: quand on voit le gain de performance sur OS9 via l'utilisation du 6309 on peut regretter que le TO9+ à vocation professionnelle n'en ait pas été équipé, mais l'un (6309) est de 1988 et l'autre (TO9+) de 1986. Or je pense qu'en 1988 l'avenir du 6809 chez Thomson devait être scellée et que la R&D était passé à autre chose (68000 et compatible PC).
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11702
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel » 18 avr. 2016 12:04

Daniel a écrit :Je vois que certains font comme les petits copains :-) :-)
Je crois que nous cherchons tous à obtenir les meilleures performances possibles des Thomson, il est normal que nous avancions dans la même direction. L'idée d'utiliser le 6309 pour améliorer les temps d'accès à la carte SD date déjà de deux ans, nous avions évoqué le sujet à l'époque. D'ailleurs, depuis au moins un an mon MO5 fonctionne avec un HD63C09EP. J'ai fait alors quelques tests en mode 6309, mais depuis il est resté en mode émulation et je n'ai constaté aucune différence avec le 6809. Il y en a quelques-unes, mais en utilisation normale on a peu de chances de les rencontrer.

L'ajout du 6309 à dcmoto a pour but de permettre de développer et tester sur PC, c'est beaucoup plus pratique que sur la vraie machine. Evidemment le nombre de cycles sera respecté, et on pourra voir les gains de vitesse en émulation. Aujourd'hui on a une vitesse de 5600 octets/seconde en lecture de la carte SD. J'espère pouvoir la doubler grâce aux quelques cycles gagnés sur les instructions, mais surtout grâce aux registres supplémentaires.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
jb_jb_fr
Messages : 319
Enregistré le : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: [Thomson] DCMOTO nouveau

Message par jb_jb_fr » 18 avr. 2016 14:40

La seule vrai instruction qui fasse gagner du temps et beaucoup de cycle est l'instrucion TFM.
Hormis celle ci, je n'ai pas vraiment vu de gain.
Certaines sont tres pratique : OIM, AIM, EIM
On gagne un peu en gain, mais surtout en taille du code.


Si vraiment tu voudrais gagner en vitesse, il faudrait mettre le 6309 en mode natif, et pas en mode émulé.
Mais malheureusement, pour faire cela il faut réecrire une partie du basic du Thomson.
Car dans ce mode (natif), lorqu'il y a une interuption, il y a 2 nouveau registre sauvé sur la pile (E/F).
C'est surtout cette particularité qui m'a posé de gros gros probleme avec OS9

__sam__
Messages : 4622
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] DCMOTO nouveau

Message par __sam__ » 18 avr. 2016 15:48

En émulation 6809 sur 6309 on a quand même accès à des registres supplémentaires (accu) et c'est quand même plus rapide de passer par ces registres que de passer par la RAM. Je crois que pour la lecture de carte SD on avait étudié ca, mais là google est incapable de retrouver les pages correspondantes (c'est moi, ou c'est google qui est de plus en plus mauvais?).
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11702
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel » 18 avr. 2016 16:00

jb_jb_fr a écrit :Si vraiment tu voudrais gagner en vitesse, il faudrait mettre le 6309 en mode natif, et pas en mode émulé.
Bien évidemment mon projet est d'utiliser le 6309 en mode natif. Pas besoin de réécrire le Basic pour ça. Tu n'imagines quand même pas que j'accède à la carte SD en Basic :wink: :wink: :wink:

Comme je l'ai écrit ci-dessus, et comme __sam__ l'a bien compris, les registres supplémentaires font gagner un temps précieux en évitant des empilages/dépilages et des accès mémoire, en particulier pour la génération de l'horloge SPI. En y ajoutant le gain de cycles, j'espère améliorer considérablement la vitesse de transmission. Je n'ai pas encore quantifié le gain de temps, mais si vous voulez le faire voici le code à optimiser :

Code : Tout sélectionner

*------------------------------------------------------
* LECTURE D'UN OCTET (SDMOTO) = 175 cycles
* Le registre B n'est pas préservé
* Valeur de l'octet dans le registre A en sortie
* Optimisation du compteur de boucle par Samuel
* Optimisation transfert b7 avec CMPB par Daniel
*------------------------------------------------------
RBYTE
  LDA   #$FE          b0 marqueur fin de boucle (2)
RBYTE1      
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$CC          clock high, di high       (4)
  CMPB  <$CC          PA b7 (bit lu) -> carry   (4)
  LDB   #$5F          clear bit 5               (2)
  STB   <$CC          clock low, di high        (4)
  ROLA                C (bit lu) -> b0 reg A    (2)
  BCS   RBYTE1        suite de la boucle        (3) 
  RTS                 retour (octet dans A)     (5)
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
jb_jb_fr
Messages : 319
Enregistré le : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: [Thomson] DCMOTO nouveau

Message par jb_jb_fr » 18 avr. 2016 16:51

Daniel a écrit :Bien évidemment mon projet est d'utiliser le 6309 en mode natif. Pas besoin de réécrire le Basic pour ça. Tu n'imagines quand même pas que j'accède à la carte SD en Basic :wink: :wink: :wink:
Oulala

Daniel, relis bien la doc du 6309.
Je te rappel, que les appel au noyau (donc les appels pour afficher un caractere, lire le clavier, faire une ligne, etc) se font au moyen de l'instruction SWI, qui est une Interuption logicielle.

Qui dit interuption dit empilage des registres sur la pile.
Et si un appel systeme est fait avec une transmission de parametre (dans A, dans B, dans X, etc) les offsets pour aller chercher les parametres dans la pile ne sont plus les même car je te rappel qu'il y a 2 nouveaux registres dans la pile.

Certe tu ne va pas ecrire ton code en Basic, mais comment va réagire ton MO5 si tu ne corrige pas le code qui permet de traiter les SWI , et que ton 6309 est en mode natif ?

Jacques

Daniel
Messages : 11702
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] DCMOTO nouveau

Message par Daniel » 18 avr. 2016 17:14

Pendant la transmission SPI toutes les interruptions sont masquées et il n'y a aucun appel au moniteur.
J'ai retrouvé le fil de discussion où nous parlions des tests du mode natif : http://forum.system-cfg.com/viewtopic.p ... 4&start=51
J'ai mis le 6309 dans mon MO5 pour la première fois en avril 2014 : http://forum.system-cfg.com/viewtopic.p ... 48&start=0
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 4622
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] DCMOTO nouveau

Message par __sam__ » 18 avr. 2016 18:27

Effectivement, en déroulant la boucle de http://forum.system-cfg.com/viewtopic.p ... 495#p83495,

Code : Tout sélectionner

  STB   <$CC          clock high, di high       (4) [3]
  CMPB  <$CC          PA b7 (bit lu) -> carry   (4) [3]
  STF   <$CC          clock low, di high        (5) [4]
  ROLA                C (bit lu) -> b0 reg A    (2) [1]
on tombe sur 8*(4+4+5+2)=120 cycles en mode émulation 6809 pour lire 8 bits du port SPI au lieu de 175 pour le 6809, soir une accélaration de 1.45 8) En natif ca fait 8*(3+3+4+1)=88cycles, sensiblement 11ko/sec au lieu de 5.7. Pas loin de 2x plus rapide 8)
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Répondre