Ora aqui vai uma grande noticia, não só para os possuidores de um CPC 464, mas também para os que possuem um 664 ou um 6128, já que poderão utilizar todas as capacidades do BASIC 1.1 do respectivo computador sem se preocuparem com a compatibilidade do seu programa com o “irmão mais pequeno” da mesma linha. A primeira listagem encarrega-se de instalar a ampliação do BASIC 1.1 no CPC 464. De momento, pode começar por introduzir no computador este pequeno programa de carregamento: 10 ' *================================* 20 ' * CARREGADOR DO PROGRAMA * 30 ' * EMULADOR.BIN QUE CONTEM * 40 ' * O BASIC 1.1 PARA CPC 464 * 50 ' *================================* 60 ' 70 SYMBOL AFTER 256 80 MEMORY &A1FF 90 SYMBOL AFTER 240 100 LOAD "EMULADOR.BIN" 110 CALL &A200 120 MODE 1:PEN 1:PAPER 0 130 INK 0,1:PEN 1:PAPER 0 140 INK 0,1:INK 1,24 150 PRINT "BASIC 1.1":PRINT 160 NEWA seguir grave-o em cassete e digite o programa de BASIC (listagem 5), gerador do programa binário EMULADOR.BIN. Como podem comprovar, este é constituido principalmente por linhas de DATA, nas quais, dada a sua dimensão, introduzimos controlos de erros a três níveis. Isto para evitar possíveis erros na introdução. Em primeiro lugar o carregador verifica cada um dos dois caracteres que forma um byte para se assegurar que não se introduziu nenhum caracter não-hexadecimal (letra O em lugar do número zero, letra I em lugar do número 1, etc.).Por outro lado, realiza-se uma soma de controlos por blocos, para além doutra soma de controlo por cada linha. É, no entanto, muito importante, para maior segurança, gravar o programa em cassete antes de o executar. Esta listagem 5 gera, como já dissemos, um programa em código máquina chamado EMULADOR.BIN, o qual (no caso de utilizarmos a cassete) deverá ficar situado na mesma fita que a listagem 1, e mesmo atrás desta. Como podem ver o programa é bastante curto, uma vez que só ocupa um bloco na fita da cassete e torna-se assim muito fácil carregá-lo. Os novos comandos não foram implementados como RSX, mas sim como comandos e funções “verdadeiras”. Portanto não precisamos de escrever antes dos nomes a barra vertical “|”. Excepto num caso em que se tornou inevitável, utilizámos os mesmos TOKEN que utilizam os AMSTRAD CPC 664/6128, pelo que qualquer programa criado num 464 com este BASIC melhorado poderá ser transferido sem grandes problemas para um 664/6128. No geral, os programas gravados em formato ASCII funcionarão sempre bem, embora em algumas ocasiões possa ser necessária uma pequena adaptação. Falaremos melhor deste assunto um pouco mais à frente. De seguida vamos explicar a sintaxe dos novos comandos, ou dos que nesta versão passam a sofrer alguma variação. CLEARINPUT A missão deste comando é a de esvaziar o buffer do teclado, evitando que os caracteres que pudéssemos ter digitado anteriormente possam aparecer em posteriores comandos INPUT ou INKEY$. Se carregarmos normalmente num CPC 464 um programa criado num 664/ 6128 que não tenha sido gravado em formato ASCII, este comando provocará o aparecimento da mensagem de erro SINTAX ERROR. Como de costume, a seguir à mensagem de erro, o computador põe-nos automaticamente no modo de edição da linha correspondente. Neste caso prima simplesmente [Enter] para deixar a linha sem mudanças e execute de novo o programa - o emulador preocupar-se-á com a correcção. Se um programa criado no 464 com o emulador utiliza este comando e deve funcionar num CPC 664/6128, será necessário gravá-lo, de qualquer maneira, em formato ASCII (SAVE “nome”,A). COPYCHR$( # Janela) Esta função devolve o caracter lido a partir do ecrã, na posição actual do cursor de texto, najanela indicada. Por exemplo: 10 LOCATE 10,10:PRINT"X" 20 LOCATE 10,10:A$=COPYCHR$(#0) 30 LOCATE 20,10:PRINT A$CURSOR interruptor 1, interruptor 2Com este comando podemos activar ou desactivar o cursor durante a execução de um programa. O efeito exacto de ambos os interruptores pode ser visto na tabela seguinte: PRINT e INKEY$ INPUT CORSOR 0,0 : desactivado desactivado CORSOR 0,1 : desactivado activado CURSOR 1,0 : activado desactivado CURSOR 1,1 : activado activadoDEC$ (expressão numérica, cadeia de formato)Na realidade, esta função já existe no CPC 464. Contudo, não aparece no manual uma vez que, devido a um erro no interpretador de BASIC, têm de se usarsempre dois parêntesis abertos ao princípio para evitar um erro de sintaxe. Apesar disso, tudo funciona perfeitamente com o emulador. A cadeia de formato é uma cadeia de caracteres semelhante à utilizada em PRINT USING e a expressão numérica fica convertida numa cadeia de caracteres com o formato indicado. FILL cor A versão 664/6128 da instrução FILL apresenta um pequeno problema: como limite para o preenchimento de cor só considera a “caneta” (PEN) gráfica actual ou a cor com que quisermos preencher área. O preenchimento começa sempre na posição actual do cursor gráfico, o qual deve ser situado previamente com o comando MOVE x,y dentro da superficie a preencher. FRAME Esta instrução sincroniza a imagem do ecrã com o retorno do traço do tubo de raios catódicos, o que nos permite melhorar o movimento das imagens. GRAPHICS PAPER cor Determina a cor de fundo, tanto em modo gráfico como ao imprimir caracteres na posição do cursor gráfico utilizando a instrução TAG. Também estabelece a cor de fundo quando usamos a instrução MASK. GRAPHICS PEN cor,fundo Selecciona a cor para escrever e o modo gráfico do fundo. O segundo parâmetro tem este significado: Quase sempre podemos omitir um dos parâmetros quando não queremos mudar o seu valor. O efeito no 464, que não possui o modo transparente, fica demonstrado com este exemplo: 10 MODE 1:TAG:GRAPHICS PAPER 2 20 GRAPHICS PEN 1,0 30 MOVE 100,100:PRINT"A"; 40 GRAPHICS PEN 3,1 50 MOVE 108,108:PRINT"Z";MASK máscara de bitUma máscara de bit é um valor numérico entre 0 e 255 que determina oito pontos consecutivos quando desenhamos uma linha. Com este comando podemos criar à nossa vontade linhas constituidas portraços e pontos. Os espaços ficarão preenchidos com a cor que tiver sido determinada pelo GRAPHICS PAPER, a menos que tenhamos seleccionado o modo transparente - neste caso os espaços ficarão com a cor com que estavam antes. 10 MODE 1:MASK &X11110000 20 GRAPHICS PAPER 3 30 GRAPHICS PEN 1,0 40 DRAW 0,200 50 GRAPHICS PEN ,1 60 DRAW 200,200ON BREAK CONTEste comando tem de ser aplicado com cuidado, já que evita que possamos interromperoprograma. Um ON BREAK STOP anula o efeito de ON BREAK CONT. PEN # janela, cor, fundo Funciona da mesma maneira que no CPC 464 se bem que, através do último parâmetro, possamos seleccionar o modo de fundo para o texto (0: normal, 1:transparente). Novamente, podemos omitiros dois últimos valores ou apenas um deles, como, por exemplo, em PEN # 1,,0. MERGE e CHAIN MERGE “nome” Estes comandos trabalham agora sem problemas com a unidade de disquetes.Atal mensagem indesejável “EOF met” é agora interceptada pelo emulador. Transmissão de parâmetros em CALL eRSX Com o emulador podemos passar directamente cadeias de caracteres à instrução CALL e a qualquer comando residente (RSX), como porexemplo em |ERA, "PROGRAMA.BAK"Parâmetros gráficos suplementaresTodos so comandos gráficos ficam ampliados do seguinte modo: COMANDO x,y,cor,modo Isto aplica-se aos comandos MOVE, MOVER, PLOT, PLOTR, DRAW, DRAWR. Este último parâmetro determina como se inter-relacionam os pontos impressos com o fundo, seguindo uma das seguintes funções lógicas: PARÂMETRO FUNÇÀO0 Sobreescrita normal 1 Modo XOR 2 Modo AND 3 Modo ORA função lógica correspondente opera com o número da cor utilizada pela instrução PEN e com a do fundo. Conclusões Como já tinhamos mencionado quando falámos do CLEAR INPUT, não podemos conseguir uma compatibilidade completa entre os distintos modelos de CPC, já que algumas das diferenças estão profundamente gravadas na ROM. Não encontrámos nenhuma possibilidade para instalar a função DERR. 0 emulador aceita-a mas só devolve o valorzero. Se algum dos nossos leitores descobrir a solução, diga-nos qualquer coisa: precisamos de uma rotina que devolva o número de erro no acumulador. O CPC 664/6128 permite, no comando MASK, ainda mais um parâmetro, que determina se junto ao desenho das linhas tem que se imprimir, ou não, o primeiro ponto, o que se pode tornar muito útil no modo XOR. O emulador aceita o parâmetro adicional sem produzir um erro mas não executa a sua função, já que o esforço de programação que seria necessário é desproporcionado com o resultado que se obteria. Não pudémos instalar os vectores adicionais do sistema (por exemplo, GRA FILL) do 664/6128 uma vez que nessa zona da memória estão os vectores aritméticos do CPC 464. Portanto, não se pode garantir uma total compatibilidade com a totalidade das máquinas da série CPC. O programador de 664/6128 que espera a ajuda do emulador nos problemas de compatibilidade e que queira instalar as rotinas de assembler no seu programa deve ter em conta os seguintes factores: - O emulador ocupa a zona de memória a apartir de &A200.
- As indicações dos endereços iniciais de GRA LINE e SCR WRITE foram redirigidas até novas rotinas.
- Os vectores TXT SET PEN (&BB90), GRA SET PEN (&BBDE), GRA MOVE ABSOLUTE (&BBC0) e GRA MOVE RELATIVE (&BBC3) foram modificados para realizar a transmissão do novo parâmetro. Apesar de tudo, podem ser utilizados como de costume, sempre que quando os chamarmos a ROM superior esteja desactivada.
Esperamos que este programa seja útil para os leitores que possuem um CPC 464 e lhes possa poupar problemas quando tiverem que digitar programas, evitando-lhes a desilusão por que passam quando verificam que estes não são “compatíveis”. Amstrad Magazine ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop Page créée en 124 millisecondes et consultée 1065 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|
|