Ordinateur rétro: premier test du RC2014 avec Basic 32K
Voila, maintenant que j'ai une configuration minimale pour mon RC2014, je vais pouvoir faire un premier test avec le Basic 32K (marqué "2", voir section "Carte ROM" dans cet article) disponible dans la ROM.
Voyez les articles précédent concernant l'assemblage des modules.
Voir le fil de discussion "RC2014 + Basic : Strange behaviour with FOR loop".
Problème corrigeable avec un POKE &H4000,2
RC2014 Pro minimaliste
RC2014 PRO avec minimum de modules pour Basic 32K |
- Module CPU Z80 v2.1
- Module Double Clock (qu'il faut configurer)
- Module RAM 64 Kio (qu'il faut configurer)
- Module Pageable ROM (qu'il faut configurer)
- Module SIO/2 (double port série)
- Et bien entendu le Backplane Pro.
A propos du Basic 32K
Le Basic 32K est le plus simple à tester car le Basic est dans les premiers 32K de l'espace d'adressage (même si le Basic ne fait que 8 Ko).
Il s'agit d'un Basic 4.7 de MicroSoft, une implémentation modifiée de la version produite par NasCom (ref: source). Cette implémentation contient quelques commandes supplémentaires pour le RC2014.
Ce Basic utilise la RAM située dans les 32K supérieurs de l'espace d'adressage (donc la RAM située entre 0x8000-0xFFFF).
Limitation
Cette version de Basic fonctionne sans OS... donc sans de possibilité de sauver le programme dans un fichier (CLOAD et CSAVE ne font rien).
La seule façon de procéder à une sauvegarde est via une opération de copier/coller via le terminal.
Si vous avez besoin de sauver des programmes Basic dans des fichiers, il faut utiliser la version du Basic pour CP/M.
Documentation
La doc du Basic Nascom est disponible ici:
La documentation de "Grant's 7-chip Z80 computer" avec les commandes supplémentaires:
Configuration des modules
Je reprends ici la configuration décrite dans le document "RC2014 Pro Jumper Settings" disponible depuis cette page de rc2014.co.uk. Celle que j'ai fini par faire fonctionner.
Configuration RAM
Les 3 cavaliers du haut indique que l'adresse de départ de la RAM est 0x0000 (mais les 32Kio inférieurs de RAM ne sont utilisées.
Le Jumper du bas indique que les 32 Kio de RAM Inférieure activée/désactivée par le module ROM.
Dans le cas du Basic 32K, le module de RAM inférieur n'est jamais utilisé et la ROM maintient le signa PAGE au niveau bas (ce qui désactive la RAM < 32Kio)
Pour résumer l'adressage:
- De 0x0000 à 0x7FFF : c'est l'espace d'adressage de la ROM (du Basic).
- De 0x8000 à 0x8000 : c'est l'espace d'adressage de la RAM
Notes:
- Comme indiqué par la doc, il ne fait pas souder de cavalier sur l'emplacement marqué "link-->".
- Par contre, le second rang du connecteur doit être soudé et raccordé sur le backplane. La flèche "link-->" indique justement l'emplacement du signal "PAGE" (laissé au niveau bas par la ROM, propagé sur la ligne "reset2" du backplane) .
Module ROM
Le Basic 32K (numéroté 2, voir la section codage de la ROM dans cet article) utiliser le premier bloc de 8 Kio de ROM.
Le Basic commence donc à l'adresse 0x0000 de la ROM... ca tombe bien, (ouf! dirais-je) la RAM n'utilise pas cet espace mémoire :-)
A gauche, la taille de la page ROM est fixée à 8 Kio. Le code du Basic tient dans ces 8 Kio premiers Ko de ROM.
Comme la ROM du RC2014 Pro est découpée en bloc de 8Kio (8192 octets), il faut donc 13 bits pour pouvoir encoder une adresse entre 0 et 8191 (0x0000 et 0x1FFF).
Les 13 bits utilisés par la ROM sont donc A0 à A12 (inclus) et ces bits doivent rester libre d'usage. Il faudra donc fixer A13, A14 et A15 pour indiquer l'adresse de base de la ROM à exécuté.
Comme précisé, la ROM du Basic 32K est en tout début de ROM (donc à 0x0000)... il faut donc fixer A13=0,A14=0,A15=0.
Espace d'adressage
En lisant les deux points ci-dessous, nous pouvons faire une représentation de l'espace d'adressage.
Module d'horloge
Le but c'est d'avoir le Z80 qui fonctionne à vitesse maximale (donc 7.35 MHz).
La configuration de l'horloge 1 (Clock 1) est donc tout à gauche.
L'horloge CLOCK1 cadence le Z80 et la vitesse de communication UART (à 115200 bauds pour 7.35 MHz).
CLOCK2 impactera le débit de UART2 que nous n'utilisons pas pour l'instant.
Module SIO/2 - double UART
C'est le Port A qui est utilisé pour la communication avec le RC2014. C'est sur ce connecteur que l'on placera le convertisseur USB-Série pour communiquer avec le RC2014.
En pontant le jumper 5V, le RC2014 sera alimenté par le Port A (donc l'USB) et n'aura pas besoin d'une alimentation externe.
Enfin, il ne faut pas placer de connecteur sur le cavalier marqué "Port B Clock" car nous avons une carte double horloge produisant déjà un signal CLOCK2.
Préparer le Terminal
A l'autre bout de la connexion USB-Série, nous allons utiliser un programme Terminal (TeraTerm, Putty, etc) pour dialoguer avec notre RC2014.
La première chose à faire est d'identifier le périphérique PC correspondant au port USB-Série. Sur Windows, cela se fait à l'aide du gestionnaire de périphérique où un nouveau port COM apparaîtra.
Sur une machine Linux (comme c'est notre cas), c'est la commande dmesg qui permet d'identifier le périphérique nouvellement connecté.
[3304558.116519] usb 2-4: new full-speed USB device number 3 using xhci_hcd [3304558.277792] usb 2-4: New USB device found, idVendor=3171, idProduct=0034 [3304558.277797] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [3304558.277799] usb 2-4: Product: USB to UART Adaptor (5v) [3304558.277802] usb 2-4: Manufacturer: 8086 Consultancy [3304558.277804] usb 2-4: SerialNumber: 0777 [3304558.279189] cdc_acm 2-4:1.0: ttyACM0: USB ACM device
Dans le cas présent, ce sera /dev/ttyACM0
Ne reste plus qu'à démarrer notre terminal (Putty disponible sur putty.org).
Il ne reste plus qu'à configurer la connexion dans Putty (Serial et à 115200 bauds).
Une fois la connexion ouverte... il ne reste plus qu'à presser le bouton Reset du RC2014 .
A la question "Memory Top?" frappez simplement sur la touche Entrée.
Et voilà, nous voici parti avec Basic!
La doc du Basic pour le peuple
Déjà présenté en début d'article... mais repris pour plus de facilité.
La doc du Basic Nascom est disponible ici:
- http://www.nascomhomepage.com/pdf/Basic.pdf
- RC2014 + Basic : Strange behaviour with FOR loop
Bug du Basic Nascom avec module SIO
La documentation de "Grant's 7-chip Z80 computer" avec les commandes supplémentaires:
Écrire un commentaire