APPLICATIONSDIVERS ★ OANO NOVO, BASIC NOVO ★

Um emulador 664/6128 para o Amstrad CPC 464|Amstrad Magazine)Applications Divers
 ★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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 NEW

A 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 2

Com 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   activado

DEC$ (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 bit

Uma 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,200

ON BREAK CONT

Este 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 suplementares

Todos 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ÇÀO

0 Sobreescrita normal
1 Modo    XOR
2 Modo    AND
3 Modo    OR

A 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:

  1. O emulador ocupa a zona de memória a apartir de &A200.
  2. As indicações dos endereços iniciais de GRA LINE e SCR WRITE foram redirigidas até novas rotinas.
  3. 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

★ PUBLISHER: Amstrad Magazine (Publinfor)
★ LICENCE: LISTING
★ ANNÉE: 1989
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ AUTEUR(S): ???

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
  » Emulador    (Amstrad  Magazine)    LISTING    PORTUGUESEDATE: 2018-09-04
DL: 1 fois
TYPE: PDF
SIZE: 542Ko
NOTE: 2 pages/PDFlib v1.6

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Xen Plus (Popular Computing Weekly)
» Applications » Disctape (CPC Amstrad International)
» Applications » Typewriter (Amstrad Computer User)
» Applications » RSX - Amsprites
» Applications » Windows
» Applications » Multi Programa (Amstrad Magazine)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.75-desktop/cache
Page créée en 131 millisecondes et consultée 31 fois

L'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.