Le principal avantage de ce processeur était l'instruction MUL et certains modes d'adressage (plus riche que le 65C02).
Les inconvénients majeurs étaient :
- d'une part la gestion des interruptions INT cablées (bidouillage possible avec un 74LS148 .... et un port PIA... ou avec le M68...)
- d'autre part de ne pas disposer de gestion de ports E/S permettant ainsi de câbler les circuits périphériques hors du champ d'adressage mémoire (d'une manière simple)!
Donc ici, je compare le M6809 au Z80 (daisy-chain et vecteurs d'interruption en mode IM2 et MREQ, IORQ)!
Au niveau de la doc présentée ici, c'est du très bon travail !
Quelques remarques cependant :
- La phobie de Dijkstra (GOTO-phobie) n'a pas lieu d'être mise en évidence car on aborde un CPU au plus bas niveau donc heureusement qu'on dispose d'instructions de branchement.
- Il n'y a aucun problème a trouver des JSR ou JMP dans un système d'exploitation puisqu'il n'est pas relogeable... étant là où il doit être !
- L'utilisateur (hors dev du système d'exploitation) est par contre dans une certaine obligation de développer du RORG (en tant que directive) qui est une instruction à prévoir dans l'assembleur pour... !
- A titre personnel, j'utilise deux types de LABELS :
-- Global visible dans tout le code
-- Local qui n'est visible qu'entre deux Globals et/ou la dernière ligne (exemple : .loop .next .again donc étiquettes précédés d'un point) !
-- Ca permet de limiter la liste des étiquettes globales que je stocke dans des listes alphabétiques... ce qui fait gagner du temps à l'assemblage !
- J'utilise le mot clé DCA (Défine Constant Address avec MSB first puis LSB) pour monter mes tables d'indirections (BIOS-like, DOS-like et SYST ... dont on sollicite les fonctions avec les SWI ...).
- et par opposition à DCW qui stocke une constante : LSB first puis MSB (allez savoir pourquoi !)
Un grand merci pour ta documentation qui m'a bien aidé pour une bonne compréhension de ce CPU !
3 |
0 |