Uma revista digital na era do MS-DOS

For an English version of this post, use the “Language” selection in the right sidebar. The entire site will be translated to the chosen language.

Hoje, se você quiser criar uma revista digital com imagens, animações, músicas de fundo e hyperlinks, basta abrir um editor HTML e começar a trabalhar.

Mas e se você precisasse fazer tudo isso em 1997, usando MS-DOS, com alguns megabytes de RAM, sem navegador, sem CSS, sem JavaScript e tendo que controlar praticamente tudo por conta própria?

Pois foi exatamente essa a encrenca em que me meti quando resolvi criar uma edição especial da WarmNews dedicada ao Zakk Wylde! 🙂

Conforme prometido no post anterior, vou contar um pouco dos bastidores técnicos dessa aventura.

Um pouco de contexto

Em 1997, quando criei a “revista”, ainda era muito comum encontrar computadores com processadores 486 e Pentium, especialmente entre os usuários domésticos brasileiros. Máquinas com 4 ou 8 MB de RAM continuavam em uso, embora os computadores mais modernos já tivessem processadores bem mais rápidos e dezenas de megabytes de memória. E, convenhamos, no Brasil nem sempre o que existia de mais moderno lá fora era o que cabia no nosso bolso!

As GPUs como conhecemos hoje ainda não existiam, mas já tínhamos placas de vídeo com diferentes capacidades gráficas, algumas (raras nas terras tupiniquins) com aceleração 2D e até 3D. Quem não lembra das famosas Trident, geralmente trazidas do Paraguai pelo seu muambeiro preferido?!

Ao iniciar a máquina, o DOS carregava o config.sys e o autoexec.bat, e era nesses dois arquivos que você tinha que fazer toda a configuração necessária para conseguir realmente aproveitar a memória disponível, configurar a porta/irq da placa de som (geralmente uma Sound Blaster), página de código, mapa de teclado, etc.

A maioria dos computadores ainda usava o MS-DOS… na verdade, o próprio Windows 95 usava o MS-DOS por baixo dos panos. DOS não tem interface gráfica. Você tinha uma “tela texto” com 25 linhas e 80 colunas para usar (com monitores VGA, dava pra ativar/usar até 50 linhas). Obviamente fazer uma revista usando apenas tela texto deixaria tudo muito chato e limitado.

Na época, eu basicamente programava em Delphi e Clipper (para aplicações comerciais), Assembly (para baixo nível e performance) e Pascal (para todo o resto).

A WarmNews foi feita em Borland Pascal, com um pouco de in-line Assembly, e explorava os recursos gráficos das placas Super VGA através da interface VESA BIOS Extensions (VBE), permitindo criar uma interface totalmente gráfica com uma performance bastante razoável para a época.

Eu não encontrei o código fonte, provavelmente está perdido em algum backup em zip drive ou CD-R, então além da memória, a maior fonte de informação para esse artigo será o próprio readme que acompanhava a revista.

O padrão VESA VGA (mais conhecido como padrão Super VGA ou VBE – VESA BIOS Extensions) foi um conjunto de normas criado no final dos anos 1980 pela VESA (Video Electronics Standards Association) para unificar o funcionamento das placas de vídeo que ultrapassavam as especificações originais da IBM.

Espaço valia ouro!

Hoje pode parecer ridículo, mas na época em que a troca de arquivos se dava através de conexões com modem discado, economizar bytes não era luxo, era necessidade!

Gravei algumas cópias da WarmNews em disquetes de 1.44 MB para serem distribuídas para amigos próximos. Tive o capricho de criar e imprimir etiquetas coloridas para colar neles, usando uma impressora matricial Canon colorida!

Etiqueta impressa em impressora matricial colorida
Conteúdo do disquete com a WarmNews

O arquivo WNEWSZAK.EXE era um self-extract gerado pelo RAR (o pai do WinRar que vocês conhecem hoje). Após descompactá-lo, os seguintes arquivos eram gerados:

DATA.001        Magazine Data File
DATA.002        Magazine Data File
DATA.003        Magazine Data File
DATA.004        Magazine Data File
DATA.005        Magazine Data File
DATA.006        Magazine Data File
DATA.007        Magazine Data File
DATA.008        Magazine Data File
DATA.009        Magazine Data File
DATA.010        Magazine Data File
DATA.011        Magazine Data File
DATA.012        Magazine Data File
DATA.013        Magazine Data File
DATA.014        Magazine Data File
DATA.015        Magazine Data File
DATA.016        Magazine Data File
DATA.017        Magazine Data File
DATA.018        Magazine Data File
README.BAT      BAT file used to read the readme file
WNEWS.CHK       Internal use
WNEWS.CMP       Magazine Data File
WNEWS.CRC       CRC file
GREAT2!.EXE     WarmBoot BBS ad
SCROLL.EXE      Program used to read text files
WNEWS.EXE       Magazine Program
FILES.LST       This file...
MOUSE.PCX       Mouse Pointer
LOGO.TXT        Logo
README.TXT      Readme File
PERRY.XM        Perry Mason Song

Requisitos mínimos

Já no início do readme tínhamos as informações do hardware mínimo necessário para poder executar a revista:

Note o detalhe da caixa de texto “sombreada”. Isso era comum na época, quando você queria destacar alguma informação simulando um “card”. As bordas eram feitas usando caracteres especiais das páginas de código do DOS (aquilo que muita gente chamava de ASCII estendido). Dependendo dos caracteres utilizados e da página de código configurada, o resultado podia aparecer diferente do esperado. Aliás, era comum evitar acentos nos arquivos README.TXT justamente para não correr esse risco!

Som decente (sai pra lá, mid!!!)

Para os sortudos que tivessem uma placa de som, o WarmNews permitia tocar músicas em background enquanto você lia a revista. Para esse feito, usei rotinas criadas por Charles Attard, que tocava diversos formatos de arquivo (669/MOD/MTM/NST/S3M/WAV/XI/XM).

Por que não MP3? Bem… embora o formato já existisse, ainda estava longe de ser popular, especialmente entre os usuários brasileiros. Além disso, reproduzir MP3 consumia um bocado de processamento, algo que não podíamos desperdiçar em computadores mais modestos. O formato começaria a ganhar muito mais popularidade com programas como o Winamp, lançado em abril de 1997.

Na época, muitos jogos utilizavam músicas reproduzidas através dos sintetizadores FM das placas de som, como os famosos chips Yamaha OPL2 e OPL3 presentes nas Sound Blaster. Também existiam músicas no padrão MIDI, cujos arquivos continham basicamente instruções musicais (notas, instrumentos, duração etc.), deixando a geração do som por conta do sintetizador disponível.

O problema é que, dependendo da placa, o resultado podia deixar bastante a desejar. Naquelas Sound Blaster mais simples, algumas músicas pareciam sair de um tecladinho de brinquedo de criança! Os donos de Commodore Amiga se deliciavam tirando sarro dos PCs com som mixuruca!

Felizmente, algumas pessoas criativas encontraram uma forma de driblar as limitações técnicas do hardware disponível na época, e criaram arquivos que traziam embutido samples de instrumentos musicais reais, além da estrutura da música em si (notas, tempo, duração etc).

Provavelmente o padrão mais difundido na época era o MOD. Os players de música (no nosso caso, as rotinas criadas pelo Charles) usavam uma série de algoritmos que atuavam sobre esses samples para “criar” a variação de diferentes notas musicais e depois “mixar” os instrumentos, gerando o áudio final que o usuário ouvia sair pela caixa de som.

Vejamos o que o readme diz sobre isso:

Memória livre, quanto mais, melhor!

Se tem uma coisa que não mudou muito até os dias de hoje é o fato de que memória nunca é demais, e que continua cara!

Mas na era do DOS, não bastava espetar mais pentes de memória no computador. O MS-DOS tradicionalmente trabalhava com apenas 640 KB de memória convencional, e usar a memória adicional exigia alguns malabarismos. Dependendo do programa, era necessário configurar gerenciadores como HIMEM.SYS, EMM386 ou QEMM, que permitiam aproveitar a memória estendida (XMS), a memória expandida (EMS) e até liberar alguns preciosos kilobytes de memória convencional.

Isso era feito através de drivers como EMM386/QEMM386/HIMEM.SYS.

O readme traz uma seção apenas sobre isso:

Com certeza muitos aqui se emocionaram quando viram “OS/2” acima, não? 😀

Obviamente, se você queria aproveitar todo o potencial da WarmNews e ouvir música de fundo enquanto lia a revista, precisava garantir memória suficiente para que o player conseguisse carregar e tocar os arquivos de música. A própria WarmNews trazia uma versão da música Perry Mason, do Ozzy Osbourne, em formato .XM, para ser usada como exemplo.

O player MMP usava as mesmas rotinas que o WarmNews (feitas pelo Charles), então no readme eu copiei algumas informações do MMP com dicas e instruções para rodar a revista com música de fundo:

Para os mais saudosistas (ou masoquistas!), reproduzo abaixo as explicações que acompanhavam o player MMP sobre as diferentes formas de gerenciar memória no DOS.

Sobre a memória, o MMP utiliza 3 modos para evitar a mensagem de “memória insuficiente” (not enough memory) (muito irritante quando você possui 4, 8, 16 ou mais Megabytes de memória no sistema e precisa de apenas algumas centenas de kilobytes). Ele utiliza os tipos de memória DOS, EMS e XMS.

Os modos possíveis são:

Modo: Por que o MMP usa este modo:

  • DOS
    O módulo carregado é pequeno o suficiente para caber na memória convencional. Porém, se um instrumento tiver tamanho superior a 64 KB (caso o módulo carregado seja um 669, MTM ou XM), o MMP utilizará o modo linear DOS/XMS de 32 bits para evitar truncamento. Este é o modo mais rápido.
  • DOS/EMS
    Os instrumentos não cabem na memória DOS, mas os padrões (patterns) cabem (pressupõe-se que sempre seja esse o caso). Os instrumentos são carregados na EMS, mas são truncados em 64 KB (você receberá um aviso), uma vez que arquivos MTM, 669 e XM podem ter instrumentos com 1 MB ou mais no caso dos XMs.
    Para evitar isso, você deve permitir que o MMP entre no modo linear XMS de 32 bits desativando qualquer gerenciador de memória expandida, como EMM386, QEMM386… e ativando o HIMEM.SYS.
    Note que o modo DOS/EMS é lento; portanto, se você tiver menos do que um processador 486DX de 120 MHz, realmente deve fazer isso!
  • DOS/XMS linear de 32 bits
    Assim como no modo DOS/EMS, o tamanho total dos instrumentos é grande demais para caber na memória DOS. Este é o melhor modo (rápido, toda a memória livre fica disponível e os samples não são truncados em 64 KB). Veja acima como ativá-lo.
    Neste modo, o processador realiza endereçamento linear em modo real (unreal mode)! A Tabela de Descritores Globais (GDT) é modificada, e é por isso que ele é totalmente incompatível com outros aplicativos rodando em modo protegido ou modo V86.

O MMP tenta primeiro entrar no modo linear XMS de 32 bits para que possa liberar memória convencional para o shell do DOS. Se este modo não estiver ativado (verifique na janela de configuração do MMP), significa que o processador está em modo protegido (EMM386, QEMM386 ou o prompt do DOS no Windows estão ativos) ou não há memória XMS livre suficiente.

Que complicação, não?! Mas essa era a vida de quem se aventurava na computação na década de 90!

Criando uma interface gráfica do zero (e até um mini-HTML!)

Além do índice, cada seção da revista tinha uma arte de fundo. As artes foram criadas pelo Binho Miranda, usando fotos do Zakk que peguei na internet. São imagens de 640×480 pixels, com 256 cores, gravadas no formato PCX e exibidas usando recursos Super VGA (VESA VBE). Lembre-se: espaço era ouro, então tínhamos que usar só o mínimo necessário que garantisse qualidade suficiente.

O texto das matérias de cada seção era literalmente “desenhado” em cima da imagem de fundo. Como eu queria fazer algo diferente, resolvi não usar a fonte padrão das telas de texto do MS-DOS. Não me lembro mais o nome da fonte, nem o formato do arquivo, mas trouxe um “detalhe” a mais para a revista, mesmo parecendo “tosco” para os dias atuais.

Outro ponto que tive que codificar foi uma espécie de “html primitivo”. Criei tags para mudar a cor do texto, e criei também hyperlinks básicos para que o usuário clicasse e gerasse alguma ação (geralmente abria uma foto relacionada ao texto destacado).

Sendo uma revista “gráfica”, o uso do mouse era imprescindível, tanto para navegar pela revista (botão esquerdo/botão direito) como para clicar nas opções do índice e nos hyperlinks.

Como o MS-DOS não tinha suporte nativo a mouse, era necessário utilizar um driver específico, geralmente acessado através da interrupção 33h. Além disso, implementei a lógica de navegação, a detecção dos cliques nos hyperlinks e o desenho do próprio cursor, que era uma imagem PCX com uma máscara para simular transparência. A cada clique era necessário verificar se o cursor estava em cima de um “hyperlink”, para realizar a ação necessária.

Havia também alguns efeitos que implementei. A mudança de telas usava um scroll suave, manipulando diretamente a VGA para garantir a suavidade do movimento necessária. Os textos eram desenhados também com um efeito.

Fonte especial, mudança de cores, hyperlinks… era uma implementação rústica e básica de um mini-html

Preparando a revista para distribuição

Aqui estou dependendo unicamente da minha memória…

Pelo que me recordo, a estrutura da revista, as matérias, hyperlinks, fonte utilizada, etc eram definidos em um arquivo texto, usando tags e parâmetros especiais. Depois, um executável lia e “compilava” tudo isso em um arquivo binário (WNEWS.CMP), gerando também os checksums, etc.

O executável da revista (wnews.exe) checava os requisitos mínimos de hardware, lia o wnews.cmp e demais arquivos, verificava a integridade deles, procurava músicas (caso o usuário tivesse passado o diretório em linha de comando), inicializava as rotinas do player de música (se fosse o caso) e, aí sim, exibia a revista para o usuário.

Hoje, quase 30 anos depois, é curioso pensar no trabalho necessário para implementar coisas que atualmente são resolvidas com algumas linhas de HTML, CSS e JavaScript.

Ao mesmo tempo, foi justamente esse tipo de desafio que tornou aquela época tão divertida para quem gostava de programação. Havia limitações por todos os lados, e encontrar maneiras de contorná-las era parte da diversão.

Pena que não encontrei mais o código-fonte da WarmNews. Seria interessante revisitar algumas dessas soluções hoje — embora eu suspeite que encontraria também algumas boas gambiarras! 🙂

Enfim, espero que tenham gostado dessa pequena viagem no tempo. Alguns provavelmente sentiram aquela nostalgia gostosa, enquanto outros devem estar se perguntando como conseguíamos programar sem Stack Overflow, GitHub ou ChatGPT.

Pois é… e ainda nos divertíamos! 😉

Share and Enjoy !

When I Made a Digital Magazine About Zakk Wylde (and Ended Up Getting a Gift from Him!)

Leia em português

The Year Was 1997…

Back when the internet was still in its infancy in Brazil and lots of people were connecting to BBSes (Bulletin Board Systems, a kind of online community accessed through dial-up modems, long before social media existed), I decided to create a special edition of my digital magazine dedicated to one of my favorite guitarists: Zakk Wylde.

Little did I know that this Brazilian programmer’s little hobby would lead to an exclusive interview with Ozzy Osbourne’s guitarist and, a few months later, an envelope from the United States containing a surprise I still treasure to this day.

But let’s start at the beginning…

The WarmNews

I created the WarmNews digital magazine back in the ’90s, when I was the SysOp of WarmBoot BBS (SysOp = System Operator, the person who ran a BBS).

The first editions were available on WarmBoot BBS itself and distributed through RBT (Rede Brasileira de Teleinformática, a Brazilian BBS network) to other BBSes in the network, and maybe even to the rest of the world. The content was a mix of technical articles, humor, and interviews.

Why Zakk Wylde?

Being the frustrated wannabe guitarist that I (still) am, Zakk Wylde was already one of my favorite guitarists. With the amazing work he was doing alongside Ozzy and as a solo artist, I thought dedicating a special edition of WarmNews to him would be a great idea.

Back then, news didn’t travel nearly as fast as it does today, but Zakk already had a basic website. I decided to take a chance and email Randy Canis, who ran the site, and he was more than happy to help me out with some information.

And that settled it! The next WarmNews would be all about Zakk!

A Digital Magazine in the MS-DOS Days

We’re talking about a time when PCs with sound cards were becoming increasingly common in Brazil. Even though Windows 95 had already been released, plenty of people were still using MS-DOS, so the magazine was developed for DOS. The Zakk Wylde special edition introduced a fully graphical interface (still running on top of DOS, though), with mouse navigation and support for Sound Blaster-compatible sound cards (if you had a sound card, you could read the magazine while listening to MOD, XM, and other music formats playing in the background).

I’m a programmer, not a designer, so obviously, if I wanted the magazine to look halfway decent, I’d need someone who actually knew what they were doing. I got in touch with Binho Miranda (whom I’d met through the BBS), sent him some pictures of Zakk I’d found on the internet, and he used them to create the artwork for the magazine’s index and “pages.”

For those interested in the technical side, I wrote another post about that.

An Exclusive Interview with Zakk Wylde!

Since the magazine would be distributed on the internet, including through Zakk’s official website, all the content was written in English.

Zakk’s official website featured a link to download WarmNews

I wrote the articles myself, based on the information (sometimes pretty scarce) I could find online and in magazines at the time. But something was missing. Something better, something more exclusive…

I asked Randy if I could send over a few questions for Zakk to answer, hoping to get an exclusive interview for WarmNews.

Since Zakk was busy touring, Randy interviewed him over the phone and sent me the answers. Sure, it took almost two months of waiting, but hey, it all worked out in the end! 🙂

Zakk has always been known for his great sense of humor in interviews 🙂

An Unexpected Gift

A few months after the magazine was released, when I thought the story was already over, an envelope from Randy showed up in my mailbox.

Inside was a promotional photo of Zakk, autographed and personally inscribed to me. As if that weren’t enough, there was also an original film photograph (yes, an actual photo developed from film!) showing Zakk backstage at a show, having a good laugh with none other than Billy Sheehan and Eddie Van Halen!

I still have both photos to this day.

Looking back, almost 30 years later, it’s funny to think that a digital magazine made by a Brazilian programmer, using MS-DOS and a healthy dose of enthusiasm, could have led to all of this.

Back then, all I wanted was to combine two things I really loved: programming and playing guitar. Instead, I ended up with one heck of a story to tell! 😉

And Maybe the Story Isn’t Over Yet…

Next week, I’m going to a Black Label Society concert (Zakk’s current band). Who knows? Maybe I’ll finally get to shake his hand and, while I’m at it, get him to autograph the original 1.44 MB WarmNews floppy disk I’ve been keeping for almost 30 years! 🙂

That would be a pretty cool way to bring things full circle. Or maybe start a whole new chapter!

The original WarmNews floppy disk, recorded almost 30 years ago. And guess what? It still works!

Share and Enjoy !

Quando fiz uma revista digital sobre Zakk Wylde (e acabei recebendo um presente dele!)

Read it in English

O ano era 1997…

Quando a internet ainda engatinhava no Brasil e muita gente acessava BBS (Bulletin Board System, espécie de comunidade online acessada por modem discado, muito antes das redes sociais existirem), resolvi criar uma edição especial da minha revista digital, falando sobre um dos meus guitarristas preferidos: Zakk Wylde.

O que eu não imaginava é que aquele passatempo de um programador brasileiro acabaria rendendo uma entrevista exclusiva com o guitarrista de Ozzy Osbourne e, meses depois, um envelope vindo dos Estados Unidos com uma surpresa que guardo até hoje.

Mas vamos começar pelo começo…

A WarmNews

Criei a revista digital WarmNews na década de 90, quando era SysOp da WarmBoot BBS (SysOp = System Operator, a pessoa que administrava um BBS).

As primeiras edições eram disponibilizadas no próprio WarmBoot BBS e distribuídas pela RBT (Rede Brasileira de Teleinformática) para outros BBS da rede e talvez para o resto do mundo. O conteúdo era uma mistura de artigos técnicos, humor e entrevistas.

Por que Zakk Wylde?

Como pseudo-guitarrista-frustrado que (ainda) sou, Zakk Wylde já era um dos meus guitarristas preferidos. Com o trabalho excelente que fazia ao lado do Ozzy e como artista solo, achei que seria uma boa ideia dedicar uma edição especial da WarmNews a ele.

Naquela época, quando as notícias não se espalhavam na velocidade de hoje, Zakk já tinha um website básico. Resolvi arriscar entrar em contato por e-mail com Randy Canis, responsável pelo site, que prontamente se dispôs a ajudar com algumas informações.

Pronto! A próxima WarmNews seria dedicada ao Zakk!

Uma revista digital, ainda nos tempos do MS-DOS

Estamos falando de uma época em que os computadores “PC” com placas de som estavam se tornando mais comuns no Brasil. Apesar do Windows 95 já ter sido lançado, muita gente ainda usava o MS-DOS, por isso a revista foi escrita para DOS. A edição especial Zakk Wylde estreou uma interface totalmente gráfica (mas ainda em cima de DOS), com navegação via mouse e suporte a placas de som compatíveis com a Sound Blaster (quem tinha placas de som podia ler a revista ouvindo de fundo músicas no formato MOD, XM, etc).

Sou programador, não designer, então é claro que pra ter o mínimo de qualidade visual seria necessário o trabalho de alguém que entendesse do assunto. Falei com o Binho Miranda (que conheci através do BBS), mandei pra ele algumas fotos do Zakk que peguei na internet, e em cima delas ele criou as artes que foram usadas no índice e nas “páginas” da revista.

Para quem se interessa pela parte técnica, escrevi outro post falando só sobre isso.

Uma entrevista exclusiva com Zakk Wylde!

Como a revista seria distribuída na internet, inclusive no site oficial do Zakk, o conteúdo foi escrito em inglês.

O site oficial do Zakk tinha um link para download da WarmNews

O texto das matérias foi escrito por mim, baseado no material (as vezes escasso) disponível na internet e em revistas da época, mas faltava algo melhor, mais exclusivo…

Perguntei ao Randy se eu poderia enviar algumas perguntas para o Zakk responder, para uma entrevista exclusiva para a WarmNews.

Como Zakk estava ocupado em turnê, Randy fez a entrevista com ele por telefone, e me mandou as respostas. Tudo bem que nesse meio tempo houve quase dois meses de espera, mas no fim deu tudo certo 🙂

Zakk sempre foi conhecido pelo seu bom humor nas entrevistas 🙂

Um presente inesperado

Alguns meses depois do lançamento, quando eu já achava que a história tinha terminado, recebi um envelope pelo correio, enviado pelo Randy.

Dentro havia uma foto de divulgação do Zakk autografada e com dedicatória. Como se isso já não fosse suficiente, veio também uma fotografia original, daquelas reveladas de filme, mostrando Zakk nos bastidores de um show, dando boas risadas ao lado de ninguém menos que Billy Sheehan e Eddie Van Halen!

As duas fotos estão comigo até hoje.

Olhando para trás, quase 30 anos depois, é engraçado pensar que uma revista digital feita por um programador brasileiro, usando MS-DOS e uma boa dose de entusiasmo, tenha proporcionado tudo isso.

Naquela época, eu só queria juntar duas coisas de que gostava muito: programação e guitarra. Acabei ganhando uma história para contar 😉

E a história talvez ainda não tenha terminado…

Na próxima semana vou a um show da Black Label Society, atual banda do Zakk. Quem sabe não consigo finalmente apertar a mão dele e, de quebra, um autógrafo no disquete de 1.44 MB da WarmNews que guardo há quase 30 anos? 🙂

Seria um belo jeito de fechar esse ciclo. Ou talvez começar outro!

Disquete original, gravado há 30 anos atrás contendo a WarmNews. Detalhe: ainda funciona!

Share and Enjoy !