--------------------------------------------------------------------------------- E D - A R T G G M I --------------------------------------------------------------------------------- PUBLICADO NA REVISTA MICRO SISTEMAS EDIÇÃO NR.54 (MARÇO DE 1986) --------------------------------------------------------------------------------- AUTOR: CLÁUDIO DE FREITAS B. BITTENCOURT --------------------------------------------------------------------------------- CONVERTIDO POR KELLY ABRANTES MURTA - BRASIL - OUTUBRO 2000 --------------------------------------------------------------------------------- OBS.: Texto escaneado diretamente da revista MS e reconhecido via OCR. INTRODUÇÃO O computador é uma máquina fria, impessoal e, para muitos, antipática. Sem dúvida, mas é próprio das máquinas, essa invenção do bicho-homem que carrega tão pouco da personalidade do seu criador, justamente naquilo que ela tem de mais humano. Os seus programas, por exemplo; você já reparou bem neles à luz do sentimento estético ou moral ou sentimental? São de fato frios, convenhamos. A despeito de toda a sua criatividade, você não tem feito muita coisa para atenuar essa faceta menor do seu equipamento, não é verdade? E no entanto, você é um cara legal, amante do belo, cheio de ternura no coração. Você não é máquina! Urge então fazer algo a respeito e aqui está GGMI para despertar A veia artística que há, reprimida, dentro do leitor. Através da arte visual, vamos explodir para o mundo esse oceano de sentimentos que jaz latente no fundo de su'alma (bonito, hem'?). O Ed-Art GGMI é um editor gráfico que se presta à preparação de telas, as quais poderão ser arquivadas em fita independentemente e acopladas a qualquer programa, de sua lavra ou não. Dependendo da sua conveniência, as telas poderão ter continuidade entre si, formando um telão. Sequências verticais e bidirecionais são também fáceis de se conseguir. MONTAGEM O Ed-Art foi criado para ser um módulo do Micro Bug. Para montá-lo, carregue no micro esse fabuloso (nunca é demais dizer) programa publicado pela sua MICRO SISTEMAS e, com o comando M, digite os códigos da listagem nos endereços indicados. Ao terminar, confira com o comando P 6E00,783A. O resultado tem que ser 9B0A. Isso posto, salve-o em fita várias vezes com o comando I 6E00,783C. A seguir, use o comando C do Micro Bug para carregar um módulo salvo; só depois dessa operação ele poderá ser acessado. ORGANIZAÇÃO DA MEMÓRIA Um módulo do Micro Bug ocupa a memória do endereço 6E00 até 77FF, mas o Ed-Art é diferente, pois foi necessário aumentar o espaço, baixando o endereço inicial para 6B00 (ou seja, menos 768 bytes). Junto com ele desceram o RTP, a ENSP, o stack do GOSUB e o stack da máquina - veja o manual do micro para maiores esclarecimentos. Não se preocupe com essa expansão, pois tudo ocorre automaticamente quando é acionado pela primeira vez qualquer um dos quatro comandos disponíveis no Ed-Art. E o status quo anterior é restabelecido ao ser acionado o comando C do Micro Bug, que carrega um novo módulo no lugar do Ed-Art. O único efeito prático é uma diminuição correspondente da memória disponível para os programas BASIC, abaixo do Micro Bug. Mas em 99% dos casos essa pequena quantidade de bytes não fará falta. Além do arquivo de imagens normal do micro, que aparece na tela da TV, o Ed-Art trabalha com mais dois arquivos, situados em buffers nas seguintes posições da memória: l°) Principal - de 27392(6B00) a 28159(6DFF) 2°) Reserva - de 28160(6E00) a 28927(70FF) COMANDO T O comando T, acessado via Micro Bug, é o editor propriamente dito. Ao ser acionado, aparecerá na tela o Ed-Art piscando maliciosamente para você - não o censure, é uma cortesia - pois, trata-se de um cavalheiro de fina educação. Apague-o com SHIFT A. Restará na tela aquilo que o manual do micro chama pomposamente de "elemento de imagem", mas que para nós responderá pelo simpático nome de pixel. O dito ocupa a área de 1/4 de caráter e é usado nas instruções PLOT e UNPLOT do BASIC Sinclair. Reconheceu? É o próprio. Pois o pixel desloca-se nas oito direções cardeais com o uso das teclas abaixo, sabiamente escolhidas por GGMI em função de mnemónicos que facilitarão a sua vida, leitor. TECLA MNEMÓNICO DIREÇAO TECLA MNEMÓNICO DIREÇÃO 1 {1} esquerda-acima 5 {5} esquerda 2 {2} direita-acima 6 {6} abaixo 3 {3} direita-abaixo 7 {7} acima 4 {4} esquerda-abaixo 8 {8} direita OBS.: Os mnemônicos representam os símbolos gráficos obtidos com SHIFT+TECLA em modo GRAPHICS. O pixel pode caminhar nas condições PLOT, UNPLOT e "Sem Rastro", conforme tenham sido acionadas previamente as teclas K, J ou L, as mesmas de +, - e = . Prático, não? MACROCARACTERES O pixel é o modo principal de edição, permitindo acesso a todas as funções disponíveis. Podemos imprimir macrocaracteres acionando as teclas N (de <) ou M(de >). A primeira prepara um caráter grande (4x4) e a segunda um gigante (8x8). Os símbolos "<" e ">" alternam-se com o pixel piscante para indicar a condição assumida. A tecla que você pressionar em seguida será macroimpressa, salvo se for NEW LINE, FUNCTION, RUBOUT ou GRAPHICS, que desativam a preparação. Todos os símbolos do Sinclair são válidos e os de vídeo inverso são preparados por SHIFT N e SHIFT M, em vez de N e M. Se o espaço na tela for insuficiente para o macrocaráter, a tecla de preparação não surtirá efeito. Após a macroimpressão, o pixel estará na condição "Sem Rastro", o que aliás ocorre após qualquer operação extraordinária. Logo, você irá apreciar isso. RETA Reconheço, "reta" é força de expressão, pois o que aparece na tela é mais chegado a caminho de rato do que a reta. Enfim, é o que nos permite a baixíssima resolução do nosso equipamento, que se há de fazer? E deu trabalho, a desgraçada! Ela é preparada pela tecla R. A partir daí, o pixel desloca-se sem rastro nas direções horizontal e vertical (teclas 5 a 8), exclusivamente. No ponto de origem fica um segundo pixel piscante, para sua orientação. Ao ser pressionado SHIFT R, ei-la impávida e gloriosa na sua pobreza, de um ponto ao outro. NEW LINE é a tecla que desativa a preparação da reta. CIRCULO Esse é melhorzinho, ainda que também precário. Coloque o pixel na posição que você pretende que seja o centro do círculo e pressione a tecla C, a letra que vai aparecer irá se alternar com o pixel. O micro ficará então esperando que você tecle dois algarismos relativos ao raio da circunferência, que poderá variar de 02 a 35. O primeiro algarismo é o da dezena e o segundo da unidade. A letra C será substituída pelo primeiro algarismo que por sua vez será substituído por um caráter indicativo do raio, tão logo seja teclado o segundo algarismo. O código desse caráter (vide manual) é igual ao raio mais 28 (se você não gostou, deixe de fazer cara feia e ignore o que se passa no centro da circunferência). A tecla que desativa a preparação do círculo é NEW LINE. MANIPULAÇÃO DOS ARQUIVOS A manipulação dos arquivos é uma das mais versáteis funções do Ed-Art. Ela permite que se faça a interface de duas telas, portanto deve ser usada quando se pretender dar continuidade horizontal ou vertical às mesmas. As teclas de acionamento são P (de Principal), H (de Horizontal) e V (de Vertical). A tecla P apresenta na tela o conteúdo do buffer principal (o primeiro na memória). Só que, a cada vez que ela é acionada, esse conteúdo é antes trocado com o que está no buffer reserva (o segundo na memória). As teclas H e V provocam na tela o rolamento da imagem para a esquerda e para cima, respectivamente, possibilitando o interfaceamento das duas pêlos quatro lados. E semelhante a um SCROLL, só que em vez de rolar linha por linha (coluna por coluna), o rolamento se dá de metade em metade da tela. As teclas H e V podem ou não trocar o conteúdo dos buffers, dependendo da situação. O conteúdo que ocupar o quadrante superior esquerdo da tela será sempre do buffer principal. Contudo, não convém facilitar: antes de efetuar qualquer operação que possa comprometer a integridade do seu trabalho (ex: CLS, SAVE e LOAD de arquivos), estabeleça o conteúdo correto do buffer principal mediante o acionamento da tecla P - ela existe para isso. OUTRAS FUNÇÕES DO MODO PIXEL No modo pixel são disponíveis ainda as funções abaixo, apresentadas na sequência "tecla-mnemônico-efeito". 9 - "GRAPHICS" - efetua inversão de vídeo SHIFT S - "LPRINT" - remete imagem da tela para a impressora SHIFT A - "NEW" - efetua CLS SHIFT NEW LINE- - "FUNCTION"' - retorna ao Microbug SHIFT Y - "RETURN" - retorna direto ao BASIC NEW LINE - - muda para modo ESCRITA HORIZONTAL MODO ESCRITA O modo escrita, que pode ser horizontal ou vertical, permite imprimir todos os símbolos Sinclair em tamanho normal. As funções disponíveis são: SHIFT 9 - "GRAPHICS" - passa a imprimir caracteres inversos SHIFT O - "RUBOUT" - executa RUBOUT (horizontal ou vertical) SHIFT NEW LINE - "FUNCTION" - retorna ao Microbug (igual ao modo PIXEL) NEW LINE - - muda modo A TECLA NEW LINE A mudança do modo de edição é efetuada pela tecla NEW LINE, obedecendo à seguinte sequência: PIXEL -> ESCRITA HORIZONTAL -> ESCRITA VERTICAL -> PIXEL ... etc. O modo em execução é identificado pelo cursor piscante que se alterna com o caráter, ao qual se superpõe. Esse cursor, dependendo do caso, pode ser: pixel, H, [H] , V ou [V]. AUTO-REPETIÇÂO Quase todas as funções do comando T são auto-repetitivas (excetuam-se aquelas em que essa propriedade seria inconveniente). Ao ser pressionada uma tecla, a função é prontamente executada e caso você não a libere, após um pequeno tempo de espera começa a auto-repetição em ritmo veloz. Isso, além de agilizar o seu trabalho, lhe permitirá apreciar alguns efeitos dinâmicos com a manipulação de arquivos. COMANDOS S e U Retornando ao Micro Bug, você disporá ainda dos comandos S, U e V (este será visto mais adiante). O comando S (de SAVE) salva em fita o conteúdo do buffer principal e o comando U carrega, também no buffer principal, o que for lido em fita. Muita atenção no uso desses comandos, pois um erro de arquivo pode apagar irremediavelmente um trabalho acabado, sem possibilidade de recuperação. Recorra sempre à tecla P do modo pixel para estabelecer o conteúdo correio dos buffers. Para a eventualidade de carregar no buffer uma gravação imperfeita, que mandaria o sistema para o espaço quando mostrada na tela, o comando U zera o bit 6 dos bytes lidos em fita. Isso equivale a subtrair 64 dos códigos não imprimíveis, tornando-os imprimíveis. Os demais permanecem inalterados. Ignore este parágrafo se você não entendeu nada do que eu quis dizer. ACOPLAMENTO EM LINHA PRINT - COMANDO V Existem diversas maneiras de acoplar as telas produzidas com os seus programas. A mais simples é através do comando V que cria no BASIC uma linha PRINT com o conteúdo total ou parcial do buffer principal. Sua sintaxe é: V XXXX,YY onde XXXX é o número da linha que vai ser criada e YY é a quantidade de linhas do buffer principal que deve ser copiada (contando de cima para baixo). Dados impróprios provocam mensagens de erro: as mesmas do comando E do Micro Bug (MS nº 33) e mais "HUUUU", que é o Ed-Art vaiando se você fizer YY igual a zero ou maior do que 24. Lembre-se de que, no modo normal, o Micro Bug interpreta os dados no sistema hexadecimal, a menos que haja um $ antes. Cabe aqui uma dica importante, para evitar um defeito do firmware Sinclair, que já atrapalhou a vida de muita gente boa por aí. Quando se está trabalhando com linhas maiores do que a tela, pode ocorrer de uma delas ficar rolando ad infinitum na TV, obrigando o infeliz programador a desligar o micro. Isso acontece por incompatibilidade das variáveis do sistema LPC e LTOP quando, por exemplo, apaga-se a linha posterior a uma dessas grandonas. Para sua segurança e tranquilidade, crie uma linha assim: XXXX REM NÃO ME APAGUE onde XXXX é igual ao número da linha fatídica mais um. O defeito pode ocorrer também ao retornarmos ao BASIC e teclarmos NEW LINE, após termos criado linhas grandes com os comandos E e V do Micro Bug. Para evitar a "catástrofe", tecle LIST em vez de NEW LINE e crie logo a linha de segurança. Só então respire tranquilo. As linhas PRINT criadas pelo comando V podem perfeitamente ser editadas e o PRINT substituído por outros comandos BASIC válidos, como por exemplo LPRINT; PRINT AT X,Y; LET A$=;etc. ACOPLAMENTO EM VARIÁVEL STRING O Micro Bug possui alguns comandos próprios que podem também ser usados no acoplamento, embora de maneira menos direta e bem mais complicada. Dentre esses estão os comandos E (MS n° 33) que cria linhas REM de qualquer tamanho e o comando O (MS nº 34) que transfere conteúdos da memória de um lugar para outro. O uso dessas alternativas requer bom conhecimento da organização de memória do micro e não o recomendamos nem para o preenchimento de variáveis string previamente criadas pela instrução DIM. Essa terefa é muito mais facilmente executada através do próprio BASIC, com poucas linhas de programação. Em vez de ficar aqui gastando inutilmente o nosso escasso latim, vamos a um exemplo (rode-o no modo FAST). 10 LET A$="" 20 FOR F=l TO 22*32 30 LET A$=A$ + CHRS PEEK (27391+F) 40 NEXT F 50 STOP Isso copia as 22 primeiras linhas do buffer principal na variável A$, que pode então ser impressa a qualquer momento no fluxo normal do seu programa, desde que você jamais tecle RUN (rode o programa com GOTO X) nem CLEAR, que apagam as variáveis. O programinha apresentado como exemplo pode e deve ser modificado por você de acordo com as suas conveniências, mas antes entenda-o bem. Repare que o número 22 da linha 20 é a quantidade de linhas a ser copiada e que o 27391 da linha 30 é igual ao endereço inicial do buffer principal menos l. Após ser rodado, o programinha pode ser apagado, mas lembre-se, nada de RUN ou CLEAR. ACOPLAMENTO NO ARQUIVO DE IMAGENS DO SISTEMA A maneira mais lógica e inteligente de se efetuar o acoplamento de uma tela é colocá-la no próprio arquivo de imagens do sistema no momento da gravação do programa em fita. Como você deve ter notado, a maioria dos programas vai e volta da fita para o micro, arrastando atrás de si quase 1 Kb de endereços absolutamente vazios! Pois tratemos de ocupá-los com o que é chamado de "tela de abertura", aquela que se apresenta tão logo o programa seja carregado no micro. É uma excelente idéia fazer uma tela padrão, tipo marca registrada, que personalize os seus programas. Mas o melhor mesmo nesse tipo de acoplamento é que não aumenta o tamanho dos programas, uma vez que a área utilizada está ali à espera da nossa criatividade. O acoplamento é bastante simples. Crie, em local estratégico dentro do seu programa, as linhas abaixo: XXXX RAND USR 31210 YYYY SAVE "nome do seu programa" Naturalmente, o Micro Bug deve estar em posição na memória do micro. Em seguida, rode o programa BASIC com RUN XXXX ou GOTO XXXX, acionando com isso o Micro Bug. Uma vez lá em cima, você pode agir calmamente, carregando o Ed-Art se ele ainda não estiver em posição, carregando e/ou retocando a tela de abertura, etc. Nessa situação, você só não deve executar os comandos B, E e V; o resto é válido. Quando estiver tudo pronto, com o Ed-Art (no modo pixel do comando T) mostrando a tela escolhida, acione o gravador e tecle SHIFT Y, função que retoma direto ao BASIC sem passar pelo. Micro Bug. O retorno dar-se-á na linha YYYY, executando o SAVE com tela e tudo. Um programa assim gravado, ao ser carregado, mostra a tela de abertura e sai rodando a partir da linha seguinte a YYYY. Claro que o fluxo do programa não deverá mais passar pela linha XXXX. Essa linha, aliás, pode ser omitida se for adotado o seguinte procedimento: 1°) De alguma forma, descubra o endereço inicial da linha YYYY (será 16509 se for a primeira do programa); 2°) Acione o Micro Bug através do comando direto RAND USR 31210; 3°) Com o comando M, troque o conteúdo da variável do sistema chamada PXLN, situada nos endereços 16425/6, pelo endereço inicial de YYYY; 4°) Efetue as operações descritas no processo normal. Finalizando, espero ter deixado perfeitamente claro ao amigo leitor a pretensão do Ed-Art GGMI. Ele é apenas um editor gráfico que ajuda a criar telas, sem a preocupação de empregá-las. Essa tarefa competirá ao seu programa. A sua competência como programador é que fará com que elas se movimentem graciosamente na TV ou fiquem estáticas. Creio que nesse mister a sua MICRO SISTEMAS poderá emprestar valiosa colaboração pelas inúmeras dicas e rotinas já publicadas. Aplique-se, pois você é o dono da pelota; repare que o Ed-Art não acompanha o seu programa, ele fica para trás e não deixa marcas. E isso é muito bom. Um forte abraço meu e de GGMI e boas artes com o Ed-Art.