sexta-feira, 11 de setembro de 2020

Você realmente conhece o formato de arquivos .TRD e suas possibilidades?

Eu fui inspirado a escrever este artigo quando estava estudando formas de trabalhar com arquivos externos em meus programas em Basic, achando no formato .TRD, uma ótima opção para carregar arquivos auxiliares (como telas, dados, etc.).
É óbvio que um programador experiente já deve pensar nisso de uma forma bem mais aprimorada, porém este não é o objetivo deste post. Quero apenas mostrar que este formato pode ser mais útil do que simplesmente uma forma diferente de carregar jogos ou aplicativos.

Primeiro, vamos entender o formato.


O formato TRD foi criado para armazenar imagens de disco Beta Disk (TR-DOS) para fins exclusivos de emulação. Ou seja, foi uma forma de reproduzir o conteúdo de um disquete inteiro (sua imagem) em apenas um arquivo.

Uma variedade de clones do Spectrum Russo (incluindo o Pentágono e o Scorpion ) usam o sistema operacional de disco TR-DOS com uma Interface de Disco Beta embutida, assim como as versões inglesas do ZX Spectrum (em uso conjunto com a interface Beta Disk) e os nossos clones nacionais TK90X e TK95 (com nossas versões da interface Beta da Arcade, CBI e Synchron). Nos países do antigo bloco soviético este formato predomina até hoje como o preferido (afinal, ainda são grandes desenvolvedores de programas) e no Brasil, já teve teve seu período áureo no início da década de 90 até meados de 2010, quando muitos brasileiros optaram pela comodidade de uma interface tipo divIDE. Entretanto, isso não atendia aos programadores brasileiros de plantão, pois esta interface no sistema original FatWare, não permitia gravação, mas apenas leitura de arquivos. Somente com a evolução das versões do sistema esxDOS (substituindo o FatWare na divIDE), que se passou a emular o TR-DOS da Beta (para a alegria dos programadores), tornando-se possível a gravação e manipulação direta de arquivos.

O formato TRD é membro do Easy Disk Image Formats. Este tipo de imagens de disco contém apenas os dados do setor despejado. Não há informações de cabeçalho, portanto a geometria do disco deve ser assumida, ou determinada a partir dos dados do sistema de arquivos colocados na imagem do disco.

Estas imagens não podem armazenar dados fora do padrão, como:

  • setores excluídos
  • faixas não formatadas de maneira uniforme
  • dados fracos do setor (algumas proteções de cópia têm o que é descrito como dados “fracos”, “aleatórios” ou “flutuantes”. Cada vez que o setor “fraco” é lido, um ou mais bytes mudam. Seu valor  pode ser aleatório entre leituras consecutivas do mesmo setor. Dados fracos só podem ser gravados usando hardware modificado, portanto, você não pode copiar facilmente esses discos. Apenas os formatos de imagem de disco Extended DSK e UDI 1.1 gravam este tipo de dados. Este sistema de proteção era muito utilizado no discos do ZX Spectrum +3.)

Estrutura do arquivo TRD

As imagens TRD podem armazenar imagens de disco de 40 ou 80 trilhas de uma ou dupla face.

Cabeçalho do Arquivo

Não há nenhum cabeçalho ou assinatura de arquivo (bytes mágicos).

Layout do setor

Setores dispostos do primeiro ao último em uma trilha:

  • Setor 1
  • Setor 2

...

  • Último setor

As trilhas seguem o esquema “alt”:

  • Lado: 0 Faixa: 0
  • Lado: 1 Faixa: 0
  • Lado: 0 Faixa: 1

...

  • Lado: 0 Faixa: 79
  • Lado: 1 faixa: 79

Comprimento do arquivo

TR-DOS usa 256 BPS e 16 SPT para discos, então um

  • O comprimento da imagem dos lados da trilha 1 é 163840 bytes (1 × 40 × 16 × 256)
  • O comprimento da imagem de 40 faixas 2 lados é 327680 bytes
  • O comprimento da imagem do lado 80 da trilha 1 é 327680 bytes
  • O comprimento da imagem de 80 faixas 2 lados é 655360 bytes

Imagens parciais

Os arquivos TRD podem terminar antes do comprimento total calculado, se os setores até o final não contiverem dados.

Por exemplo, no jogo Prince of Persia - PRINCE_P.TRD (imagem de disco de 2 lados com 80 trilhas) tem apenas 255488 bytes de comprimento, porque o último setor que contém dados é h0t31s6 (2 × 31 × 16 + 6) × 256.

O formato alternativo/compactado .SCL

O formato SCL é um formato de armazenamento alternativo para imagens do sistema de arquivos TR-DOSEm vez de uma imagem TRD, o SCL armazena apenas a estrutura do diretório e os dados dos arquivos. Eu diria que é uma forma compactada dos arquivos TRD.



Bom, agora que entendemos como funciona este formato, retornamos a motivação que me levou a escrever este artigo.

Como a maioria dos arquivos que encontramos no formato TRD utilizam o espaço máximo do disco (640k), podemos concluir que isto é o que temos para trabalhar (pelo menos em um único disco). Em termos de programação em Basic Sinclair é muita coisa! 

Se fossemos armazenar num disco apenas um banco de imagens (telas .SCR completas, por exemplo), caberiam aproximadamente 27 telas. Se fossem apenas 1 bloco de tela (lembra que o Spectrum trata a carga de imagens em 3 blocos distintos?), seriam aproximadamente 81 telas (com 1/3 do tamanho exibido).

Ok. Não preciso dizer que a carga em disco real já é bem rápida (apesar das limitações do Basic), portanto num arquivo .TRD será ainda mais veloz. Então imagine você chamando um arquivo no "disco" (.TRD) direto do teu programa em Basic... Não é uma opção interessante? Consegue ver como o padrão TRD é útil para um programador e para o desenvolvimento de programas mais complexos?

Caso tenha se interessado em experimentar programar no sistema TR-DOS, basta baixar os manuais disponíveis neste blog e aprender a utilizar os novos comandos. Não preciso dizer que a maioria dos bons emuladores já são compatíveis com este padrão de arquivos, facilitando em muito a nossa vida.


Em outro momento irei publicar um artigo com um exemplo de como buscar estes arquivos nos discos virtuais utilizando o Basic e, posteriormente, em código de máquina (que já é outro nível).
Até lá!

sexta-feira, 14 de agosto de 2020

Como configurar um emulador de drive GOTEK para o TK90X, TK95 e ZX Spectrum.

 


Apesar de não ser a minha opção predileta (pois amo meus disquetes!), o emulador de drives é uma alternativa interessante e muito procurada para uso na manipulação de arquivos de discos do TK. Rápido e seguro, funciona com perfeição em nossos micrinhos, bastando apenas configurá-lo para se comportar como um drive convencional em equipamentos de 8 bits.
O emulador da GOTEK, modelo Sfr1m44 u100k, é o mais popular e funciona muito bem.
Entretanto, ele não pode apenas ser simplesmente encaixado (apesar de parecer e possuir as conexões), necessitando de uma atualização do firmware específica para se tornar compatível.

Para isso, estou disponibilizando um tutorial traduzido em PDF, bem como os arquivos necessários para atualização na base de download deste blog. O tutorial foi feito originalmente para os teclados musicais da Roland, mas funciona perfeitamente para o nosso caso e está muito bem explicado no passo-a-passo. Inclusive explica também como fazer um upgrade no emulador, colocando um display e um botão extra. Muito interessante e fácil de fazer para quem tem o mínimo de habilidade com eletrônica.

Caso você queira comprar um, segue um link do que encontrei mais barato no Brasil (em pronta entrega) e outro no exterior (bem mais barato, mas com os inconvenientes de espera da importação). Pode ocorrer de, em determinado momento, o link ficar inativo por alteração de vendedor, mas já é uma referência de onde você pode encontrar estes emuladores.

Mercado Livre (Brasil):
https://produto.mercadolivre.com.br/MLB-1398444877-sfr1m44-u100k-emulador-drive-disquete-pen-drive-usb-brinde-_JM

AliExpress (Exterior):
https://pt.aliexpress.com/item/32841011000.html

No próximo post relacionado a este tema, falaremos sobre como manipular os arquivos do TK/ZX no pen drive para ser utilizado no emulador, bem como quais são os tipos aceitos por ele.
Até lá!

segunda-feira, 10 de agosto de 2020

A História dos Disquetes

O disquete foi inventado por engenheiros da IBM liderados por Alan Shugart,  em 1971. Era um disco de plástico flexível de 8 polegadas revestido com óxido de ferro magnético e os dados do computador eram gravados e lidos na superfície do disco. O primeiro disquete de Shugart continha 100 KB de dados (face simples).

O apelido disquete veio da flexibilidade do disco. O disquete é um círculo de material magnético semelhante a outros tipos de fita de gravação, como a fita cassete, onde um ou dois lados do disco são usados ​​para gravação, porém com maior velocidade de leitura. Os dados ficam literalmente "flutuando" magneticamente sobre esta superfície.

O drive de disco inicia a leitura do disquete pelo seu centro até sua extremidade, enquanto ele gira como um registro dentro de sua caixa. A cabeça de leitura/gravação, muito parecida com a cabeça de um toca-fitas, entra em contato com a superfície por meio de uma abertura no invólucro de plástico ou no envelope.

O disquete foi considerado um dispositivo revolucionário na história dos computadores devido à sua portabilidade, que forneceu um meio físico novo e fácil de transportar dados de um computador para outro.

Estes primeiros discos foram projetados para carregar microcódigos no controlador do Merlin (IBM 3330). Então, na verdade, os primeiros disquetes foram usados ​​para preencher outro tipo de dispositivo de armazenamento de dados. Usos adicionais para o disquete foram descobertos mais tarde, tornando-o um eficiente meio de armazenamento de arquivos.

Em 1976, o disco rígido e disquete de 5 1/4 de polegadas, foram desenvolvidos por Alan Shugart para a Wang Laboratories. A Wang queria um disquete e drive menores para usar com seus computadores desktop. Em 1978, mais de 10 fabricantes já estavam produzindo unidades de disquetes de 5 1/4" que armazenaram até 1,2 MB (megabytes) de dados.

Uma história interessante sobre o disquete de 5 1/4" foi a maneira como o tamanho do disco foi decidido. Os engenheiros Jim Adkisson e Don Massaro estavam discutindo o tamanho com An Wang, da Wang Laboratories. O trio estava em um bar quando Wang fez um gesto com um guardanapo e disse que esse seria o tamanho (que por acaso tinha 5,5 cm de largura).

Em 1981, a Sony introduziu os primeiros drives e disquetes de 3 1/2". Estes disquetes foram encapsulados em plástico rígido, mas o nome permaneceu o mesmo. Eles armazenaram 400kb de dados e, posteriormente, 720K (densidade dupla) e 1.44MB (alta densidade).

Trabalhando com disquetes:

A entrevista a seguir foi feita com Richard Mateosian, que desenvolveu o primeiro sistema operacional para disquetes. Mateosian é atualmente um editor de revisão na IEEE Micro, em Berkeley, CA.

Em suas próprias palavras:

"Os discos tinham 8 polegadas de diâmetro e tinham uma capacidade de 200K (quando face dupla). Eles eram tão grandes que os dividimos em quatro partições, cada uma das quais consideramos como um dispositivo de hardware separado, análogo a um drive de fita (nosso outro dispositivo principal de armazenamento periférico na época). Usamos disquetes e cassetes principalmente como substitutos de fita de papel, mas também apreciamos e exploramos muito a natureza de acesso aleatório dos discos. Nosso sistema operacional tinha um conjunto de dispositivos lógicos (entrada de fonte, listagem de saída, saída de erro, saída binária, etc.) e um mecanismo para estabelecer uma correspondência entre esses e os dispositivos de hardware. Nossos programas de aplicativos eram versões de montadores, compiladores e assim por diante da HP, modificados (por nós, com a aprovação da HP) para usar nossos dispositivos lógicos em suas funções de E / S. O resto do sistema operacional era basicamente um monitor de comando. 

Os comandos tinham principalmente a ver com manipulação de arquivos. Havia alguns comandos condicionais (como IF DISK) para uso em arquivos em lote. Todo o sistema operacional e todos os programas aplicativos estavam na linguagem de máquina da série HP 2100. O software de sistema subjacente, que escrevemos do zero, era orientado a interrupções, para que pudéssemos suportar operações de E / S simultâneas, como inserir comandos enquanto a impressora estava em execução ou digitando à frente do teletipo de 10 caracteres por segundo. 

Na verdade, a estrutura do software evoluiu a partir do artigo de 1968 de Gary Hornbuckle, chamado "Multiprocessing Monitor for Small Machines" e de sistemas baseados em PDP8 em que trabalhei no Berkeley Scientific Laboratories (BSL) no final dos anos 60. O trabalho na BSL foi amplamente inspirado pelo falecido Rudolph Langer, que melhorou significativamente no modelo da Hornbuckle."

(Texto extraído e corrigido)

quinta-feira, 6 de fevereiro de 2020

Como transferir arquivos .TAP para discos Beta (.TRD)

A primeira postagem deste ano é a sequência de um dos assuntos que mais interessam para os usuários das interfaces Beta Disk, e que gostariam de transferir para um disco físico, os milhares de arquivos .TAP disponíveis para a linha ZX Spectrum. Apresentaremos aqui mais 2 alternativas.

Anteriormente, aprendemos (nos tutoriais de vídeo) a montar os aquivos de discos virtuais do TR-DOS (.TRD) utilizando arquivos tipo .Z80, .TZX e .TAP que seriam convertidos para o formato .SNA e, posteriormente convertidos no formato Hobeta para serem gravados no disco físico e rodarmos no TK. A ideia é personalizar nossos discos com temas e programas de nosso interesse, não ficando limitados somente à geração de discos de arquivos .TRD "pré-fabricados" por terceiros. Vale lembrar que existem milhares deles disponíveis na internet e costumam ser muito bem montados.
Aliás, criar um disco real a partir de um arquivo .TRD é muito simples e fácil com programas como o TKBetadisk (disponível aqui no blog).

A comodidade de se trabalhar diretamente com os arquivos .TAP é bem mais interessante, pois eles levam internamente uma imagem estrutural das fitas K7 (em blocos distintos) e são mais fáceis de localizar, organizar e editar.
A edição destes arquivos já é uma etapa mais complexa e nem sempre possível (dependendo de como foi criado o arquivo), porém nos permite adequar de forma mais "limpa" ao padrão de leitura Beta Disk, permitindo gravar jogos multi-load criados para fitas K7, mas que funcionem corretamente no disco.
Outro ponto a favor, é a grande quantidade de utilitários conversores de outros formatos para o .TAP, que estão disponíveis na internet.



1ª ALTERNATIVA:

Vamos precisar do emulador SpecEmu BR (que vem com a ROM do TK90X ou TK95, e também de uma interface Beta Disk nacional, tipo CBI-95 ou IDS2001ne) ou do emulador SimpleTK (que também tem praticamente as mesmas funções).
Também será necessário um arquivo .TRD de utilitários que vinham junto com a interface CBI-95, pois neste disco utilizaremos o utilitário TAPECOPY (um conversor de programas em fitas K7 para o formato Beta Disk). Este arquivo da CBI-95 é facilmente encontrado na internet e também será disponibilizado aqui no blog.

Quando você inicia os emuladores com o TK + a interface beta habilitada, ele apresenta a tela de inicialização da interface, com o prompt mostrando o "A>", ou seja, em ambiente Beta DOS.
Vá na opção de arquivos do emulador e procure a opção "Insert Disk". Nela você indicará o local onde está teu arquivo CBI-95.TRD e ele carregará virtualmente o disco.
Aperte a opção de RESET e o emulador carregará o boot do disco, já te apresentando o menu de opções do disco da CBI. Lá você verá o programa TAPECOPY.
Mas antes de carregar o TAPECOPY, você precisa indicar para o emulador qual fita virtual (o arquivo .TAP) que você irá transferir. Para isso, vá na opção "Insert Tape" e indique onde está o arquivo .TAP que você quer converter.

Agora é hora de tirar o disco da CBI com a opção "Eject Disk" (não será trabalhoso, pois você só irá fazer isso uma vez) e colocará um disco .TRD vazio no lugar. Se você não tiver um já pronto (criado anteriormente), poderá utilizar o próprio da CBI, formatando-o e renomeando-o no ambiente DOS do TK (A> format "nome"). Não se preocupe, o .TRD original da CBI não será afetado.

Agora é só inicializar o TAPECOPY e ele fará o processo de conversão automaticamente. Tudo muito limpo e rápido.
Na sequência, basta escolher os próximos arquivos .TAP e ir convertendo com o TAPECOPY até ocupar todo o espaço disponível no disco (em média, cabem em torno de 15 ou 16 programas pra 48K por disco, mas isso irá variar de acordo com o tamanho de cada um).
Você pode ir dando um "CAT" no DOS para ver como está ficando o disco e também seu espaço disponível.


2ª ALTERNATIVA:

Esta é bem simples e você precisará de um programa chamado EMPTYTRD (para criar um disco .TRD vazio) e do WRITETRD, que disponibilizamos aqui no blog. Mas atenção: Existe uma outra versão com o mesmo nome distribuída no WOS (e em outro sites), que apenas transfere arquivos .TRD diretamente para discos físicos na unidade de disquete do PC. O que vamos utilizar, copia arquivos .TAP para dentro de um .TRD (este não trabalha com discos físicos).
Observação: Ambos programas trabalham somente em ambiente DOS do PC, mas podem ser executados pelo Prompt de comandos do DOS que existe no Windows. O ideal é que você coloque teus arquivos num único diretório, pois assim fica fácil de fazer as conversões de forma mais rápida.
O problema é que você não poderá ver como está ficando o disco, ao menos que você vá abrindo o .TRD gerado de forma paralela, em outro programa Windows, tipo o TKBetadisk, por exemplo.

Para criar um disco TRD vazio, digite no prompt do DOS do PC:
emptytrd nome.trd
Pronto! Ele criará um arquivo .TRD vazio com o nome que você escolheu (até 8 caracteres).

Agora você poderá inserir os arquivos .TAP no disco digitando o seguinte:
writetrd  nomedodiscocriado.trd  aquivoescolhido.tap
Só isso. Vá inserindo novos .TAP repetindo o processo e utilizando as cômodas teclas de repetição do ambiente DOS.

Divirta-se!
Mais detalhes de como alterar os arquivos no disco (para adaptações), informaremos nas próximas publicações.

Erro de leitura na trilha 0, setor 9.

Ao readquirir minha interface Beta (praticamente "nova" e sem uso), deparei-me com a mensagem "erro de leitura na trilha 0, s...