Logicielsmoto.com

Nous sommes le 28 Mar 2024, 19:20

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 
Auteur Message
 Sujet du message: Le microprocesseur 6309
MessagePosté: 25 Aoû 2006, 10:37 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Avez-vous déjà entendu parler du 6309, un microprocesseur compatible avec le
6809 mais plus évolué (mais qui est devenu très rare, malheureusement)?

Outre le fait que la totalité des instructions assembleur 6309 sont autorisées et qu'elles prennent (pour la plupart) 1 cycle de moins qu'avec le 6809, le 6309 a des registres en plus (E et F, qui forment le registre 16 bits W (comme A et B pour D) et forment à eux tous le registre 32 bits Q (A+B+E+F)), et des instructions en plus, comme TFM qui permet le transfert de mémoire à mémoire avec des registres indexés et le compteur chargé dans W (j'ai calculé qu'une séquence de PULS/PSHU au plus rapide mettrait 63196 cycles pour transférer une zone mémoire de 16384 octets, alors que l'instruction TFM mettrait, elle, 49158 cycles). Ainsi qu'une opération de multiplication ET de division 8/16/32 bits.

http://koti.mbnet.fi/%7Eatjs/mc6809/Information/6309.techref

"The HD63B09EP microprocessor by Hitachi, is a MC68B09E compatible chip containing additional registers and an additional instruction set."

Donc il serait possible de simplement remplacer un 6809 par un 6309 sur la carte d'un Thomson, dans la théorie. Dans la pratique, il faudrait changer les timings de certaines opérations, comme pour le disque, par exemple, puisque les mêmes instructions peuvent s'exécuter plus rapidement. Et donc réécrire certaines parties des EPROM et des cartouches. Toujours la même chose quand on touche à la vitesse. Il y a aussi le registre en $FFF0 qui est utilisé comme vecteur de trap (comme sur Amiga), quand le microprocesseur se retrouve à devoir exécuter une instruction illégale, ou lors d'une division par 0, de telle facon que l'erreur soit interceptée, affichée ou traitée éventuellement.
Par ailleurs, le 6309 possède un switch permettant de choisir entre le mode émulation (il fonctionne alors rigoureusement comme un 6809) et le mode natif (les instructions en plus, plus de vélocite, etc, etc...).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 25 Aoû 2006, 11:13 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 492
J'ai lu des infos concernant ce microprocesseur, et il a l'ai bien cool (et compatible Thomson avec son mode natif 6809).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 25 Aoû 2006, 17:04 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Les vecteurs TRAP sur 68K correspondent en fait au appel moniteur.

On fait appel au numéro de la routine
Code:
move.w #9,-(a7)
trap #1

au même titre que
Code:
jsr $E803


Sur ST, il est possible de changer l'adressage et de faire appel par exemple à une routine d'affichage personnalisée directement par TRAP #0, #1..., #14 cela évite les BSR/JSR. Leurs adresses sont implantées dans les tampons.

Une confidence, ça déroute les débutants :tourne:

Je suppose que sur amiga c'est la même chose. ;)

Sur thomson les adresses $FFFx ne sont pas modifiables. Dommage.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 25 Aoû 2006, 18:27 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
... et les gurus ne sont-ils pas déclenchés via un vecteur trap sur Amiga?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 25 Aoû 2006, 20:18 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
... et les gurus ne sont-ils pas déclenchés via un vecteur trap sur Amiga?


Sur amiga TRAP n'est pas utilise et conduisent a un plantage en effet si l'utilisateur n'a pas redirige les vecteurs sur uen routine appropriee.

Les appels en rom se font via les biliotheques (Library). Les biliotheques n'ont pas d'addresses fixes mais sont pointees par une valeur retournee lors de son ouverture. Via cette valeur qui doit etre transferee dans le registre d'addresses A6 on a acces aux fonctions de la biliotheque en faisant un jsr offset(A6).

Donc sur amiga l'addresses des bibliotheque sont variables (meme pour celles qui figurent en rom car elles peuvent etre remplacees par des version plus recentes chargees depuis le disk) et seul les offsets sont constant pour une bibliotheque donnee quelle que soit la version et l'emplacement memoire de la biliotheque.

Certaines fonctions de service (expunge, close etc) ont des offsets fixes et commun a toutes les biliotheques.. Il y a une structuration un peu objet ici: toutes les bibliotheques 'heritent' d'une biliotheque abstraite en implementant les services minimum a tels et tels offset, un peu a la facon d'une table de fonctions en C++.

NB: Une bibliotheque s'ouvre via l'appel d'une fonction OpenLibrary d'une autre bibliotheque (exec.library). Mais comment ouvre-t-on alors cette bibliotheque la ? Ben en fait c'est la seule qui fait exception a la regle car on ne l'ouvre pas (elle est toujours ouverte) et son addresse est stockee a l'addresse $4.

C'est marrant de voir qu'entre Amiga (utilisation de jsr) et Atari (utilisation de trap) on retrouve la distinction qu'entre TO (jsr) et MO (swi). Meme CPU, mais deux facons differentes d'acceder aux routines de l'OS!

sam.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 25 Aoû 2006, 20:27 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
jasz a écrit:
Sur thomson les adresses $FFFx ne sont pas modifiables. Dommage.


Directement non, mais indirectement elles sautent aux addrees stockes en page0. C'est le cas des interruptions IRQ/FIRQ et SWI que l'on peut rediriger ou l'on veut (voir les pointeurs IRQPT, FIRQPT, TIMEPT et SWI1 de la page 0). En revanche SWI2 et SWI3 sautent eux directement a des addresses fixes (respectivement en $6800 et $7000). C'est code en dur dans la rom $FFFx je pense.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le microprocesseur 6309
MessagePosté: 17 Jan 2021, 03:10 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Bonsoir

Je cherche aussi des infos sur le 6309 pour voir s'il apporte réellement un gain... J'ai essayé plusieurs jeux Thomson sur DC Moto en mode 6809 ou 6309, je ne vois aucune différence (même en supposant qu'il s'agit du mode natif. Enfin ceci étant, je n'ai pas effectué tant de tests.

Prehisto a écrit:
Avez-vous déjà entendu parler du 6309, un microprocesseur compatible avec le
6809 mais plus évolué (mais qui est devenu très rare, malheureusement)?

Outre le fait que la totalité des instructions assembleur 6309 sont autorisées et qu'elles prennent (pour la plupart) 1 cycle de moins qu'avec le 6809, le 6309 a des registres en plus (E et F, qui forment le registre 16 bits W (comme A et B pour D) et forment à eux tous le registre 32 bits Q (A+B+E+F)), et des instructions en plus, comme TFM qui permet le transfert de mémoire à mémoire avec des registres indexés et le compteur chargé dans W (j'ai calculé qu'une séquence de PULS/PSHU au plus rapide mettrait 63196 cycles pour transférer une zone mémoire de 16384 octets, alors que l'instruction TFM mettrait, elle, 49158 cycles). Ainsi qu'une opération de multiplication ET de division 8/16/32 bits.
[/quote)
En supposant qu'on fasse autant de PULS et PSHU que nécessaire (c'est à dire en utilisant les registres A, B, X, Y, CC, DP et PC, soit (Nb_Octet/10) séquences sachant que ces instruction prennent chacune (5+nboctet) cycles (Soit 15 cycles pour chacune des 2 instructions), on arrive à 30 cycles pour 10 octets avec PULS/PSHS, donc 3 cycles par octet (mais ça suppose de copier N fois ces instructions... La RAM ne suffirait pas). En théorie on aurait le même nombre de cycle d'horloge que TFM (sui, lui, nécessite 3xNboctets+6 cycles. En fait, cette instruction TFM a l'avantage de prendre peu de place et de ne pas monopoliser les registres.

Par contre, selon ce que j'ai compris, elle ne fait pas une copie mais un "déplacement" d'un endroit à un autre, c'est à dire, je pense, qu'elle met les octets sources à 0 ? C'est ce que la doc anglaise suggère, après, je ne sais pas... Mais ça serait ballot de mettre les octets sources à 0 si on ne veut qu'une copie.

http://koti.mbnet.fi/%7Eatjs/mc6809/Information/6309.techref

"The HD63B09EP microprocessor by Hitachi, is a MC68B09E compatible chip containing additional registers and an additional instruction set."

Prehisto a écrit:
Donc il serait possible de simplement remplacer un 6809 par un 6309 sur la carte d'un Thomson, dans la théorie. Dans la pratique, il faudrait changer les timings de certaines opérations, comme pour le disque, par exemple, puisque les mêmes instructions peuvent s'exécuter plus rapidement. Et donc réécrire certaines parties des EPROM et des cartouches. Toujours la même chose quand on touche à la vitesse. Il y a aussi le registre en $FFF0 qui est utilisé comme vecteur de trap (comme sur Amiga), quand le microprocesseur se retrouve à devoir exécuter une instruction illégale, ou lors d'une division par 0, de telle facon que l'erreur soit interceptée, affichée ou traitée éventuellement.
Par ailleurs, le 6309 possède un switch permettant de choisir entre le mode émulation (il fonctionne alors rigoureusement comme un 6809) et le mode natif (les instructions en plus, plus de vélocite, etc, etc...).


A voir si ça vaut vraiment le coup.. Je serais d'avis plutôt d'une nouvelle machine, avec des composants généralistes, un 6309 à 4 MHz, et adapter les jeux trop rapides avec des patch éventuels (réglant le timer notamment ou des variable à multiplier par 4). un 4 MHz sur des jeux comme enduro racer, Crazy cars, les simulateurs de vol, les jeux de labyrinthe 3D... ça ne serait pas un luxe. Et franchement vu les limitation au niveau audio et graphique des thomson parce que le processeur gère tout (contrairement aux concurrent C64, Amstrad, MSX, BBC Micro et ZX Spectrum), vu que ces mêmes concurrents sont quasiment tous avec un Z80 à 4 MHz...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le microprocesseur 6309
MessagePosté: 17 Jan 2021, 12:31 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ca n'est pas surprenant. Le 6309 boot par défaut en mode 100% compatible 6809 au cycle près. Donc un programme écrit pour 6809 ira strictement à la même vitesse sur 6309.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le microprocesseur 6309
MessagePosté: 03 Fév 2021, 22:16 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
Attention à la comparaison des horloges en MHz, le 6809 fait beaucoup plus de choses que le Z80 en 1 cycle d'horloge. Du coup le Z80 à 4MHz n'est pas du tout 4 fois plus rapide.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 25 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com