Great2! – código fonte e técnicas utilizadas

Em 1994 eu era o SysOp da WarmBoot BBS e cursava o último ano de Ciência da Computação. Durante muito tempo, os BBS reinaram absolutos conectando pessoas em todo o mundo, antes de serem eliminados da face da terra com a chegada da Internet para o público geral.

Além da troca de mensagens, os BBS serviam também como repositórios de arquivos, em geral sharewares, freewares, imagens, etc. Usuários discavam para o BBS para baixar/subir arquivos, trocar mensagens, etc. Havia uma tradição em que cada BBS adicionava um pequeno arquivo texto aos arquivos compactados (.arj, .zip, .lzh, etc) do acervo, indicando que ele foi baixado daquele determinado BBS, além de informações básicas como: o nome e telefone do BBS, parâmetros para conexão via modem, etc. Enfim, uma propaganda que ajudava a divulgar a existência do BBS para outras pessoas e, com sorte, captar novos usuários pagantes. Esses arquivos precisavam ser minúsculos, afinal, estamos falando de conexões discadas que variavam entre 2.400bps e 56Kbps, dependendo do seu modem e da qualidade da linha telefônica. Pra se ter ideia, um arquivo de 100KB demoraria entre 5 e 8 minutos para ser baixado em uma conexão de 2.400bps, dependendo das condições da linha!

O WarmBoot BBS era referência na distribuição de Demos de multimidia. Eramos distribuidores oficiais da Future Crew e da Twilight Zone. Sempre achei fantástico o que os demogroups faziam usando assembly, em uma época em que o clock da maioria dos PCs não passava de 40Mhz.

Decidi então fazer algo diferente da maioria dos BBS: ao invés de incluir um arquivo texto chato de “propaganda”, criei algo mais divertido e animado – uma “intro” em modo texto, o great2!. Como pode ser visto no vídeo abaixo (gravado em uma janela emulada do DOS), ao ser executado, o great2! fazia a “propaganda do BBS” quicar na tela, enquanto rolava uma música de fundo juntamente com um VU bargraph animado (no vídeo, a rolagem pode não parecer tão suave, afinal, foi gravado em um emulador de DOS que simulava inclusive a taxa de refresh de um monitor CRT).

Lembre-se, o Windows 95 nem mesmo tinha sido lançado e o Windows 3.1 era meramente uma interface gráfica tosca que rodava em cima do MS-DOS. A maioria dos programas ainda eram executados em modo texto (80 colunas x 25 linhas), nada de mouse, janelas etc! Aqueles mais abonados tinham placas de som em seus computadores (SoundBlaster era o suprassumo da época), monitores CRT (Syncmaster 3 era o que tinha de melhor) e placas “Trident” Super VGA com no máximo 1MB de RAM.

A parte mais interessante do great2! era com certeza o efeito da tela quicando. O modo texto, por padrão, tem um número limitado de colunas e linhas para se trabalhar (80 x 25). Normalmente, rolar um texto significava deslocar as linhas para cima ou para baixo, o que obviamente não causava uma rolagem “suave”, já que cada linha tinha 16 pixels de altura, ou seja, cada deslocamento significava mover o texto na tela no mínimo 16 pixels para cima ou para baixo. O “tchã” do great2! era usar recursos de programação gráfica VGA juntamente com o sincronismo do tempo de retrace vertical dos monitores para “pintar a tela” começando no momento certo e no “pixel” certo, causando um efeito de rolagem suave. O sincronismo do retrace era essencial – sem ele é como se partes da imagem parecessem “quebradas”.

Vou deixar a I.A. explicar o conceito, pois creio que ela fará isso de forma mais didática:

O “motor de rolagem” do programa não redesenha a tela: ele desenha o conteúdo uma vez na memória de vídeo VGA em modo texto e depois altera os registradores da [placa gráfica] VGA para mudar a linha inicial de exibição. Como a VGA permite deslocar a imagem por scanlines dentro das células de texto (25 linhas x 16 pixels = 400 scanlines no total), o movimento fica suave, mesmo sem usarmos um modo gráfico.

A sincronização é feita esperando o vertical retrace do monitor CRT, isto é, o breve intervalo entre um quadro e outro em que o feixe de raios catódicos volta ao topo da tela. Ao atualizar os registradores nesse momento, o código evita flicker e tearing, algo equivalente a usar VSync em gráficos modernos.

Em resumo: o efeito funciona como uma “câmera” que se move sobre uma tela já pronta, usando recursos do hardware VGA e sincronizando as mudanças com o refresh do monitor.

Também pedi pra ela fazer uma simulação animada, pra ficar ainda mais fácil de entender o que acontece:

Simulador de Hardware: Scroll Suave VGA (Modo Texto)

Lado Esquerdo: O monitor CRT real. Repare que o texto não se move na memória, a VGA apenas muda onde a tela começa.
Lado Direito: A VRAM (Memória) está fixa. O retângulo vermelho representa os Registradores da VGA mudando a cada ciclo de Retrace.

É claro que o impacto do great2! não ficava apenas no movimento suave, mas também no tamanho minúsculo do executável (5.7Kb) e na música de fundo. Para tocar a música, usei o HSC Player, disponibilizado publicamente por Hannes Seifert, da NEO Productions (uma desenvolvedora de jogos da Austrália). A música também não é de minha autoria! Peguei pronta na internet e confesso que não me lembro quem era o autor. O “anúncio”, ou seja, o texto colorido foi feito usando o The Draw, um editor de telas ANSI amplamente utilizado pelos SysOps para construir as telas de boas vindas e menus dos BBS. Telas ANSI eram a única forma de adicionar texto colorido na interface de um BBS. Lembre-se, tudo era texto/bytes sendo transmitido pela linha telefônica da forma mais crua possível. Usando ANSI conseguiamos adicionar cores aos caracteres. Em conexões lentas, dava pra ver as telas sendo desenhadas caractere por caractere – haja paciência!

Abaixo está o código fonte do great2!, incluindo meus comentários escritos em um inglês vergonhoso e cheio de erros (tinha 19 anos e havia aprendido inglês por conta própria, lendo revistas e livros americanos sobre programação). Muitas vezes recebi mensagens de pessoas que desacreditavam que um executável tão pequeno podia fazer “tanta coisa”.

O código mostra várias técnicas típicas da programação Assembly/DOS que hoje parecem bem “artesanais”, mas eram normais na época: acesso direto à memória de vídeo (B800h) em vez de APIs gráficas, escrita direta em portas de hardware da VGA (03DAh, 03D4h, 03C8h, 03C9h), sincronização manual com o retrace vertical do monitor, rotação de palheta de cores, uso de interrupções BIOS/DOS (int 10h, int 16h, int 21h), controle explícito de registradores, segmentos e pilha, além de CLI/STI para bloquear interrupções durante trechos críticos.

Também chama atenção o uso de rotinas externas para música AdLib, com callback de IRQ para desenhar VUs na tela enquanto a música toca, e a tela inicial armazenada de forma comprimida e descompactada diretamente na memória de vídeo. Para um programador moderno, é curioso porque quase tudo que hoje seria delegado ao sistema operacional, driver gráfico, engine ou biblioteca era feito “na unha”, conversando diretamente com o hardware e sincronizando o tempo visual quase quadro a quadro.

A AdLib era uma placa de som para PCs, famosa no fim dos anos 1980/início dos 1990, que gerava música por síntese FM usando o chip Yamaha OPL2. As Sound Blasters e demais placas de som que vieram depois mantiveram a compatibilidade básica com a AdLib.

As barras do VU, que simulavam um spectrum analyzer, representavam na verdade o nível de sinal de cada instrumento que estava tocando naquele momento, e dava um toque especial e um certo dinamismo na apresentação.

O great2! era compilado com o tasm – o Turbo Assembler, assembler da Borland usado principalmente em DOS para escrever e compilar programas em linguagem Assembly para processadores x86, como o 8086/286/386.

Continue lendo

Share and Enjoy !

BBS – Um passado não tão distante, mas já quase esquecido

Quando se fala em tecnologia, o tempo parece passar mais rápido do que o normal. A evolução é tão rápida que lembrar de algo que aconteceu há 20-30 anos atrás pode ser comparado a lembrar do tempo dos dinossauros.

Obs: O artigo é cheio de links, vale a pena visita-los para se aprofundar em cada assunto.

Na década de 90, computadores tinham menos poder de processamento do que um smartphone atual, e nem estou falando dos tops de linha! Provavelmente, muitos dos nerds e youtubers de hoje não reconheceriam grande parte das siglas, abreviações e termos utilizados no mundo da computação no início da década de 90: XT, AT, 286, 386 SX, 386 DX, 486, Himem.sys, EMM386, CGA, EGA, VGA, CP/M, etc. A internet no Brasil ainda era uma recém nascida, acessível inicialmente apenas em algumas universidades públicas. Web? Não! Estamos falando de telnet, ftp, Usenet, etc.

Foi um pouco antes dessa época que os BBSes (Bulletin Board System, ou Sistema de Quadro de Avisos – numa daquelas traduções horríveis ao pé da letra) reinavam como as únicas opções de “comunidade virtual” [tá, não vou considerar o VideoTexto, 😀 ], sem saber que logo seriam dizimadas pela chegada da Internet e suas crias tão mais eficientes (e-mail, ICQ, Orkut, Netscape, etc). Os BBSes permitiam que qualquer pessoa que possuísse um computador + modem + linha telefônica pudesse baixar e enviar mensagens e arquivos, além de teclar com outros usuários em real-time através dos chats (restritos ao próprio BBS, ou seja, não era possível conversar em real-time com usuários de outros BBS). Tudo isso em “impressionantes” velocidades que variavam entre 2.400bps e 28.800bps (bps = bits por segundo!) .

Por trás de um BBS sempre havia um software gerenciador de BBS e uma pessoa, o SysOp (System Operator – Operador do Sistema). No Brasil, o software mais usado era o “RA” (Remote Access). Fui SysOp da WarmBoot BBS e, particularmente, preferi usar o Maximus e posteriormente o KBBS, sendo esse último indicado para rodar em OS/2. Geralmente, não era o gerenciador de BBS que “atendia” as ligações. Essa função era de outro software, como o FrontDoor. Era ele que atendia as ligações, verificava se era uma chamada de um usuário ou de outro BBS (para troca de pacotes), e repassava para o software apropriado continuar o “atendimento”. Alguns softwares gerenciadores já traziam um “FrontDoor” embutido.

Dentre os modems mais utilizados no Brasil estavam os da USR (US Robotics) e Hayes, sem contar os inúmeros xing-lings trazidos do Paraguai (Genius, BitCom, etc). O momento de conexão via modem era angustiante! Devido a péssima qualidade das linhas telefônicas, muitas vezes a “gritaria” do modem se perpetuava pela eternidade, na tentativa de negociar uma melhor taxa de conexão.

A troca de mensagens não era instantânea, mas era mais rápida do que usar os Correios 😀 Você conectava, via/lia as mensagens novas, respondia as que desejasse e aguardava um ou dois dias para obter sua resposta. Isso porque a maioria dos BBS trocava mensagens entre si apenas uma vez ao dia, ou melhor, de madrugada, para economizar na conta telefônica (o desconto nos pulsos de interurbanos chegava a 75%).

O processo para troca das mensagens era bem organizado. Cada BBS tinha seu node de distribuição (um outro BBS), onde se conectava para trocar as mensagens. Havia redes de mensagens responsáveis por organizar tudo isso, sendo a internacional Fidonet a maior e mais famosa! Posteriormente, surgiu no Brasil a RBT (Rede Brasileira de Teleinformática), que obteve um certo sucesso mas nunca destronou a “Fido”. Para fazer parte dessa estrutura, o BBS precisava se filiar à uma rede existente, obter seu número de cadastro e começar a participar do processo organizacional de troca de mensagens. Um número de cadastro na Fidonet seguia o padrão zone:net/node, por exemplo, 1:105/6 significa host 6 dentro da rede local de Portland Oregon (rede 105) que está na América do Norte (zona 1). Basicamente, os BBSes conectavam o node de distribuição, enviavam e recebiam as novas mensagens. Esses nodes por sua vez conectavam a outros nodes, e assim por diante, distribuindo as mensagens para todo o planeta.

Como o número de linhas telefônicas disponíveis nos BBSes costumava ser limitado (as linhas eram tão escassas e caras, que chegavam a ser alugadas em imobiliárias), era de praxe utilizar softwares para baixar e responder as mensagens enquanto se estivesse desconectado. O usuário ligava para o BBS, baixava o pacote contendo as novas mensagens ao mesmo tempo que subia as mensagens que já havia respondido quando estava desconectado, tudo através do uso de softwares “mensageiros”, como por exemplo o BlueWave.

A interface dos BBSes era de texto puro, nada de gráficos bonitinhos, janelas, etc. No máximo uma corzinha pra deixar os caracteres menos chatos. Não demorou para que programas específicos surgissem a fim de facilitar a criação das chamadas “telas ANSI”, onde se conseguia utilizar caracteres especiais e coloridos, como bordas, etc. para criar algo mais bonito do que uma simples tela preta cheias de letras e números brancos. Vale lembrar que uma configuração errada no software de comunicação já era suficiente para transformar uma linda tela ansi num indecifrável conjunto de caracteres estranhos e sem o menor sentido. Um dos editores ANSI mais usados na época era o TheDraw.

Além da troca de mensagens, os BBSes eram a fonte mais rápida para se ter acesso a arquivos e novidades. O acervo de arquivos de um BBS geralmente ficava armazenado em CDs e HDs. Um BBS “top” tinha múltiplos drives de CDROM, provendo simultaneamente diversos CDs contendo bibliotecas de arquivos. Já os BBSes mais modestos (a maioria) tinham apenas um CDROM, e criavam um cronograma onde de tempos em tempos os CDs eram trocados por outros, variando portanto o acervo de arquivos ofertado. Havia CDs com coletâneas de arquivos específicas para BBS, sendo um dos mais famosos o Night Owl.

Entre os arquivos mais populares entre os usuários estavam os GIFs que, em sua maioria, eram de mulheres nuas (que novidade!). Cindy Crawford, Claudia Schiffer, Paulina Poriskova, entre outras eram as musas da época. Obviamente nem tudo se limitava a gifs. Os freewares e sharewares eram a melhor forma de se distribuir e/ou vender softwares, em uma época onde um programa de computador não passava de alguns KBytes de tamanho. O conceito do shareware é: compartilhe o programa, teste-o e registre/pague para continuar usando. Compactadores de arquivos eram amplamente utilizados para diminuir o tamanho e tempo dos downloads. O mais usado na época era o ARJ, que oferecia taxas de compressão melhores que o ZIP, além de muitas outras funcionalidades. Era comum cada BBS adicionar um arquivo próprio (geralmente txt ou um pequeno exe/com) de propaganda, como se fosse uma assinatura dizendo: esse arquivo veio do BBS tal. Na WarmBoot BBS, adicionávamos o great2!.exe.

Além dos GIFs, freeware e sharewares, outra categoria de software começou a se disseminar nos BBS de todo o mundo: as Demos!

Demos nada mais eram do que apresentações gráficas, geralmente escritas em Assembly, onde durante a apresentação, efeitos visuais e animações 3D eram exibidos acompanhados por uma trilha sonora envolvente, sendo tudo calculado e desenhado em real-time, numa época onde os processadores rodavam em média a 40Mhz (com o turbo ligado :-D).

As Demos merecem uma atenção especial, e serão o tema de um próximo post.

Mas e quanto aos usuários? Geralmente, se associar à um BBS envolvia o pagamento de uma mensalidade. O valor dependia do “nível” que você desejasse ter dentro do BBS. Os níveis determinavam que áreas de arquivos ou mensagens poderiam ser acessadas, quanto tempo de conexão por dia você poderia utilizar e quantos KBs poderia transferir. A maioria dos BBSes oferecia alguns minutos gratuitos para que novos usuários pudessem “passear” pelos menus e pelo acervo, antes de decidir por assiná-lo. O processo de assinatura em si começou um tanto quanto manual: baixava-se e preenchia-se a mão uma ficha de cadastro que era enviada pelo correio juntamente com o cheque para assinatura. Posteriormente, foi simplificado, dispensando o envio pelo correio e aceitando transferências bancárias. Os BBSes mais poderosos/bem sucedidos aceitavam pagamento com cartão de crédito.

A conexão do usuário com o BBS era feita através de programas específicos, como o Telix. A troca de arquivos se dava através de protocolos de transferência de arquivos, sendo o ZModem (unidirecional) o mais comum. O BiModem, não tão difundido, permitia comunicação bidirecional, ou seja, podia-se enviar e receber arquivos ao mesmo tempo. O protocolo escolhido precisava ser suportado tanto pelo gerenciador de BBS como pelo programa cliente utilizado pelo usuário. Alguns BBS associavam a elevação do nível do usuário à quantidade de arquivos enviados por ele, como forma de incentivar o envio de novos arquivos e, portanto, aumentar o acervo do BBS.

Se chegou até aqui, ou é porque viveu essa época e deve estar agora muito nostálgico e cheio de saudades, ou porque é um jovem micreiro curioso que não se contenta em viver apenas o atual, mas sim saber como chegamos onde estamos. Em ambos os casos, parabéns! 😉

Com a chegada da Internet, os BBSes perderam o sentido de existir, afinal, ela oferece tudo que os BBSes ofereciam, só que de uma forma muito mais ágil, eficiente e com alcance praticamente ilimitado. Com isso, os BBSes começaram a desaparecer, sem deixar, no entanto, de marcar a história da tecnologia e a vida dos seus usuários.

Share and Enjoy !

Manual da WarmBoot BBS

Continuando a sessão nostalgia, abaixo segue o link do manual da WarmBoot BBS. Para os que viveram a época das BBSs, muitos dos termos utilizados trarão boas recordações. Para os mais novos, pode parecer um pouco estranho, afinal, hoje em dia, quem é que precisa configurar os parâmetros de paridade, etc. do modem (discado)? 😀

Zmodem, Fidonet, RBT, telas ANSI, etc… isso te lembra alguma coisa? 🙂

Enjoy!

Manual da WarmBoot BBS

Share and Enjoy !







A história da WarmBoot BBS

O texto abaixo foi extraído da primeira edição do WarmNews, uma publicação eletrônica criada por mim em 1994, e distribuída em diversos BBS pela RBT, ainda na época em que era SysOp da WarmBoot BBS. O texto foi escrito pelo Luiz Paulo, Co-SysOp da BBS, e acredito que vai despertar muitas saudades e lembranças de quem teve o privilégio de viver aquela época 😉

Algumas das pessoas mencionadas nesse texto eu não tenho mais contato, portanto, estou mascarando parte do nome delas, por não ter autorização de menciona-los.

Com a rápida proliferação da Internet, as BBS fecharam suas portas há muitos anos, pois não havia mais sentido da sua existência. No entanto, ficaram marcadas na memória de todos aqueles que viveram aquela era de “inovação tecnológica” 😉

Carlos H. Cantu

História de um BBS (publicado originalmente em 1994)

Acho que é de grande curiosidade da maioria dos usuários saber como foi a história do seu BBS. Nas linhas abaixo, descrevemos a história do WARMBOOT BBS, desde seu planejamento até o que é hoje.

Se você é SysOp e acha que a história da criação do seu BBS é interessante, entre em contato conosco para que possamos publica-la nos próximos WarmNews !

Texto escrito por Dart Vader (WarmBoot Group).

Tudo começou em Setembro de 1992, quando um certo SysOp de Campinas cortou o acesso de 2 membros do ainda não existente WARMBOOT Group em seu BBS, alegando que não podia “dar nível” a ninguém (NE: nível se refere ao limite de acesso que um usuário tinha, indo desde ter direito a ficar poucos minutos conectado por dia e não poder fazer download, até poder máximo). Só que este esqueceu que GRANDE PARTE do que ele tinha de Multimídia na época tinha sido levado por eles. Passado um tempo, tivemos a ideia de montar o nosso próprio BBS.

Foi aí que nos reunimos com o intuito de criar o WARMBOOT BBS. O grupo era composto pelos seguintes membros e colaboradores:

Continue lendo

Share and Enjoy !