EXOSPACE - Fazendo Aplicações em Clipper Voar Alto

Autor: Wilson Mauri Bonfim - GPS/DITEC-F
São comuns na vida do desenvolvedor Clipper os problemas com o tamanho da aplicação em relação ao tamanho da memória e as famosas mensagens "Not enough memory" e "Out of memory".

A atitude a tomar, além de arrancar os cabelos (queimar as pestanas, para os calvos), é procurar artifícios para contornar o problema, seja gerando overlays e/ou subdividindo a aplicação em executáveis menores.

Com o advento das versões 5.xx do Clipper, os problemas deste tipo foram parcialmente resolvidos, mas não esquecendo, porém, que o Clipper é o propulsor de um avião (sua aplicação) cuja torre de controle, chamada DOS, não permite vôos acima de 640 Kb de altura sob pena de explodir.

As memórias dos microcomputadores cresceram, tornando-se padrão nos processadores 386 e 486 o espaço aéreo de 4 Mb... e sua aplicação continua voando baixo.

Continuava... surgiu o EXOSPACE, permitindo à sua espaçonave romper a barreira dos 640 Kb e voar com autonomia até 16 Mb de altura.

Incrível, fantástico, espetacular .... mas é verdade.

A Computer Associates, lançou, no início deste ano, o CA-Clipper/Exospace, ou simplesmente EXOSPACE para os íntimos, um LINKEDITOR que permite rodar as aplicações em modo protegido, eliminando a barreira dos 640 Kb, acessando diretamente a memória estendida, tornando o tamanho do módulo de carga coisa ultrapassada.

As aplicações EXOSPACE continuam fazendo uso da memória baixa, mas podem ser carregadas em 256 Kb (ou menos), deixando o restante para a memória alta.

Também não existem mais preocupações com overlays, bastando especificar os seus .OBjs e .LIBs, e linkeditar.

Eventualmente, os overlays podem continuar existindo quando a sua aplicação rodar, mas completamente automáticos e transparentes.

Para utilizar o EXOSPACE, é necessário um equipamento compatível com o PC-AT 286 (ressuscitando os 286) ou maior, com 2 Mb de memória no mínimo, 1 drive de disquete de 3.5'' e espaço livre de 1.5 Mb no hard-disk para instalação do produto.

Você pode rodar sob o MS-DOS ou DR-DOS, versões 3.x ou maior, ou ainda sob o OS/2 v. 2.0 ou maior. (Que portabilidade ... Hem?).

Ah .... você precisa também de uma cópia instalada do CA-CLIPPER v. 5.01 ou maior... of course!

A instalação do produto é simples. A partir do Install existente no disquete do produto (viu a necessidade do drive de disquete?), são descarregados todos os arquivos do EXOSPACE, utilizando-se dos mesmos diretórios do CLIPPER 5.

Para linkeditar a sua aplicação é mais simples ainda, bastando usar o comando abaixo:

EXOSPACE File  <OBJFileName>

Para grandes aplicações, onde normalmente utilizava-se um arquivo .BAT para simplificar a compilação, e um arquivo.LNK para Linkedição, basta utilizá-los da mesma forma, simplesmente substituindo o RTLINK por EXOSPACE.

Alguns comandos utilizados pelo Rtlink, os de overlays, por exemplo, serão simplesmente ignorados pelo EXOSPACE sem problemas, gerando o módulo executável.

Se a sua versão do Clipper for a v.5.01 , supondo que seu arquivo.LNK se, chame Exemplo.LNK, digite:

EXOSPACE @exemplo EXO CL 501

Como o EXOSPACE foi desenvolvido a partir do CLIPPER 5.02, procurou-se manter a compatibilidade com a V. 5.01. Utilizando-o desta forma, evitará que se obtenha alguns "unresolved externals".

Para testarmos o EXOSPACE, utilizamos uma aplicação com executável em torno de 390 Kb, composta de 6 arquivos de overlays, somando em torno de 200 Kb, a qual englobava bibliotecas do usuário com rotinas em linguagem C e em Assembler, desenvolvida sob o Clipper Summer 87, inicialmente compilada no Clipper 5.01 e linkeditada no Rtlink.

Encontramos alguns problemas de compatibilidade nas bibliotecas em C, para os quais o Rtlink não dava informações precisas do módulo que gerava os erros. Em seguida, linkeditamos utilizando o mesmo arquivo .LNK utilizado anteriormente, no EXOSPACE, que nos informou o módulo que fazia a chamada inicial nas rotinas que geravam problemas. Acertamos as rotinas e linkeditamos novamente, obtendo o módulo executável.

Utilizando o Rtlink, obtivemos um módulo executável com tamanho em tomo de 620 Kb, o qual cresceu aproximadamente 100 Kb quando compilado no EXOSPACE.

Para rotinas em linguagem C, o EXOSPACE recomenda a utilização das versões 5.1, 6.0 e 7.0 da Microsoft e do Borland C++. Utilizei a versão 5.0 do C da Microsoft sem problemas.

Para rotinas em Assembler, recomendo o uso do Microsoft Assembler.

Quanto à rotina em Assembler, não consegui executá-la no EXOSPACE, ocasionando problemas no modo protegido utilizado pelo EXOSPACE. Evitei a rotina, e daí... tudo bem.

Com relação a esta rotina, o EXOSPACE emite uma série de indicadores como forma de ajudar a resolver o problema. O meu procedimento, por enquanto, é só um: "Escovadores de bits... Socorro!"

O manual que acompanha o EXOSPACE é pequeno, contendo em torno de 75 páginas mais os índices, tudo em inglês... sorry!

O EXOSPACE permite ainda que as facilidades do CA-Clipper Debugger continuem sendo utilizadas normalmente, e contém alguns comandos (poucos) que dão maior poder ao desenvolvedor.

Para encerrar, um exemplo de arquivo de linkedição para o EXOSPACE, copiado do próprio manual.

# Exemplo.lnk - roteiro exemplo para linkeditar CA-Clipper/EXOSPACE
#
# Para executar digite: EXOSPACE @EXEMPLO
#
# Você necessita somente listar os OBJs e libraries requeridos.
# Não se preocupe com OVERLAYS - Eles são coisas do passado
#
FILE MYPROG
LIB MYLIB
#
# O nome do .EXE pode ser especificado usando o comando OUTPUT, mas é
# opcional.
# Se OUTPUT for omitido o .EXE levará o nome do primeiro .OBJ listado.
# (Neste caso MYPROG.EXE)
#
OUTPUT MYAPP
#
# Lembre-se que as bibliotecas de terceiros deverão ser linkeditadas junto e devem # ser compatíveis com o CA-Clipper
#
LIB PWFUNCS, CLASSY, PWKERNEL
LIB EXOSPACE
#
# Para linkeditar com CA-Clipper Debbuger, retire o símbolo de comentário da linha # seguinte
# FILE CLD.LIB