Imageamento do HD de um PC-XT Scopus Nexus 2600


#1

Hello!
Aqui no acervo do projeto Paidéia (LASSU-USP) onde trabalho, temos um computador clone de PC-XT da Scopus, Nexus 2600, em perfeito estado (exceto duas teclas faltando do teclado :slight_smile: ), cujo HD ainda funciona e contém alguns dados interessantes (por exemplo o código fonte de um software que SÓ funciona no Nexus 2600, que talvez nos ajude a entender as diferenças de hardware entre o Nexus e o XT que impedem ele de funcionar no emulador de XT do MAME), no entanto, como o HD já tem uma idade avançada (Estamos falando de um computador dos anos 80 afinal), ele pode morrer a qualquer minuto, já é possível escutar alguns sons estranhos saindo do HD de vez em quando.

Scopus Nexus 2600

Portanto surgiu o desejo de ter uma imagem deste HD num computador moderno, para que seja arquivado e manipulado sem risco ao hardware original.

Softwares de imageamento para IBM-PC já existem, mas eu não encontrei nenhum que tinha as opções que eu queria.

Eu queria algo que tirasse cada bit do HD e mandasse para a porta serial, onde eu ligaria um null-modem e um cabo Serial-USB e receberia os dados num computador rodando linux moderno.

Pesquisei um pouco sobre softwares que fizesssem mais ou menos isso mas não encontrei (Minha busca não foi muito extensa, eu queria escrever o código mesmo :), mas se alguem souber de algo assim, me envie)

Então escrevi meu próprio código pra fazer isso, o Nexus tem uma cópia de Turbo C da Borland já instalado, então era simples escrever um código em C, compilar no próprio Nexus e rodar.

O código que eu escrevi está disponivel em: https://github.com/affonsoamendola/xt-hd-imager
Divirtam-se.

Eu poderia ter escrito o código bem mais low-level, usando interrupção de software, int 14h e essas parada toda pra ler o hd e enviar pra porta serial, mas eu decidi por usar as funções de bios disponiveis com o compilador que eu usei (bios.h), eu não sei se outros compiladores da época tem essas funções, talvez esse código só compile em Turbo C, mas eu n tenho certeza, uma ideia pro futuro é implementar essas funções de leitura de HD e envio de dados pela COM, manualmente, para não ficar dependendo de software comercial de 30 anos atrás.

Para usar o programa é preciso informar algumas coisas, como o tipo do HD (Em Heads,Cylinders/Head,Sectors/Cylinders,SectorSize), e o lugar onde deve começar a leitura e o lugar onde deve parar a leitura (Em CHS tbem).

Ao informar tudo, o programa começa a enviar na hora que a ultima informação é inserida.

Para receber os dados a intenção é escrever um programa próprio, mas é meio desnescessário, qualquer programa de terminal serial com capacidade de log puro funciona, para o imageamento própriamente dito, estou usando no momento o software Kermit, disponivel nos repositorios do Ubuntu.

Os testes preliminares indicam que tudo esta funcionando perfeitamente, ainda falta rodar o programa no HD inteiro, e enviar todos os bytes, mas isso demora.

O programa tem tempo de operação teórica de umas 2h 30 (4306175128/9600 s) para o HD de 10 MB no Nexus, mas medindo o tempo de leitura de cada setor com um cronometro, obtive um tempo estimado de 4h (Espero nunca ter que imagear um HD de mais de 15 MB com esse software).

Talvez seja possível melhorar o tempo usando comunicação paralela ao invés de serial, mas eu não sei.

Estou rodando o programa no HD inteiro agora, com sorte em 4 h terei uma boa imagem dele.


#2

Bem maneiro! Parabéns!

Depois de ter uma imagem do disco você consegue montá-la? Há ferramenta pra montar o sistema de arquivos do PC-XT? A propósito, qual é o sistema usado?


#3

Muito obrigado :slight_smile:

Então, teóricamente falando, com uma imagem dessas seria sim possivel montar o disco em um sistema moderno, já que a formataçao do disco está em FAT16 (Linux pelo menos eu sei que é possivel), talvez seja nescessária alguma manipulaçao na imagem para uma montagem dessas funcionar no entanto, ja que a imagem contém também informaçoes além das tabelas fat e dados, como a seção de boot e etc.

Uma experiencia que realmente deveria funcionar sem qualquer manipulaçao seria rodar esse hd no emulador de PC-XT do MAME, acredito que a imagem de hd que ele usa precisa do hd inteirinho.

Quanto a sistema, o Nexus está rodando IBM PC-DOS 3.3 e o computador mais moderno esta com Ubuntu