VDK-80: The TRS-80 Virtual Disk Kit

Imagem

Muitos disquetes de CP 500 tem sido preservados até hoje através de processos de conversão de dados que criam "imagens de disco". Essas imagens são armazenadas em arquivos de PC especialmente formatados que podem ser usados em emuladores para recriar experiências fiéis de computadores de 30 anos de idade.

Em fevereiro de 2009 eu comecei a trabalhar em um programa que facilita o gerenciamento de imagens de disquetes de CP 500 em nível de arquivo. Quase 4 anos depois, tudo o que posso dizer é que ele ainda está em desenvolvimento, apesar de já interagir com quase todos os sistemas operacionais e formatos de disco conhecidos do CP 500.

Como isso seria útil? Nos anos 1980 havia um grande número de sistemas operacionais disponíveis no mercado e seus sistemas de arquivo eram geralmente incompatíveis entre si. Em alguns casos, até mesmo entre versões sucessivas do mesmo sistema operacional. A transferência de arquivos entre tais discos não era tarefa fácil. Algumas pessoas ainda tem documentos de valor pessoal nesses discos e eu pensei que poderia tentar ajudá-los a recuperar parte de sua história.

O que ele faz?

O VDK-80 é um programa de linha de comando do Windows que não requer instalação alguma. Se você está procurando uma lista concisa das "features", aqui vai:

  • Mostra o diretório do disco, nome do disco, conteúdo dos arquivos e setores do disco
  • Suporta ler, gravar, renomear ou excluir arquivos individuais ou grupos de arquivos
  • Suporta todos os sistemas operacionais conhecidos dos TRS-80 Model I/III/4, exceto CP/M
  • Suporta todos os formatos conhecidos de imagem de disquetes: JV1, JV3 e DMK

Tecnicalidades

Quando comecei este projeto em 2009, eu estava sentindo falta da emoção dos velhos tempos, o que, penso eu, explica algumas opções de design "estranhas" que fiz, como escrever o software em linguagem assembler usando orientação a objetos para resolver um problema incomum, tal como ler discos de computador muito antigos. Meu primeiro impulso foi o de trabalhar com disquetes reais do CP 500, mas depois Ira Goldklang me convenceu de que um software para manipular imagens de disco teria mais valor.

O código foi construído em módulos, ou "classes" no jargão OO. Há dois grupos principais de módulos que compartilham as mesmas características: um é a Interface de Sistema Operacional e a outra é a Interface de Disco Virtual. Esta última é responsável por "decodificar" o formato do arquivo e apresentar os dados como setores padrão para a camada superior. O primeiro interpreta a forma como cada sistema operacional armazena seus arquivos e depois remonta os setores como arquivos quando solicitado pela Interface do Usuário.

A imagem abaixo ilustra a relação entre os módulos especializados e as interfaces do programa:

Imagem

Atualmente a interface de usuário é de linha de comando, mas o objetivo final é ter uma interface gráfica muito mais amigável. Será possível trocar arquivos entre discos apenas arrastando e soltando-os de uma janela para outra, por exemplo.

Como usá-lo

Nesta seção eu mostrarei como executar uma variedade de operações com o programa. Nos exemplos abaixo, eu assumo que você tenha colocado o arquivo executável do VDK-80 em um diretório do seu computador e que você tenha adicionado esse diretório à variável de ambiente PATH, permitindo que executemos o programa a partir de qualquer outro diretório.

Obtendo ajuda

O VDK-80 faz um bom trabalho identificando formatos de disco e sistemas operacionais automaticamente, mas há momentos em que um ajuste pode ser preciso. Se você precisar de ajuda para lembrar qual parâmetro faz o quê, digite apenas:

C:\>v80
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Syntax: V80 [switches]  [source_filespec] [target_filespec]

Commands:
	-l		List directory (default)
	-r		Read files
	-w		Write files
	-n		Rename files
	-k		Delete files
	-f		Dump file contents
	-d		Dump disk contents

Options:
	-s		Include system files
	-i		Include invisible files
	-x		Show extra information
	-p		Skip the disk parameters check
	-c		Skip the directory structure check
	-g		Skip the GAT auto-fix in TRSDOS system disks
	-b		Read as much as possible from bad files
	-ss		Force the disk as single-sided
	-ds		Force the disk as double-sided

Disk Interfaces:
	-dmk		Force the DMK disk interface
	-jv1		Force the JV1 disk interface
	-jv3		Force the JV3 disk interface

DOS Interfaces:
	-cpm		Force the CP/M system interface (INCOMPLETE)
	-dd		Force the DoubleDOS system interface
	-md		Force the MicroDOS/OS-80 III system interface
	-nd		Force the NewDOS/80 system interface
	-rd		Force the RapiDOS system interface
	-td1		Force the TRSDOS Model I system interface
	-td3		Force the TRSDOS Model III system interface
	-td4		Force the TRSDOS Model 4 system interface

Os comandos foram separados em grupos apenas por uma questão de organização, porque eles podem ser usados em qualquer ordem na linha de comando, seja antes, entre ou após os nomes de arquivo.

Listando o diretório do disco I

Se você digitar apenas o nome do programa e um nome de arquivo, o VDK-80 listará o diretório do disco excluindo arquivos de sistema e invisíveis. A listagem contém o nome e extensão do arquivo, o tamanho do arquivo em bytes, a data do arquivo formatada como yyyy/mm/dd e os atributos do arquivo como "SIMP", significando: Sistema, Invisível, Modificado, Proteção (0-7).

C:\>v80 td13.dmk
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Listing directory contents:

Filename	    Size	Date		Attr
----------------------------------------------------
LPC/CMD     	     256	1981/05/00	---0
MEMTEST/CMD 	    2048	1981/05/00	---0
HERZ50/BLD  	      40	1981/05/00	---0

Total of 2344 bytes in 3 files listed.

The operation completed successfully.

Listando o diretório do disco II

Como mencionado anteriormente, você pode ajustar o comportamento do programa adicionando na linha de comando alguns dos argumentos acima listados. No exemplo a seguir, o VDK-80 é solicitado a mostrar o formato de disco e sistema operacional identificados (-x), e então listar somente os arquivos com extensão CMD (*/CMD), incluindo os arquivos de sistema (-s) e invisíveis (-i).

C:\>v80 td13.dmk */cmd -i -s -x
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

VDI: DMK (40:1:18,DD)
OSI: TD3 (TRSDOS,02/20/99,00)

Listing directory contents:

Filename	    Size	Date		Attr
----------------------------------------------------
BASIC/CMD   	    5120	1981/05/00	SI-6
CONVERT/CMD 	    2560	1981/05/00	SI-6
XFERSYS/CMD 	    1024	1981/05/00	SI-6
LPC/CMD     	     256	1981/05/00	---0
MEMTEST/CMD 	    2048	1981/05/00	---0

Total of 11008 bytes in 5 files listed.

The operation completed successfully.

VDI é a sigla de Virtual Disk Interface e DMK é um dos três formatos de disco suportados pelo programa (JV1, JV3, DMK). Os números entre parênteses estão formatados como TT:S:SS,DD, representando o número de trilhas, lados, setores por trilha e a densidade do disco (SD=Simples, DD=Dupla, MD=Mista).

OSI é a sigla de Operating System Interface e TD3 é o módulo que representa o TRSDOS Model III. Os dados entre parênteses são o nome do disco, data do disco e o byte de versão do DOS, conforme gravado na GAT.

Lendo arquivos do disco

Se você quiser copiar todos os arquivos do disco para a pasta atual, apenas digite:

C:\>v80 td13.dmk -r
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Reading files from disk:

LPC/CMD      -> .\LPC.CMD   	     256 bytes	OK
MEMCHECK/CMD -> .\MEMCHECK.CMD	    2048 bytes	OK
HERZ50/BLD   -> .\HERZ50.BLD	      40 bytes	OK

Total of 2344 bytes read from 3 files.

The operation completed successfully.

Gravando arquivos no disco

Para copiar um arquivo da pasta atual para o disco, digite:

C:\>v80 td13.dmk -w readme.txt
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Writing files to disk:

C:\README.TXT -> README/TXT     291 bytes OK

Total of 291 bytes written in 1 files.

The operation completed successfully.

Renomeando arquivos

Para renomear um arquivo, digite:

C:\>v80 td13.dmk -n memtest/cmd memcheck/cmd
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Renaming files:

MEMTEST/CMD  -> MEMCHECK/CMD	OK

Total of 1 files renamed.

The operation completed successfully.

Excluindo arquivos

Suponha que você queira excluir todos os arquivos com a extensão BLD do disco. Neste caso, você digitaria:

C:\>v80 td13.dmk -k */bld
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Deleting files:

HERZ50/BLD  	OK

Total of 1 files deleted.

The operation completed successfully.

Exibindo o conteúdo de um arquivo

O programa pode mostrar o conteúdo de um arquivo na forma de bytes hexa:

C:\>v80 td13.dmk -f lpc/cmd
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Dumping file contents:

01 5A 00 70 2A 26 40 01 C2 03 AF ED 42 C2 2D 40 .Z.p*&@.Â.¯íBÂ-@
2A 11 44 22 36 70 22 46 70 22 4D 70 01 2A 00 B7 *.D"6p"Fp"Mp.*.·
ED 42 22 11 44 23 22 26 40 11 2E 70 EB ED B0 C3 íB".D#"&@..pëí°Ã
2D 40 79 E6 7F 4F CA 4B 04 3A 57 70 FE 0C 28 0F -@yæOÊK.:Wpþ..(.
FE 0D 28 0B FE 0A 28 07 79 32 57 70 C3 C3 03 79 þ.(.þ.(.y2WpÃÃ.y
32 57 70 FE 0D CA 2A 04 C3 C3 03 0D 02 02 00 70 2Wpþ.Ê*.ÃÃ.....p
21 E6 47 CD B9 43 21 54 48 CD B9 43 E1 5C CD 9C !æG͹C!TH͹Cá\Íœ
43 5D CD 9C 43 CD CA 43 11 00 30 3E 07 32 08 44 C]ÍœCÍÊC..0>.2.D
CD FE 43 E5 21 19 48 CD B9 43 21 6D 48 CD B9 43 ÍþCå!.H͹C!mH͹C
E1 3A E8 37 4F A8 B7 ED 42 B7 ED 42 5C CD 9C 43 á:è7O¨·íB·íB\ÍœC
5D CD 9C 43 CD C7 43 21 49 49 CD B9 43 C9 D5 F5 ]ÍœCÍÇC!II͹CÉÕõ
7B 07 07 07 07 CD AD 43 7B CD AD 43 F1 D1 C9 E6 {....Í­C{Í­CñÑÉæ
0F C6 90 27 CE 40 27 CD CC 43 C9 F5 7E FE 03 28 .Ɛ'Î@'ÍÌCÉõ~þ..(
06 CD CC 43 23 18 F5 F1 C9 CD CA 43 3E 0D D5 FD .ÍÌC#.õñÉÍÊC>.Õý
E5 F5 FE 09 28 17 CD 33 00 FD 21 11 4A FD 34 00 åõþ.(.Í3.ý!.Jý4.
FE 0D 20 04 FD 36 00 00 F1 FD E1 D1 C9 C5 3A 11 þ. .ý6..ñýá;ÑÉÅ:.

Total of 256 bytes dumped.

The operation completed successfully.

Exibindo todos os setores do disco

Ver a estrutura de um disco, setor a setor, pode ser muito útil para diagnosticar vários tipos de problemas. Algumas vezes você encontra problemas no setor de boot, no diretório ou em outras áreas importantes, que podem estar causando erros de acesso.

C:\>v80 td13.dmk -d
VDK-80, The TRS-80 Virtual Disk Kit v1.5
Written by Miguel Dutra (www.mdutra.com)
Icon by Marco Martin (www.notmart.org)

Dumping disk contents:

[00:0:01]
FE 11 3E D0 D3 F0 21 02 00 22 EA 43 AF 32 EC 43 þ.>ÐÓð!.."êC¯2ìC
CD 3E 43 FE 01 28 0C FE 02 20 E7 CD 3E 43 CD 35 Í>Cþ.(.þ. çÍ>CÍ5
43 E9 FF CD 3E 43 D6 02 47 CD 35 43 CD 3E 43 77 CéÿÍ>CÖ.GÍ5CÍ>Cw
23 10 F9 18 DB CD 3E 43 6F CD 3E 43 67 C9 C5 E5 #.ù.ÛÍ>CoÍ>CgÉÅå
3A EC 43 B7 20 2E 06 09 C5 CD 7F 43 C1 E6 1D 28 :ìC· ...ÅÍCÁæ..(
13 3E D0 D3 F0 10 F1 3E 17 CD 33 00 21 ED 43 CD .>ÐÓð.ñ>.Í3.!íCÍ
1B 02 18 FE 2A EA 43 2C 7D FE 13 38 03 2E 01 24 ...þ*êC,}þ.8...$
22 EA 43 AF 6F 26 4D 3C 32 EC 43 7E E1 C1 C9 CD "êC¯o&M<2ìC~áÁÉÍ
C5 43 01 F3 00 3E 81 D3 F4 57 21 B7 43 22 4A 40 ÅC.ó.>ÓôW!·C"J@.
3E C3 32 49 40 F3 3E C0 D3 E4 1E 02 21 00 4D 3E >Ã2I@ó>ÀÓä..!.M>
84 D3 F0 CD E0 43 DB F0 A3 28 FB ED A2 7A F6 40 „ÓðÍàCÛð£(ûí¢zö@
D3 F4 ED A2 C3 B0 43 E1 AF D3 E4 3E 81 D3 F4 CD Óôí¢Ã°Cá¯Óä>ÓôÍ.
E6 43 DB F0 C9 3E 81 D3 F4 2A EA 43 7C D3 F3 3E æCÛðÉ>Óô*êC|Óó>.
1C D3 F0 CD E6 43 DB F0 CB 47 20 FA 7D D3 F2 C9 .ÓðÍæCÛðËG ú}ÓòÉ
F5 F1 F5 F1 F5 F1 F5 F1 00 C9 02 00 00 17 45 52 õñõñõñõñ.É....ER
52 4F 52 0D 01 26 40 73 18 10 02 40 00 00 13 28 ROR..&@s...@...(

(...)

[39:0:18]
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 åååååååååååååååå
28 63 29 20 31 39 38 30 20 54 61 6E 64 79 20 20 (c) 1980 Tandy  

Total of 720 sectors dumped.

The operation completed successfully.

Download

Este software é fornecido gratuitamente, no estado ("as is"), sem garantias de qualquer tipo. Se você aceitar estes termos, vá em frente e experimente-o! Seus comentários e sugestões são muito bem-vindos.

Imagem
VDK-80_v1.6.zip
VDK-80: The TRS-80 Virtual Disk Kit v1.6
72.670 bytes
Imagem
VDK-80_v1.6_source.zip
VDK-80: The TRS-80 Virtual Disk Kit v1.6 Código-Fonte C++
240.441 bytes