Restaurar outro PDP-11/04

Tradução de outro artigo de recuperação do PDP-11/04. Você pode ler a última trilogia aqui - parte 1 (próprio PDP-11/04), parte 2 (estação de fita TU60), parte 3 (terminal LA30). Itálico são meus comentários.

PDP-11/04, enviado por Gunnar


Recebemos esse dispositivo da Gunnar Barbro e, com ele, vários itens diferentes para o PDP-11. Mas o estado do próprio computador estava longe de ser perfeito. Não havia processadores e placas de memória suficientes, o interruptor foi substituído por um remake e, além disso, tudo estava terrivelmente empoeirado. A placa do console de programação KY11-LB, XY11 (um módulo para controlar uma plotadora, por exemplo, IBM 1627, que veio com máquinas DEC e era canônica CalComp 565 ), KW11-P ( módulo RTC programável, sim, estava conectado ao backplane ) Sim, havia uma placa inteira sob o RTC! ), A placa principal RK11-D com um conjunto de módulos (um controlador para unidades de disco magnético, era um conjunto de placas (3 ou 4 peças), combinado por uma placa comum ) e o DR11-B (Controlador DMA, que, novamente, consistia em várias placas: M7194, M971, M5916, M7820, ... ), também com todos os módulos.



Limpeza


Desmontamos o computador em partes e lavamos-os delicadamente com água e sabão e depois os secamos com um compressor. Após a secagem, eles foram coletados em um único todo. Durante esses procedimentos, pontos de ferrugem foram encontrados aqui e ali.

Montagem e inspeção


Obviamente, nada funcionou mesmo quando conectamos o processador e as placas de memória retiradas de nossas ações! O console estava morto. Se no início pudéssemos discar códigos digitais, e eles fossem exibidos no console (indicador de sete dígitos e seis dígitos ), depois de algum tempo a situação piorou e essa oportunidade desapareceu.

KY11-LB


KY11-LB é uma opção muito interessante disponível para PDP-11/04 e PDP-11/34. Você pode não apenas ligar e desligar a CPU, depurar o código, visualizar e alterar a memória, inserindo programas e dados na máquina, mas também usar o modo de serviço, no qual a depuração passo a passo do microcódigo do processador está disponível! Esse recurso é fornecido ao conectar um par de loops ao módulo do processador. Mas se o processador estiver ausente ou congelar, o KY11-LB permitirá que você trabalhe com o Unibus (um barramento que conecta módulos em muitos computadores DEC) sem a participação da CPU. Isso ocorre devido à presença de seu próprio microprocessador i8008. Na foto abaixo eu circulei em vermelho. E isso é uma ótima notícia se você precisar verificar a operação do próprio barramento ou realizar testes simples de memória e placas de E / S. Quando um destino inexistente é solicitado, a lâmpada BUS ERR acende. Jörg Hoppe escreveu um excelente documento sobre o uso do KY11-LB.



Após conectar o analisador lógico, verifiquei se o 8008 na placa M7859 (KY11-LB) funciona normalmente e executa o programa gravado corretamente. Mas o código acreditava que ninguém pressionava nenhuma tecla ... Acabou que todos os sinais CLR ( apagados, um sinal para apagar o registro ) dos registros de saída estavam em um estado ativo. O controlador de barramento unibus que processou o sinal DCLO (o sinal no barramento Unibus, que informa que a tensão CC está muito baixa ) estava com defeito. Vários drivers de buffer de coletor aberto e chips de registro estavam com defeito. Assim que os substituí, o console ganhou vida! Mas, novamente, houve uma falha após iniciar o processador e testá-lo com o diagnóstico de sua funcionalidade. E duas vezes O primeiro é um bug no M9301, a placa de inicialização. O oitavo bit no barramento de dados foi o último disponível para o motorista. Ele não conseguia ler dados suficientes do ônibus. Na segunda vez, o processador simplesmente congela. Nada foi definido no barramento de endereços, e o exame do microcódigo mostrou que o plugue acontecia ao tentar capturar o barramento. O processador só inicializou depois que tirei o M7859 ( KY11-LB) Verificou-se que o M7859 gerou um sinal BBSY de 9MHz no barramento Unibus ( Bus Busy, no estado ativo, sinaliza que sinais D0-D15 (os dados solicitados estavam chegando através deles) estão sendo usados ​​por alguém ). Porque Um gatilho 7474 quebrou e oscilou como um louco. Depois de substituí-lo, o processador e os diagnósticos de memória foram bem-sucedidos!

M9301-YB


O PDP-11/04 M9301-YB é um módulo de inicialização e um terminador. A PROM da placa armazena o emulador do console e o código de inicialização para vários dispositivos comuns. Para que o processador inicie a execução imediatamente após iniciar a partir da área de inicialização na PROM, o módulo gera um endereço especial 0173000 no barramento ( pulso de 300ms usando o multivibrador 9602 ) ( geralmente um sistema de números octais é usado para pdp, portanto, zeros no início dos números não são preenchidos, ou seja, uma referência a CC ) e o processador solicita o endereço de resumo após uma falha de energia, configurando o endereço 024/026 no barramento Unibus ( no primeiro endereço o registro MMIO em que o PC está localizado, no segundo - PSW, palavra de status do processador, vários sinalizadores e status do processador) Como resultado, uma solicitação de dados é enviada ao barramento nos endereços 0173024 e 0173026. Para a célula 0173024, o M9301 encontra uma correspondência entre o conjunto de valores do microinterruptor ( na foto, no centro, 10 peças ) e os dados no PROM. Essas opções, de fato, determinam a partir de qual endereço no espaço 0173xxx o processador iniciará a execução. Despejei quatro chips PROM - 23-038A9 , 23-039A9 , 23-040A9 e 23-041A9 . Como o M9301-YB inverte alguns bits para suportar a possibilidade de disjunção dos comutadores da placa com sinais externos ( nos contatos fotográficos são TP1 / TP2 / TP3, seus valores OR estão com os valores dos microinterruptores na placa, por exemplo, TP1 está conectado a S1 e S2 ), escrevi um pequenoum programa que combina esses quatro arquivos em um único binário . Tendo feito apenas a análise inicial da lista do desmontador, no entanto, eu já notei que o código é muito semelhante ao PROM do M9301-YA, exceto que os blocos de código estão espalhados em endereços diferentes.



Inicie o RT11SJ e o XXDP V2.2



Para executar cada um desses programas, você precisa do procedimento apropriado no código do carregador de inicialização. Normalmente, esses procedimentos são executados em um chip PROM separado, cuja execução do código ocorre ao digitar certos caracteres no emulador de console. Mas nesta máquina há uma placa M9201-YB que não contém um carregador de inicialização primário da DU (o DEC possui nomes muito informativos, a DU é um carregador de inicialização da mídia via MSCP (MSCP é um protocolo para comunicação com unidades, como ATAPI) ). Então eu tive que martelar este gerenciador de inicialização manualmente (o emulador de console, que faz parte deste módulo, suporta 4 funções - carregando o endereço L, lendo a memória no endereço E, escrevendo no endereço D, iniciando a execução de S; na verdade, isso permite que você insira o código manualmente. A sequência de comandos do tipo L 016000, D XXXXXX, D XXXXXX, ..., S 16002 ). Não foi fácil encontrar um gerenciador de inicialização adequado, mas ainda encontrei um no SimH de origem ( emulador de diferentes sistemas antigos ). Usando o PDP11GUI , carreguei um pequeno arquivo na memória da máquina. E funciona (pelo menos na maioria dos casos).

Despejar este gerenciador de inicialização 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  

Comece a preencher a memória com 016000 e a execução com 016002 ( 0x4455 - palavra mágica ).



Depois disso, tentei iniciar a imagem de disco com o XXDP v2.2. Mas, infelizmente, não houve sucesso. A linha de comando XXDP apareceu, mas todos os comandos que funcionavam com o disco, como "D" ( obtém uma lista de arquivos na mídia carregada ), terminaram com um erro no console "? RD ERR". Parece que o programa não pode acessar o disco. Por isso, verifiquei o pequeno kit de distribuição RT11 ( sistema operacional em tempo real para PDP-11 ). Criou uma imagem de disco com a versão 5.3 e tentou iniciar. E tudo correu bem! Você pode jogar Adventure ou programar no BASIC'e!

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


All Articles