PC-1600: RAM check (+ tous les modules, incl CE-163)

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
spellbound
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 102
Enregistré le : 06 mai 2015 12:06

PC-1600: RAM check (+ tous les modules, incl CE-163)

Message par spellbound »

Bonjour,
pour les propriétaires de PC-1600, qui sont incertains ou curieux si un module RAM ou la RAM intégrée est sans erreurs matérielles, je publie ici mon testeur RAM pour le PC-1600.
Il est écrit dans Assembler et peut vérifier tous les modules compatibles avec le PC-1600, y compris sa RAM intégrée interne

(Sorry, I have to switch to english, since my French is still not good enough for writing :oops: )
  • CE-151 - in slot 1
  • CE-155 - in slot 1
  • CE-159 - in slot 1
  • CE-161 - in slot 2
  • CE-163 - in slot 2
  • modified CE-163 - in slot 1
  • CE-1600M - in slot 1
  • custom 32K - in slot 1
  • CE-1601M - in slot 2
  • custom 64K to 256K - in slot 2
  • custom 512K (my 'superRAM' module) - in slot 2
  • built-in RAM - by running the test prog from any compatible module in slot 1 (S1)
Download:
PC1600_CHKRAM.zip

For convenience I assembled the different configurations into BLOADable PC-1600 files,
so that you do not need a PC-1600 assembler. See table in CHKRAM.txt (incl. CALL-addresses).

The test is data-destructive for all modules (every cell set to &FF) but preserves data for the built-in RAM.
Every memory cell is tested with four different patterns (&00, &55, &AA, &FF) in a write-read-verify cycle
(see CHKRAM.ASM).

In case of an error the resp. program displays "failed!" and the respective memory cell location is logged
(see CHKRAM.txt for details).

Some words on the CE-163:
The CE-163 is a 2x16K module designed for the PC-1500(A) with an explicit bank switch between the two 16K banks by the user:
  • PC-1500:
    POKE&5800,0 => bank0 (16K)
    POKE&5801,0 => bank1 (16K)
  • PC-1500A:
    POKE&6800,0 => bank0 (16K)
    POKE&6801,0 => bank1 (16K)
So this bank switch behaves like if you had two distinct 16K modules alternatingly mounted in the hardware slot.
Now: an unmodified CE-163 is INCOMPATIBLE with slot 1 of the PC-1600, but compatible with slot 2!
But the PC-1600 sees it always as a 16K module (like the CE-161).
Mounted on a PC-1600 at slot 2 the CE-163 bank switch can be operated by the user as follows:
  • OUT&28,0 => bank0 (16K)
  • OUT&29,0 => bank1 (16K)
So, to test an unmodified CE-163 you run the CE-161 test twice with a manual bank switch in between.

However the CE-163 can be modded quite easily to become a 32K module for the PC-1600, compatible with slot 1 and 2 (like the CE-1600M).
In this case it must be tested in slot 1 with the CE-1600M test.
Modifié en dernier par spellbound le 05 nov. 2017 02:21, modifié 1 fois.
spellbound
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 102
Enregistré le : 06 mai 2015 12:06

Re: PC-1600: RAM check (+ tous les modules, incl CE-163)

Message par spellbound »

Ok, here are some more details on the CE-163 and an explanation why it's incompatible with slot 1 of the PC-1600.
Here is a circuit diagram I originally got from ROM1500. In orange I added the mod for conversion into a 32K PC-1600 module.
I also added the bank switch-method for the PC-1600.

Image

For the unmodified CE-163 the bank switch is operated by signals S3 and A0.
For slot 1 of the PC-1600 the S3 signal is mapped to the address range &A800-&AFFF (except for 8K modules).
That means, every write access to an even address in that range switches to bank0, while a write access to every odd address in that range switches to bank1. On the other hand the 16K address range of the modules RAM is mapped to &8000-&BFFF.
So the bank switching addresses are located WITHIN the modules regular address space, when mounted in slot 1!
And that of course leads to completely weird and faulty behavior, as soon as you "touch" &A800-&AFFF - e.g. with BASIC-code or whatever.
So - just don't use it in S1 ;-)
Slot 2 however has a completely different hardware mapping for the respective signal (S3).
There it is called K2# and is part of the so called "vertical bank switch" for modules > 32K.
K2# is operated via port access (OUT-command) only and is not mapped to any regular RAM-address.
So no inconsistency problem for the CE-163 in slot 2.

By the way - for the exact same reason, modules > 32K (e.g. CE-1601M) are also incompatible with slot 1 of the PC-1600!

Why is it designed that way?
Because SHARP had to care about compatibility with the smaller PC-1500(A) modules as well as supporting new modules larger than 32K.
That was impossible with only one slot-signal layout. The general compatibility rules are:
  • modules < 16K => slot 1 only
  • modules 16K,32K => slot 1 or 2
  • CE-163 => slot 2 only
  • modules > 32K => slot 2 only
I hope this helps for clarification.
Avatar du membre
FlyingNono
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1941
Enregistré le : 05 déc. 2003 20:26
Localisation : (encore dans les cartons)

Re: PC-1600: RAM check (+ tous les modules, incl CE-163)

Message par FlyingNono »

spellbound a écrit : 07 oct. 2017 17:56 I hope this helps for clarification.
Yes !
Many Thanks Spellbound !
J'ai un phaseur, un générateur de changement d'état physique, je n'hésiterai pas à m'en servir !
Avatar du membre
meridian
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 1151
Enregistré le : 29 oct. 2014 05:08
Localisation : Seine-Saint-Denis

Re: PC-1600: RAM check (+ tous les modules, incl CE-163)

Message par meridian »

Hi,

thank you for this explanation :D
Nikass
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 941
Enregistré le : 12 nov. 2015 22:00
Localisation : trouducul du 31 et 34 aux lunes bleues

Re: PC-1600: RAM check (+ tous les modules, incl CE-163)

Message par Nikass »

spellbound a écrit : 07 oct. 2017 17:51(Sorry, I have to switch to english, since my French is still not good enough for writing :oops: )
No problem, let's see if I'm still able to write decent French text even when it comes to subjects I 1: don't care about 2: don't master at all :-) Anyway, that's good for practice.

**********************************

Bonjour,

Ceci s'adresse aux propriétaires de PC-1600, qui veulent savoir si un module RAM ou la RAM intégrée ne présente aucun défaut. Je vous propose mon testeur de RAM pour le PC-1600.

Il est écrit en assembleur et peut vérifier tous les modules compatibles avec le PC-1600, y compris sa RAM intégrée.

CE-151 - slot 1
CE-155 - slot 1
CE-159 - slot 1
CE-161 - slot 2
CE-163 - slot 2
CE-163 modifié - slot 1
CE-1600M - slot 1
32K fait maison - slot 1
CE-1601M - slot 2
64K à 256K fait maison - slot 2
512K fait maison (mon module 'superRAM') - slot 2
RAM intégrée- en exécutant le programme de test depuis n'importe quel module compatible en slot 1 (S1)

Téléchargement:

http://drive.google.com/uc?export=view& ... ldLVVZhYlE

Pour faciliter les choses, j'ai assemblé les différentes configurations dans des fichiers BLOADables (eg, que l'on peut charger par commande BLOAD) pour PC-1600. Vous n'avez donc pas besoin d'un assembleur PC-1600. Référez-vous à la table contenue dans le fichier CHKRAM.txt (qui contient les adresses à passer en paramètre de CALL).

Quelques mots à propos du CE-163:

Le CE-163 est un module 2Kx16 prévu pour le PC-1500(A) avec une sélection de plages explicite sous contrôle de l'utilisateur:

PC-1500:
POKE&5800,0 => bank0 (16K)
POKE&5801,0 => bank1 (16K)
PC-1500A:
POKE&6800,0 => bank0 (16K)
POKE&6801,0 => bank1 (16K)

En conséquence, cette sélection se comporte comme si l'utilisateur disposait de deux modules 16K montés l'un ou l'autre dans l'emplacement physique, de façon exclusive.

Cela dit, attention: un CE-163 non modifié n'est pas compatible avec le slot 1 et l'est en revanche avec le slot 2. Le PC-1600 le verra toujours comme un module 16K (comme le CE-161).

Monté dans le slot 2 d'un PC-1600, la sélection des plages du CE-163 se contrôle par l'utilisateur de la manière suivante:

OUT&28,0 => bank0 (16K)
OUT&29,0 => bank1 (16K)

Donc, pour tester un CE-163 non modifié, il suffit de lancer le test du CE-161 deux fois en permutant les plages entre les deux.

Pour finir, le CE-163 se modifie facilement pour devenir un module 32K pour le PC-1600 compatible slots 1 et 2, tel le CE-1600M. Dans ce cas, il convient de le tester en slot 1 avec le test propre au CE-1600M.

**********************************

Quelques explications détaillées sur le CE-163 et la raison pour laquelle il n'est pas compatible avec le slot 1 du PC-1600. Voici le schéma que j'ai récupéré auprès de ROM1500. En orange, vous trouverez les modifications pour le convertir en module 32K pour PC-1600. J'ai aussi rajouté le sélecteur de plages pour le PC-1600.

<circuit ici>

Pour le CE-163 non modifié, la sélecttion s'opère via les signaux S3 et A0.
Pour le slot 1 du PC1600, le signal S3 décode les adresses $A800-$AFFF, sauf pour les modules 8K.
Cela signifie que tout accès en écriture à une adresse paire dans cette plage sélectionne bank0, alors que les accès à une adresse impaire sélectionne bank1. De l'autre côté, la plage de 16K des modules RAM est décodée en $8000-BFFF. Donc, les adresses utilisées pour la sélection de plages se retrouvent dans l'espace mémoire des modules placés dans le slot 1 :oops:

Bien sûr, ceci génère un comportement totalement erratique - il suffit de venir taper dans la plage $A800-AFFF. Donc, ne l'utilisez pas dans le slot 1 :geek:

Le slot 2 décode le signal S3 différemment. Il s'appelle K2# et fait partie du "sélecteur vertical" pour les modules > 32K. K2# est accessible par l'adressage ports (commande OUT) uniquement et n'est pas présent dans l'esapce mémoire conventionnel. Pas de problème d'effet de bord pour un CE-163 en slot 2, donc.

En passant, pour la même raison, les modules >32K (par exemple CE-1601M) sont incompatibles avec le slot 1 du PC-1600.

Pourquoi ce choix de conception ? Parce que SHARP a dû maintenir la compatibilité avec les modules plus petits destinés au PC-1500(A), tout en assurant le support des nouveaux modules plus gros que 32K. C'était impossible avec un signal par slot. De manière générale, la compatibilité suit la règle:

modules < 16K => slot 1 uniquement
modules 16K,32K => slot 1 ou 2
CE-163 => slot 2 uniquement
modules > 32K => slot 2 uniquement

J'espère que ma traduction tient la route :-)

Enjoy !

a+
spellbound
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 102
Enregistré le : 06 mai 2015 12:06

Re: PC-1600: RAM check (+ tous les modules, incl CE-163)

Message par spellbound »

wow - thanks, to me that looks very well translated :wink:
Répondre

Retourner vers « Tous les Pockets »