Audiyofan
Audiyofan




Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 
Auteur Message
 Sujet du message: Retour au vintage 8 bits avec le 6502
MessagePosté: Mar 19 Nov 2019, 23:33 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Lun 06 Avr 2009, 10:09
Messages: 3113
Localisation: Nantes
Hello à tous,

Il y a quelques temps je suis tombé sur ce site qui parlait du 6502, proc que je ne connaissais pas vu que gamin j'avais eu un Amstrad équipé d'un Z80. C'est pourtant le proc qui a équipé un des premiers Apple, la console Atari 2600 et le Commodore 64. Un truc amusant avec ces vieux proc est qu'ils ont été faits par des humains pour des humains. Dans le cas du 6502 il a été fait à la main, la matrice a été découpée à la mimine puis réduite à la taille de gravure. Les registres et le jeu d'instructions sont très simples et sont conçus pour que ce soient des humains qui développent dessus et ça les rend intéressant car c'est probablement la dernière génération de CPU où c'est le cas ce qui veut dire qu'il restent accessibles si on veut apprendre comment programmer ou fonctionne un processeur. On assiste depuis quelques années à une réappropriation de ce savoir faire à des fins d'apprentissage. Des fous furieux ont reverse-engineeré le proc au microscope pour en établir le plan, des plus furieux ont même construit une version discrète du 6502. Suite à ça, Ben Heater a réalisé une série de vidéos sur comment construire un ordinateur qui affiche Hello World à base du 6502 et propose même un Kit. Les vidéos de Ben Heater sont tout simplement des références de vidéos didactiques, il a créé une autre série de vidéos où il fabrique un processeur, il y a même quelques gamins qui suite à ça ont construit et programmé leur propre ordinateur avec juste des portes logiques ( oui oui avec une sortie VGA et une entrée clavier PS/2 oui Monsieur ).

Bonne bidouille ;)

Amicalement,
Grégoire

Edit
Je vais profiter de la première page de ce post pour consigner l'état de ma connaissance sur le 6502 au fur et à mesure que je creuse le sujet.

Pourquoi le 6502 en 2019 ?
Le 65C02 est un processeur 8 bits dont la conception date de 75 et en 2019 ça fait longtemps qu'on fait mieux alors pourquoi c'est intéressant ? Comme je le disais plus haut le premier point est que ces architectures sont facilement accessibles aux néophytes. Il y a même des pro qui disent utiliser ce processeur là où des microcontrôleurs sont insuffisants ou trop contraignants. Aujourd'hui on pourrait tout faire avec des Arduino par exemple sauf que même si l'ATMEGA est bien plus puissant que le pauvre 65C02 et bien plus accessible, on n'a pas la main directement sur le matériel. Or, fabriquer un ordinateur c'est chez moi un rêve de gamin, comprendre l'adressage, les interruptions fabriquer son propre matériel et pourquoi pas, coder son propre OS.
Ceci étant dit, pourquoi le 6502 ? Il y a toujours le très connu Z80, le 8080 ou d'autres proc moins connus comme le 6800 alors pourquoi celui là ? Je vais reprendre Nick Morgan :

Nick Morgan a écrit:
Then why 6502? Why not a useful assembly language, like x86? Well, I don’t think learning x86 is useful. I don’t think you’ll ever have to write assembly language in your day job - this is purely an academic exercise, something to expand your mind and your thinking. 6502 was originally written in a different age, a time when the majority of developers were writing assembly directly, rather than in these new-fangled high-level programming languages. So, it was designed to be written by humans. More modern assembly languages are meant to written by compilers, so let’s leave it to them. Plus, 6502 is fun. Nobody ever called x86 fun.


Quelle est la différence entre le 6502 et le 65C02 ?
Le 6502 était fait avec des portes NMOS ce qui est assez énergivore et complètement obsolète. Le 65C02 utilise la technologie CMOS et apporte quelques corrections et ajouts au jeu d'instructions du 6502 ainsi que des modes d'adressage supplémentaires. Le processeur original pouvait être cadencé jusqu'à 4MHz, le WDC65C02 peut monter jusqu'à 17MHz. Parmi les instructions ajoutées, il y en a la possibilité d'interagir entre les registres X et Y avec la stack ce qui simplifie quand même pas mal la vie et aussi une instruction “Wait Interrupt” qui met le processeur en veille en attendant une interruption. Ce mode est d'autant plus intéressant que le processeur est tout de suite prêt à agir lorsque l'interruption arrive là où il doit souvent faire des opérations avant de pouvoir traiter une interruption « normale ».

En quoi l'architecture du 6502 est intéressante ?
Ce processeur ne propose que 3 registres 8 bits en écriture : un accumulateur et 2 registres d'index, plus un registre de stack et un registre d'état tous les deux en lecture. C'est très peu comparé au Z80 qui propose 3 paires de registres et des opérations sur 16 bits. Cette simplicité est un compromis avec la performance. Croyez le ou pas, le 6502 ne propose pas d'opération pour l'addition ( ou la soustraction ) mais une sous instruction : Add with Carry. Cette simplicité permet au processeur de rester simple et de faire ses opérations en 1 à 3 cycles d'horloge là où toute opération sur le Z80 par exemple prend 4 cycles. Le manque de registre est pallié par un mode d'adressage particulier : le Zero Page Indexing. Il est possible de faire appel à la mémoire en ne passant qu'un octet en paramètre. Le processeur ajoute de lui même le double 0 devant et cela permet d'adresser les 256 premiers octets de la mémoire. Cette opération est relativement rapide et permet de voir ces 256 octets comme autant de registres 8 bits disponibles.
Code:
  LDA #$12 ; Charge la valeur hexa 0x12 dans l'accumulateur - 2 cycles
  CLC         ; CLear Carry bit, indispensable pour l'addition si on ne veut pas tenir compte d'une retenue précédente - 1 cycle
  ADC $32  ; ajoute à l'accumulateur le contenu de l'adresse 0x0032 - 3 cycles + 2 cycles pour lire la mémoire
  STA $32  ; sauve l'accumulateur à l'adresse 0x0032 - 3 cycles

Un autre astuce est que les accès mémoire peuvent se faire de manière indexées, c'est à dire par exemple :
Code:
  LDX #$A
  STA $30,X ; stocke le registre A à l'adresse $30 + $A = $3A

De cette façon, avec l'opération ADC qui garde la retenue, il est relativement simple de faire des opérations sur plusieurs octets, par exemple pour additionner 2 nombres de 16 bits judicieusement stockés en mémoire :
Code:
  LDX #$2  ; on met dans X le nombre d'octets à parcourir
  CLC        ; on efface la retenue

add:
  LDA $30,X    ; on charge l'accumulateur avec l'octet X du premier nombre
  ADC $40,X    ; on l'additionne à l'octet X du deuxième nombre avec la retenue précédente
  STA $50,X    ; on stocke le résultat dans un troisième nombre à l'octet X
  DEX             ; on décrémente X
  BNE add       ; si X <> 0 alors on boucle sur “add”
  BRK

_________________
Utile : un générateur de papiers millimétrés (log, lin), un traceur de fonctions, un simulateur didactique de circuits, baudline frequency analyzer.


Dernière édition par chanmix51 le Lun 25 Nov 2019, 19:04, édité 2 fois.

Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Mer 20 Nov 2019, 17:45 
Hors ligne
Membre Assidu

Inscription: Dim 09 Jan 2005, 22:07
Messages: 1583
génial, merci Greg!


Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Jeu 21 Nov 2019, 10:16 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Lun 06 Avr 2009, 10:09
Messages: 3113
Localisation: Nantes
Hello,

Pour aider ce.lles.eux qui sont réfractaires à la langue de Shake shake, j'ai créé les sous titres des deux premières vidéos ( un & deux ). Si vous vous sentez l'âme d'un relecteur, je vous invite à corriger & valider mon travail. ( Dans le menu “paramètres” → “sous-titres” → “ajouter des sous titres”, choisissez “Français” comme langue ).

Amicalement,
Grégoire

_________________
Utile : un générateur de papiers millimétrés (log, lin), un traceur de fonctions, un simulateur didactique de circuits, baudline frequency analyzer.


Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Jeu 21 Nov 2019, 13:58 
Hors ligne
Membre Assidu

Inscription: Dim 09 Jan 2005, 22:07
Messages: 1583
très gros travail de tout traduire, surtout que le type parle vite, donc il y a de la matière!
Ce que je ne comprends pas: tu as collé tes sous titres toi-même???
Parce que sinon il y a un "autotranslate" qui, je suppose, est généré automatiquement?

Cordialement
Guy


Fichiers joints:
Sans titre.gif
Sans titre.gif [ 142.24 Kio | Vu 6773 fois ]
Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Ven 22 Nov 2019, 23:04 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Lun 06 Avr 2009, 10:09
Messages: 3113
Localisation: Nantes
Hello Guy,

Je n'ai pas utilisé l'auto-translate qui, je trouve, n'est pas très pertinent sur des sujets techniques ( surtout avec du code ou de l'hexa ). Ça oblige quand même à tout écouter et reprendre les coquilles, autant tout faire d'un coup. J'utilisais par contre l'auto translate anglais en sous titre pour certains passages très rapides.

Amicalement,
Grégoire

_________________
Utile : un générateur de papiers millimétrés (log, lin), un traceur de fonctions, un simulateur didactique de circuits, baudline frequency analyzer.


Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Sam 23 Nov 2019, 09:22 
Hors ligne
Membre Assidu

Inscription: Dim 09 Jan 2005, 22:07
Messages: 1583
OK Greg.
Par contre je ne vois pas ton travail: je n'ai pas de sous-titres en FR (en dehors de auto-translate)

bonne journée
Guy


Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Sam 23 Nov 2019, 09:59 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Lun 06 Avr 2009, 10:09
Messages: 3113
Localisation: Nantes
Hello Guy,

Mes sous titres ne sont pas encore dispo car doivent être relus pour parution. Il faut donc aller dans “paramètres” → “sous titres” → “ajouter des sous titres”. Là tu arriveras dans l'interface des traductions, choisis “Français”, tu devrais tomber sur les sous titres français à relire ;) bon courage il y a un peu de matière :mrgreen:

Par ailleurs, pour ce.lles.eux qui ont envie d'essayer de jouer avec ce microprocesseur, c'est assez facile d'en trouver mais, d'après ce que je sais, seuls les modèles de WDC utilisent un design statique, c'est à dire capable de garder leur état avec une cadence d'horloge très faible. Vous trouverez des neufs chez mouser US mais les frais de port sont élevés, pas mal de copies ou de récup sur eBay, le vendeur Toucano76 est un revendeur WDC outre manche aux frais de port raisonnables.

Amicalement,
Grégoire

_________________
Utile : un générateur de papiers millimétrés (log, lin), un traceur de fonctions, un simulateur didactique de circuits, baudline frequency analyzer.


Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Sam 23 Nov 2019, 21:29 
Hors ligne
Membre Assidu

Inscription: Dim 09 Jan 2005, 22:07
Messages: 1583
hello
chanmix51 a écrit:
Il faut donc aller dans “paramètres” → “sous titres” → “ajouter des sous titres”. Là tu arriveras dans l'interface des traductions


Auparavant j'ai une phase d'authentification. Je n'ai pas de compte Google (et pas l'intention d'en avoir un ... :-()
Si tu vois une autre façon de faire....

Bonne soirée
Guy


Haut
 Profil  
 
 Sujet du message: Re: Retour au vintage 8 bits avec le 6502
MessagePosté: Sam 23 Nov 2019, 23:43 
Hors ligne
Membre Assidu
Avatar de l’utilisateur

Inscription: Lun 06 Avr 2009, 10:09
Messages: 3113
Localisation: Nantes
Guy a écrit:
hello
chanmix51 a écrit:
Il faut donc aller dans “paramètres” → “sous titres” → “ajouter des sous titres”. Là tu arriveras dans l'interface des traductions


Auparavant j'ai une phase d'authentification. Je n'ai pas de compte Google (et pas l'intention d'en avoir un ... :-()
Si tu vois une autre façon de faire....


Hello Guy, j'imagine qu'il n'y a pas d'autres façons de faire.

Tout à fait par hasard, je suis tombé sur des gars qui ont construit une petite console de jeux open source tub18 à base de WDC65C02.

Amicalement,
Grégoire

_________________
Utile : un générateur de papiers millimétrés (log, lin), un traceur de fonctions, un simulateur didactique de circuits, baudline frequency analyzer.


Haut
 Profil  
 
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 6 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

Aller à:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com