Canon X-07

English Version
WikipédiA



Acquisition récente (2009) après un peu de bricolage, ça marche plutôt bien.

Caractéristiques Interface video Les imprimantes Programmation / Logiciels

Une machine que j'avais vue tourner chez un copain de lycée. Il avait déjà à l'époque l'imprimante couleur et j'avais trouvé ce petit appareil bien intéressant!

Caractéristiques de base:
  1. CPU NSC-800, un compatible Z80
  2. Coprocesseur Toshiba T6834 gérant le clavier, l'écran, les caractères, l'heure, l'alimentaion
  3. Une horloge/calendrier avec fonction alarme
  4. Ram 8Ko, extensible à 16 sur carte mère et à 24 avec une carte d'application.
  5. Ecran LCD monochrome 120x32, ou 4 lignes de 20 caractères
  6. RAM disk paramètrable à l'octet près, conserve les fichiers même éteint
  7. Son monovoie paramétrable en fréquence et durée.
  8. port série 8000 bauds, 7/8 bits, 2 stop, parité
  9. port // Centronics
  10. connecteur pour stockage sur cassette audio.
  11. port d'extension
  12. réglage volume, contraste


Le panneau arrière
On y trouve le réglage de volume du haut parleur interne et le grand port d'extension qui permet la liaison avec l'interface vidéo X-720 (à confirmer). Aucune autre extension ne fut réalisée à maconnaissance.

On y trouve une bidouille cependant: en reliant deux pins on peut déclancher l'interruption NMI qui peut exécuter une petite routine pour réagir à un événement extérieur.


Le côté droit
Dans l'ordre
  • l'interface cassette pour la lecture et l'enregistrement de programmes
  • la prise pour l'alimentation externe. A noter que lorsque l'imprimante X-710 est branchée, elle alimente l'ordinateur.
  • le réglage du contraste
  • le port parallèle. Les signaux sont au standard Centronics, mais le connecteur lui, est particulier. Il est néanmoins possible d'y brancher une imprimante courante


Le côté gauche
Ici se trouve le port série. Il n'est pas exactement à la norme RS-232 et nécessite une interface pour s'adapter aux signaux standards.


Le dessous
Trois compartiments s'ouvrent sous le Canon.
  • Le compartiment à piles pour 4 LR6
  • L'extension mémoire vive ajoutant, par un simple composant (Toshiba TC5565PL-15L), 8Ko de mémoire vive portant ainsi la RAM à 16Ko.
  • Le compartiment pour les cartes d'application au format carte de crédit. Elles peuvent contenir de la ROM (jusqu'à 8Ko) pour des programmes et/ou de la RAM jusqu'à 8Ko.


L'interface vidéo X-720

Le périphérique X-720 permet de connecter le Canon X-07 à une télé via une interface péritel. Plusieurs modes textes ou graphiques jusqu'à 256x192 en monochrome ou jusqu'à 8 couleurs en basse résolution!

Allez à cette page pour en voir les caractéristiques!


Les imprimantes

L'imprimante couleur X-710: une table traçante en fait!

Cette imprimante dispose de stylos de 4 couleurs (noir, bleu, vert rouge). Elle peut travailler en mode texte (dessin les caractères envoyés) mais également en mode graphique avec une description des mouvements par coordonnées avec crayon levé ou baissé. Ca pourrait s'apparenter un peu au pilotage de la tortue du Logo.


Le problème de l'alimentation!

Avec les années la batterie d'origine finit par rendre l'âme. L'ennui c'est qu'en l'absence d'une batterie, l'imprimante refuse de s'allumer même avec son alimentation externe. J'ai donc réalisé le bricolage décrit par "Spéléo" dans les pages de Silicium. Le principe est de reporter l'alimentation sur les broches de la batterie pour faire croire qu'elle est présente...


Voici la photo des deux endroits où il faut souder un fil pour piquer l'alimentation.
Le "+" se prend directement à l'arrivée de l'alimentation.
Le "-" se prend sous la diode (juste au dessus du fil jaune).

Dans le logement de la batterie on ramène ces fils (ici j'ai utilisé un connecteur pris dans un vieux PC), faire bien attention à la polarité!


Connection à une imprimante parallèle

On peut tout à fait connecter le Canon à une imprimante parallèle standard. Ici j'ai fait un essai avec une imprimante laser Xerox Docuprint P8E! On peut ainsi utiliser les commandes "LPRINT" ou "LLIST".
Ci-dessous le listing obtenu avec LLIST, et à droite le résultat de l'exécution:


Voici le cable de plus près: j'ai sacrifié un cable de la X-710 en le coupant au milieu et j'ai connecté une DB-25 femelle. J'ajoute donc au Canon X-07 un connecteur centronics standard. On peut bien sûr y brancher une imprimante, mais pourquoi pas imaginer un cable de transfert, voire le pilotage d'un lecteur ZIP// (waow, ça serait vraiment top!).
CANON X-07         DB-25 femelle
1 (marron) ------> 2 (D0)
2 (rouge)  ------> 3 (D1)
3 (orange) ------> 4 (D2)
4 (jaune)  ------> 5 (D3)
5 (vert)   ------> 6 (D4)
6 (bleu)   ------> 7 (D5)
7 (violet) ------> 8 (D6)
8 (gris)   ------> 9 (D7)
9 (blanc)  ------> 1 (Strobe)
11 (rose)  ------> 11 (Busy)
13 (noir)  non connecté (+5V)
15 (metal) ------> 18-25 + blindage (masse)
Voici la routine de copie d'écran sur une imprimante 24 aiguilles compatible EPSON.
  • Les lignes 70 et 220 servent à chronométrer le phénomène
  • En 80 on ouvre l'imprimante "GPR:" comme fichier #1 et on envoit ESC + 48 pour régler la hauteur de ligne à 48/360 c'est à dire 2/15 de pouce.
  • Pour chaque ligne graphique en 110 on envoit ESC * 5 240 0 pour avoir le mode 72 DPI avec 240 octets qui suivent
  • Pour que la taille soit convenable sur papier, j'ai choisi d'envoyer les pixels en double (donc 120x32 doublé en 72 DPI, cela donne une image de 8,5 cm sur 2,3 cm).
  • Entre chaque ligne graphique on envoit CR/LF (13/10) en 190
  • En fin de page on envoit FF (12) pour éjecter la feuille.

Listing d'une routine de copie graphique d'écran



Résultat de l'exécution
Voici la copie d'écran réalisée par ma routine.

Le temps total d'impression est 1'19", ce qui est plutot lent! Le BASIC met beaucoup de temps à créer sa ligne. L'imprimante est souvent inactive. J'imagine qu'une lecture directe en mémoire écran permettrait d'aller plus vite qu'avec POINT...

Notez que INIT imprime "S1" lors de l'ouverture...

Pour une imprimante 9 aiguilles la ligne 80 devient:
80 out#1,27:out#1,65:out#1,8:out#1,10


Programmation / Logiciels

Le BASIC

Un Basic Microsoft & Canon daté de 1983 occupe 20Ko de ROM. Il est plutôt complet et dispose même de fioritures peu courantes pour l'époque, et même pour aujourd'hui:
L'interface cassette

Le câble pour sauvegarder ou relire des programmes ou données dispose de trois fiches:
  • fiche rouge pour l'enregistrement avec CSAVE "nom_de_fichier"
  • fiche grise pour la lecture avec CLOAD "nom_de_fichier"
  • fiche noire pour commander le moteur du magnétophone.
L'ordinateur dispose également d'une commande CLOAD? permettant de vérifier la validité des données enregistrées.
Un problème observé: lors de la lecture, si la fiche rouge d'enregistrement est branchée je ne reçois que des parasites du magnétophone. Donc je ne la branche que pour enregistrer. Cela est peut être liée à mon magnétophone et pas au Canon.


L'assembleur NSC 800 / Z80

Hélàs! Je n'ai pas la carte XP-140 contenant un moniteur/désassembleur (à confirmer..) donc j'utilise un programme sur cassette qui se révèle être excellent et très bien interfacé avec le BASIC. Il s'agit de "AS-VSN 3.0" de J.Outhier. Il se charge et reste résident en mémoire, on appelle ses différentes fonctions par des combinaisons de touches (en mode commande) ou des EXEC (en mode programme).

Allez, comment ça marche? D'abord ce BASIC ne contient pas d'instruction du genre BLOAD ou BSAVE. Donc charger le programme Assembleur qui est lui même un bloc binaire en assembleur doit se faire par une routine BASIC qui "poke" les octets un à un en mémoire. C'est ce que fait LOADAS.
D'abord charger le programme LOADAS:
CLOAD [Return] si c'est sur cassette
LOAD"LOADAS" [Return] si c'est dans le RAM disk

On l'exécute!
RUN [Return]

On obtient le message d'accueil suivant:


L'assembleur est présent en mémoire maintenant, il est prêt à agir selon nos instructions. Et nous gardons également le contrôle du BASIC!
Un programme Assembleur se loge dans des lignes BASIC avec REM (ou son équivalent ' obtenu avec Shift 7), voici un exemple:
10 '[  
20 'LD A.$11
30 'LD HL.#PX
40 'LD BC.$200
50 'CALL $C92F
60 'RET
70 '#PX DEFB &119,31
80 ']
marque le début du programme à assembler
A=$11 fonction PSET de la ROM
HL pointe sur les coordonnées d'un point
B=2 (2 octets à envoyer), C=0 (aucun à recevoir)
appel de la fonction ROM qui affiche un point à l'écran
fin de routine
zone contenant les coordonnées (119,31) du point = en bas à droite!
marque la fin du programme.


Un aperçu du listing

Je tape maintenant Ctrl+A et l'assembleur deux passes se lance. Il affiche PASS 1, puis PASS 2 puis Ok si tout s'est bien passé. Par défaut, la routine est implantée en $1C00 (modifiable avec ORG), pour l'exécuter, je tape:
EXEC &H1C00 [Return]

Je dois voir un point noir en bas à droite.

Mais on peut mixer BASIC et Assembleur, je reprends le programme précédent que je complète:
 0 CLS : GOTO 90
10 '[ 
20 'LD A.$11
30 'LD HL.#PX
40 'LD BC.$200
50 'CALL $C92F
60 'RET
70 '#PX DEFB &119,31
80 ']
90 PRINT"ASSEMBLAGE...":EXEC 11087
100 PRINT:PRINT"Execution..."
110 EXEC &H1C00
120 END
 >> efface l'écran et saute la partie assembleur






 >> le & signale des données décimales

 >> cet EXEC est équivalent à Ctrl+A, l'assembleur crée notre routine!
 >> et je peux l'exécuter depuis le programme.


En exécutant ce dernier programme avec RUN, tout s'enchaîne: l'assemblage qui crée la routine en mémoire et l'exécution du programme qui affiche un pixel en bas, la preuve à droite!

Je trouve ce système très performant car avec un seul fichier source on peut travailler sur la partie BASIC et la partie Assembleur. Ce dernier reste logé en mémoire de manière résidente tant qu'on n'a pas exécuté de RESET ou NEW pour vider la mémoire. Il devient presque un outil du système.

Les cartes d'application

La carte XP-140 est une carte ROM/RAM contenant un moniteur assembleur. Il apporte des fonctions BASIC supplémentaires pour la gestion des blocs (BSAVE, BLOAD, etc) et un moniteur/debugger pour mettre au point vos programmes en assembleur.

Comme beaucoup d'autres cartes, il apporte également 4Ko de RAM supplémentaires.


Manuel et cartes donnés généreusement par Tibor Rado de Suisse. Merci à lui!


La carte XP-110f est une carte ROM/RAM contenant un programme de gestion de base de données en deux parties. L'une est un carnet d'adresse, l'autre est généraliste et permet de définir ses données, d'interroger la base et d'imprimer les résultats.

Comme beaucoup d'autres cartes, il apporte également 4Ko de RAM supplémentaires.


Manuel et cartes donnés généreusement par Tibor Rado de Suisse. Merci à lui!


La carte XP-150 est une carte ROM/RAM d'extension des fonctions mathématiques. Elle apporte:
  • Les fonctions trigonométriques inverses
  • Les fonctions hyperboliques
  • Les fonctions logarithmes et exponentielles
  • Des conversions d'unités
  • Des fonctions de statistiques incluant la régression
Elle augmente également la RAM de l'ordinateur avec 4Ko supplémentaires poussant l'ensemble à 24Ko. Ce bloc est sauvegardé par une pile lithium et il est judicieux d'en faire un RAM disque avec l'instruction FSET 4096 qui réserve les 4Ko de la carte pour les fichiers.

Consulter un résumé des fonctions.



La carte XP-120f est une carte d'application transformant le Canon en un Tableur en français.
A la lecture du manuel je le trouve peu pratique et peu puissant, notamment au niveau des fonctions de calcul plutôt réduites et des copier/coller de fonction plutôt inexistants.

Même les 4Ko de RAM sont peu pratiques: ils sont dédiés en priorité au stockage des tableaux et l'ordinateur boote sur la carte par défaut en lançant le tableur. Il vous faut passer par un F4 pour aller au Basic. Retour sous le tableur uniquement par extinction et rallumage.



La carte XP-130f est une carte d'application permettant d'imprimer des graphiques (en français).
Elle apporte aussi 4ko de RAM.

Demandez moi un accès à mon Cloud pour obtenir
le manuel d'utilisation en français.


Merci à Pierre Héricourt pour le scan!

Merci à Jorge Alvarez pour la carte!


Les extensions de mémoire

La carte XM-100 est une carte RAM de 4Ko avec sauvegarde par pile. Elle ne contient pas de ROM.



Le XR-100 est un boitier TC5565PL-15L ou HM6264LP-15 qui apporte 8Ko de RAM supplémentaires, doublant ainsi la mémoire d'origine.
Vous pouvez télécharger le document d'installation du boitier en Français/English/Deutsch.


15 décembre 2007