Restaurer un autre PDP-11/04

Traduction d'un autre article de récupération PDP-11/04. Vous pouvez lire la dernière trilogie ici - partie 1 (PDP-11/04 lui-même), partie 2 (station de bande TU60), partie 3 (terminal LA30). Les italiques sont mes commentaires.

PDP-11/04, envoyé par Gunnar


Nous avons reçu cet appareil de Gunnar Barbro, et avec lui est venu un tas de goodies différents pour le PDP-11. Mais l'état de l'ordinateur lui-même était loin d'être parfait. Il n'y avait pas assez de processeur et de cartes mémoire, l'interrupteur d'alimentation a été remplacé par un remake, et en plus, tout était terriblement poussiéreux. La carte de console de programmation KY11-LB, XY11 (un module pour contrôler le traceur, par exemple, IBM 1627, fourni avec des machines DEC et était canonique CalComp 565 ), KW11-P ( module RTC programmable, oui, étaient connectés au fond de panier ) Oui, il y avait une carte entière sous RTC! ), La carte principale RK11-D avec un ensemble de modules (un contrôleur pour les disques magnétiques, c'était un jeu de cartes (3 ou 4 pièces), combinées par une carte commune ), et DR11-B (Contrôleur DMA, qui, encore une fois, était composé de plusieurs cartes: M7194, M971, M5916, M7820, ... ), également avec tous les modules.



Le nettoyage


Nous avons démonté l'ordinateur en pièces et l'avons lavé délicatement avec de l'eau et du savon, puis l'avons essuyé avec un compresseur. Après séchage, ils ont été rassemblés en un seul ensemble. Au cours de ces procédures, des taches de rouille ont été trouvées ici et là.

Assemblage et inspection


Bien sûr, rien n'a fonctionné même lorsque nous avons connecté le processeur et les cartes mémoire prises dans nos stocks! La console était morte. Si au début, nous pouvions composer des codes numériques, et ils étaient affichés sur la console ( indicateur à sept segments à six chiffres ), puis après un certain temps, la situation a empiré et cette opportunité a disparu.

KY11-LB


KY11-LB est une option très intéressante disponible pour PDP-11/04 et PDP-11/34. Vous pouvez non seulement allumer et éteindre le processeur, déboguer le code, afficher et modifier la mémoire, saisissant ainsi les programmes et les données dans la machine, mais également utiliser le mode de service, dans lequel le débogage étape par étape du microcode du processeur est disponible! Cette fonctionnalité est fournie en connectant une paire de boucles au module processeur. Mais si le processeur est manquant ou se bloque, le KY11-LB vous permet de travailler avec Unibus (un bus reliant les modules dans de nombreux ordinateurs DEC) sans la participation du CPU. Cela est dû à la présence de son propre microprocesseur i8008. Sur la photo ci-dessous, je l'ai encerclé en rouge. Et c'est une excellente nouvelle si vous devez vérifier le fonctionnement du bus lui-même ou effectuer des tests simples de mémoire et de cartes d'E / S. Lorsqu'une destination inexistante est demandée, le témoin BUS ERR s'allume. Jörg Hoppe a écrit un excellent document sur l'utilisation du KY11-LB.



Après avoir connecté l'analyseur logique, j'ai vérifié que le 8008 de la carte M7859 (KY11-LB) fonctionne normalement et exécute correctement le programme enregistré. Mais le code croyait que personne n'appuyait sur aucune touche ... Il s'est avéré que tous les signaux CLR ( effacer, un signal pour effacer le registre ) pour les registres de sortie étaient dans un état actif. Le contrôleur de bus unibus qui a traité le signal DCLO (un signal sur le bus Unibus, qui informe que la tension DC est trop faible ) était buggé. Plusieurs pilotes de tampon de collecteur ouvert et puces de registre étaient défectueux. Dès que je les ai remplacés, la console a pris vie! Mais encore une fois, il y a eu un échec après le démarrage du processeur et le test avec des diagnostics de sa fonctionnalité. Et deux fois. Le premier est un bug du M9301, la carte de démarrage. Le 8ème bit sur le bus de données était le dernier disponible pour le conducteur du bus. Il n'a pas pu lire suffisamment de données dans le bus. La deuxième fois, le processeur se bloque simplement. Rien n'a été défini sur le bus d'adresse, et l'examen du microcode a montré que la prise s'est produite lors de la tentative de capture du bus. Le processeur n'a démarré qu'après avoir sorti le M7859 ( KY11-LB) Il s'est avéré que le M7859 a généré un signal BBSY de 9 MHz vers le bus Unibus ( Bus occupé, dans l'état actif, signale que les signaux D0-D15 (les données demandées provenaient d'eux) sont utilisés par quelqu'un ). Pourquoi? Un déclencheur 7474 s'est cassé et a oscillé comme un fou. Après l'avoir remplacé, les diagnostics du processeur et de la mémoire ont réussi!

M9301-YB


Dans PDP-11/04, le M9301-YB est un module d'amorçage et une terminaison. La PROM de la carte stocke l'émulateur de console et le code de démarrage pour plusieurs périphériques courants. Pour que le processeur démarre l'exécution immédiatement après le démarrage à partir de la zone de démarrage dans la PROM, le module génère une adresse spéciale 0173000 sur le bus ( impulsion de 300 ms à l'aide d'un multivibrateur 9602 ) ( souvent un système de nombres octaux est utilisé pour pdp, donc les zéros au début des nombres ne sont pas du remplissage, à savoir une référence à CC ), et le processeur demande l'adresse de reprise après une panne de courant, définissant l'adresse 024/026 sur le bus Unibus ( à la première adresse, le registre MMIO dans lequel se trouve le PC, à la seconde - PSW, mot d'état du processeur, divers drapeaux et état du processeur) En conséquence, une demande de données est envoyée au bus aux adresses 0173024 et 0173026. Pour la cellule 0173024, M9301 trouve une correspondance entre l'ensemble des valeurs du micro-interrupteur ( sur la photo, en plein centre, 10 pièces ) et les données dans la PROM. En fait, ces commutateurs déterminent à partir de quelle adresse dans l'espace 0173xxx le processeur commencera l'exécution. J'ai vidé quatre puces PROM - 23-038A9 , 23-039A9 , 23-040A9 et 23-041A9 . Étant donné que le M9301-YB inverse certains bits pour prendre en charge la possibilité de disjonction des commutateurs de la carte avec des signaux externes ( dans les contacts photo se trouvent TP1 / TP2 / TP3, leurs valeurs OU correspondent aux valeurs des micro-interrupteurs sur la carte, par exemple, TP1 est connecté à S1 et S2 ), j'ai écrit un petitun programme qui combine ces quatre fichiers en un seul binaire . N'ayant fait que l'analyse initiale de la liste des désassembleurs, j'ai cependant déjà remarqué que le code est très similaire à la PROM du M9301-YA, sauf que les blocs de code sont dispersés à différentes adresses.



Lancez RT11SJ et XXDP V2.2



Pour exécuter chacun de ces programmes, vous avez besoin de la procédure appropriée dans le code du chargeur de démarrage. En règle générale, ces procédures sont effectuées dans une puce PROM distincte, dont l'exécution du code se produit lors de la frappe de certains caractères dans un émulateur de console. Mais sur cette machine, il y a une carte M9201-YB qui ne contient pas de chargeur de démarrage DU principal ( DEC a des noms très informatifs, DU est un chargeur de démarrage à partir du support via MSCP (MSCP est un protocole de communication avec des lecteurs, comme ATAPI) ). J'ai donc dû marteler ce chargeur de démarrage manuellement (l'émulateur de console, qui fait partie de ce module, prend en charge 4 fonctions - chargement de l'adresse L, lecture de la mémoire à l'adresse E, écriture à l'adresse D, démarrage de l'exécution de S, en fait, cela vous permet de saisir le code manuellement. La séquence de commandes de type L 016000, D XXXXXX, D XXXXXX, ..., S 16002 ). Il n'a pas été facile de trouver un chargeur de démarrage qui fonctionne, mais j'en ai quand même rencontré un dans le SimH source ( émulateur de différents systèmes anciens ). Avec l'aide de PDP11GUI , j'ai téléchargé un petit fichier dans la mémoire de la machine. Et cela fonctionne (au moins dans la plupart des cas).

Vider ce chargeur de démarrage MSCP:
0016000  042125  012706  016000  012700  000000  012701  172150  012704
0016020  016162  012705  004000  010102  005022  005712  100001  000000
0016040  030512  001773  012412  006305  100370  105714  001434  012702
0016060  007000  005022  020227  007204  103774  112437  007100  110037
0016100  007110  112437  007114  112437  007121  012722  007004  010522
0016020  012722  007104  010512  024242  005711  005712  100776  005737
0016040  007016  001743  000000  005011  005003  012704  016020  005005
0016060  005007  100000  007204  000000  000001  004420  020000  001041
0016200  000000  

Commencez à remplir la mémoire avec 016000 et à exécuter avec 016002 ( 0x4455 - mot magique ).



Après cela, j'ai essayé de démarrer l'image disque avec XXDP v2.2. Mais, hélas, il n'y a pas eu de succès. La ligne de commande XXDP est apparue, mais toutes les commandes qui fonctionnaient avec le disque, telles que «D» ( obtenir une liste de fichiers sur le support chargé ), se sont terminées par une erreur dans la console «? RD ERR». Il semble que le programme ne puisse pas accéder au disque. J'ai donc vérifié le petit kit de distribution RT11 ( système d'exploitation en temps réel pour PDP-11 ). Création d'une image disque avec la version 5.3 et tentative de démarrage. Et tout s'est bien passé! Vous pouvez jouer à Adventure ou programmer sur BASIC'e!

Source: https://habr.com/ru/post/fr390793/


All Articles