[SHARP MZ-80K] Probleme de RAM

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Totor le Butor
Messages : 2224
Inscription : 07 sept. 2011 16:14
Localisation : Paris - Mezels

Re: [SHARP MZ-80K] Probleme de RAM

Message par Totor le Butor »

Le 710 est un 15 Mhz plus récent (~1985) que le 712 (~1978), suivant les révisions (a, b, c ou d) de chacun de ces scopes ils peuvent monter à 20 Mhz.

Une sonde réglable en 1X et 10X est plus souple car elle te permettra de mesurer des tensions très basses de l'ordre de 5 mV en X1 et de profiter de la pleine sensibilité du scope alors qu'en X10 tu atténues le signal d'un facteur de 10 donc 50 mV par carreau.
Le défaut des sondes réglables est justement le petit switch qui s'use et qui finit par créer des faux contacts, sans compter sur les confusions lorsque tu changes par inadvertance l'atténuation.

En définitive une sonde X1 est utile quand tu bricoles de l'analogique jusque 1 ou 2 Mhz car elle pourrait te montrer un signal de quelques millivolts dans un préampli par exemple alors que la X10 est plus adaptée pour le digital avec des fréquences plus hautes et des tensions plus importantes.

Le prix d'un 20 Mhz s'échelonne en 50 et 100 €, un 100 Mhz entre 80 et 120 € en moyenne , au dessus c'est trop cher !
Il est d'ailleurs instructif d'aller voir les ventes terminées d'oscilloscope sur EB, tu verras qu'au dessus de ces tarifs les scopes ne partent pas.
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes .
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

Bon donc si je comprends bien, ni le CS1 ni le CS2 ne sont en cause ici (les lignes seraient connectées comme il faut). Oui, c'est moi qui ai le MZ-80 K de petitjd maintenant. Je vois bien qu'il y a 48 Ko de puces DRAM, mais effectivement le BASIC semble en voir moins. J'espérais que c'était une histoire de CS1 ou CS2 à souder comme il faut. Je n'avais pas vu ce post.

Et sinon pour la valeur de mémoire affichée par le BASIC, il faut bien sûr retrancher l'occupation du BASIC en RAM puisque le MZ n'en dispose pas en ROM.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

Puisque chaque ligne constitue un octet sur une plage de 16 KO, il suffit que l'une des 8 puces soit en panne pour que tout l'espace de 16 KO est corrompu. J'aurais aimé avoir la rom RAM tester pour mettre à la place de la ROM. Ce dernier aurait pu dire quelle puce déconnait.

Ce que j'ai fait, j'ai enlevé les RAMs de la ligne 2 et 3 et j'ai obtenu 1912 octets de restant après le chargement du BASIC. En remplissant la ligne 2 avec pour moitié les RAMs de la ligne 2 et pour l'autre moitié celles de la ligne 3, le chargement du BASIC ne donne pas la main au BASIC - donc pas affichage de mémoire restant. Si je remets toutes les RAMs de la ligne 2 dans sa ligne (la ligne 3 toujours vide sur la carte mère), j'ai 2004 octets.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

J'ai trouvé sur le site sharpmz.org un programme RAMTEST qui se charge dans la mémoire vidéo pour s'exécuter. J'ai testé par la même occasion la version MZ de SDLEP-READER (le dernier hardware que j'ai mis au point pour le MZ-700) sur le MZ-80 K. Ca a fonctionné, j'ai pu lancer RAMTEST avec : il me met que l'adresse $505C est fautive (la RAM commence à $1000). Ce qui m'ennuie, c'est que le test est moins complet que le RAM tester en ROM qui est capable de déterminer quelle puce (chaque puce contient un bit précis de l'octet) car il ne me détermine pas quelle est la puce. On sait juste que la ligne II est fautive.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

Ok, j'ai modifié légèrement le programme RAMTEST pour qu'il m'affiche l'octet qui lit à l'adresse fautive : 0x40 sachant qu'il devait lire 0x00. Donc ça semble être la puce avant dernière à droite sur la ligne II. Je remplace par une autre et bingo, j'ai 0xFF en adresse 0x9000 maintenant (vu que la RAM commence en 0x1000, ça fait donc 0x8000 soit pile dans la troisième ligne III qui n'a pas de puce). Donc je devrais avoir récupérer 32 Ko. Vu qu'il me manque une puce pour faire la troisième ligne, je vais devoir commander des puces.
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [SHARP MZ-80K] Probleme de RAM

Message par fneck »

Bravo, c'est du bon travail. Tu pourras éventuellement proposer ton programme modifié à l'auteur ou au site sharpmz.org 8)
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

Oh je n'ai pas encore gagné :(. Le chargement du BASIC me dit que je n'ai gagné que 200 octets environ. J'ai peur qu'une des puces présente un bit coincé à 0 qui passe le test avec l'écriture puis lecture d'un motif 0x00 (premier passage du test : il y en a 256 pour couvrir tous les combinaisons) et qui fait arrêter le test sur la troisième ligne manquante. J'ai peur qu'en excluant du test la troisième ligne, je vais trouver d'autres puces en panne lorsque le motif incrémentera. Et je m'inquiète sur la cause de leur panne.

Sinon pour le programme, il n'a pas d'auteur et je le traficote directement en binaire vu que je dois l'adapter à mon cas.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

Bon, j'ai ressorti le MZ-80 K pour avoir le fin mot de l'histoire. J'ai dû modifier à nouveau le programme pour qu'il passe au crible uniquement les premiers 32 Ko (donc les deux rangées de RAM). Ce faisant, j'ai trouvé une deuxième puce défectueuse dans la deuxième rangée. Je l'ai donc remplacé par une de la troisième rangée que j'avais enlevée. Et là le test s'est déroulé sans accroc jusqu'à qu'il reboucle : aucun défaut. Donc a priori, deux puces défecteuses sur la deuxième rangée. Hélas, je ne peux pas tester la troisième rangés avec deux puces défectueuses - quoiqu'en les mettant à la fin de la rangée (ou en ne mettant pas de puces) pour encoder les bits 7 et 6, en ne testant uniquement le dernier 16 Ko sur les 48 Ko (troisième rangée) et en ignorant les bit 7 et 6 sur les octets écrits et relus pour comparaison, je pourrais déterminer si les 6 autres puces sont défectueuses ou non... à méditer.

Pour que le test soit plus exhaustif, j'ai donc chargé le BASIC depuis sa cassette (environ 12 Ko de code et 14 Ko en fonctionnement) et il m'affiche un peu moins de 19 Ko de libre au lieu des 2 Ko - la somme avoisinne bien les 32 Ko attendu. J'ai commandé trois rangés de RAM au cas où.

Voilà, voilà.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

J'avais commandé 24 barrettes de RAM (3 rangés x 8 puces) et elles sont arrivées. J'ai donc ressorti le MZ-80 K, le SDLEP-reader pour MZ et réécris à zéro un programme de test de RAM pour que ce dernier puisse tester rapidement avec 8 combinaisons d'octet (car 8 puces à tester) sur toute la RAM (i.e, 48 Ko). Donc, j'ai essayé avec les anciennes puces dans la troisième rangée pour détecter celles qui étaient défecteuses une par une en la remplaçant par une nouvelle barrette. Résultat : 6 barrettes défectueuses sur les 8 anciennes de la troisième rangée. Il est clair que sans le programme, cela aurait été un enfer à trouver les puces non défectueuses parmi les trois rangés pour parvenir à les mettre sur deux rangés et laisser la troisième vide. Au final, j'ai remplacé les 8 dernières barrettes par les nouvelles et je vais garder les deux anciennes qui ne sont pas défectueuses. Au fait, on en fait quoi des barrettes défectueuses ?

Voici le programme pour tester rapidement la défectuosité d'un chip :

Code : Tout sélectionner

	org 	0xd000
size:	dw	0xbdff	; size in bytes (minus 512 bytes because ROM monitor use them)
addr:	dw	0x1200	; start address (minus 512 bytes because ROM monitor use them)
patt:	db	0xfe	; bit pattern, all bits but bit 0 initially set to 1 (testing D0)
mask:	db	0x00	; exclusion mask, chip #n is excluded with bit #n set to 1 so the slot of chip #n may be empty
_main:
l0:
	ld	de,0x0f10	; column: 16, line: 15
	ld	(0x1171),de	; set monitor cursor
	ld	hl,(patt)	; load pattern into L and mask into H
	ld	a,l		; set current pattern to test
	or	h		; current pattern is OR-ed with exclusion mask
	push	af		; save the current pattern
	cpl			; for display, we prefer a two-complemented pattern to determine which chip is tested (01, 02, 04, 08, 10, 20, 40 and 80)
	call	0x03c3		; monitor call to display hexadecimal byte from A
	pop	af		; restore the current pattern
	ld	bc,(size)	; set the size to fill
	ld	hl,(addr)	; set the start address to fill
	push	bc		; save the size for scan
	push	hl		; save the start address for scan
	push	hl		; transfer HL into DE
	pop	de
	inc	de		; and increase DE
	ld	(hl),a		; set the first byte with the current pattern
	ldir			; trick to fill all the memory block with the current pattern
	pop	hl		; restore the start address to scan
	pop	bc		; restore the size to scan
l2:	cpi			; read the byte and compare to the current pattern 
	jr	nz,x0		; if not equal a chip must be defective
	jp	pe,l2		; otherwise loop to scan the next byte
	ld	hl,patt	
	rlc	(hl)		; rotate the byte in patt (next chip)
	jr	l0		; loop for testing the next chip
x0:	dec	hl		; retrieve the faultive address
	push	hl		; save it
	ld	a,(hl)		; read the byte at this address
	cpl			; for display, we prefer a two-complemented bytes
	call	0x03c3		; monitor call to display hexadecimal byte from A so the defective chip can be determined
	pop	hl		; restore the faultive address
	call	0x03ba		; monitor call to display hexadecimal word from HL so the RAM row can be determined
	jp	0x0082		; back to monitor prompt
end	_main
BASIC SP-5025: 34680 bytes. Si on retire cette quantité sur les 48 Ko, on a quelque chose comme 14 Ko, ce qui est cohérent.
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [SHARP MZ-80K] Probleme de RAM

Message par 6502man »

Merci pour le code de test RAM, ça peut servir au cas où sur un MZ-xx :wink:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: [SHARP MZ-80K] Probleme de RAM

Message par hlide »

Une précision, j'ai mis $1200 au lieu de $1000 parce que j'avais testé sur le MZ-700 et que ça provoquait une sorte de scrolling (l'écran se vidait de ses caractères et donc du programme qui s'exécute en VRAM !) mais au bout du compte $1000 devrait fonctionner sur le MZ-80 K (ce que faisait le programme d'origine) si on veut vraiment scanner toute la RAM.

- Le programme est fonctionnel pour le MZ-80 et normalement pour ses dérivés (K, K2E, C).
- Je ne sais pas pour le MZ-80 A et pour son cousin japonais MZ-1200, mais probable que ce le soit.
- Le programme est fonctionnel pour le MZ-700 mais ne couvre pas l'ensemble complet de la RAM disponible. C'est un peu compliqué à faire car il faudrait switcher les banks et déplacer le code selon l'endroit de la RAM à tester.
Répondre