APPLICATIONSDIVERS ★ MULTI PROGRAMA ★

Multi Programa (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 ★ 

OS micro-computadores AMSTRAD gerem a memória RAM disponível com base numa técnica de “paginação de memória”. Isto quer dizer que parte dos endereços de memória que o CPU pode descodificar estão distribuídos por diversos "bancos”, que por sua vez são activados segundo as necessidades da máquina. No CPC 464 os primeiros 16 K estão repartidos por um bloco de RAM e outro de ROM, da mesma maneira que os últimos dezasseis. No 464 com unidade de disquete, e no 664, os últimos 16K podem também activar o segundo bloco de ROM, que contém o Sistema Operativo. No 6128 existem ainda quatro blocos de 16K de RAM que podem repartir os endereços do segundo bloco de 16K da memória principal.

A vantagem de utilizar esta técnica é a de, com um CPU que só gere directamente 64K de endereços, se poder dispor de mais de 64K de memória RAM.

No caso dos micros AMSTRAD isto traduz-se pela disponibilidade de cerca de 43K de RAM para programas. Uma grande capacidade de memória que se desperdiça em muitas ocasiões, já que são poucos os programas que fazem o uso total dela.

Por este motivo decidimos publicar um utilitário a que chamámos de “Multi-Programa”, já que a sua função principal é essa: permitir que coexistam simultâ-neamente na memória do nosso AMSTRAD vários programas BASIC, e possibilitar que se passe de um a outro sem que se apague aquele que estivé-mos a utilizar. Contudo, temos que dizer que não é possível passar de um programa a outro durante a sua execução (o que faria com que o nosso micro pudesse funcionar em multi-tarefa como um computador de maior porte), devendo sempre fazer-se a transição com o "programa parado”.

O número de programas que podem conviver na memória depende da extensão de cada um deles. Por outro lado é preciso ter cuidado para não sobre-escrever um programa com outro (tipo sobreposição na memória). Para isto devemos consultar qual é o endereço mais baixo utilizável, através do comando BUSCA.MINIMO.

Para compreenderem melhor a possível utilidade disto tudo e para verem como se carregam os programas na memória, vamos dar-lhes um exemplo.

Suponhamos que já carregaram a listagem 1, um carregador em BASIC, e que este funciona sem problemas.

Suponhamos também que este já está gravado em disquete ou cassete. Se o executarem com RUN, aparecerá uma mensagem indicando que já estão activados os comandos residentes. Se escrevermos IMP.COMECADO o computador responderá &016F, que é o endereço em que normalmente comeca o BASIC.

É o momento de carregar um programa em memória. Este pode ser, por exemplo, um monitor, que nos permita inspecçionar os códigos dos programas que serão carregados, para ver como se armazena em memória uma linha BASIC.

Uma vez carregado o programa escrevemos

a%=0:|BUSCA.FINAL, a%:PRINT a%

e o computador dir-nos-á em que endereço termina o programa que acabámos de carregar. Não obstante as variáveis são armazenadas acima desse endereço.

Se agora escreverem |BUSCA.MINIMO, a%:PRINT a%, saberemos qual é o endereço mais baixo em que poderemos carregar o segundo programa. Contudo, este endereço é válido se não formos executar o primeiro programa. Se o executarmos, as variáveis que ele utilizar ocuparão o espaço imediatamente atrás dele, pelo que o valor minimo terá de mudar. Experimentem executá-lo e pará-lo, pedindo outra vez o endereço minimo.

Para carregar um segundo programa deveremos primeiro mudar o endereço do começo, para um valor maior que MINIMO Por exemplo se BUSCA.MINIMO devolveu o valor 3406 podemos introduzir

FIXA.COMECADO,3500.

Se agora introduzirmos IMP.COMECADO teremos o resultado de 3500. E se lhe pedirmos uma listagem não acontece nada. Já podemos carregar o segundo programa.

Uma vez carregado o segundo programa podemos voltar ao primeiro digitando

FIXA.COMECADO,&16F

Para comprovar que estamos na área do primeiro programa podemos, por exemplo, pedir uma listagem.

Convém notar que, ao mudarmos de um programa para outro, as variáveis se perdem (ou seja, o primeiro programa não pode utilizar as variáveis do segundo e vice-versa), já que cada um utiliza a sua própria área de variáveis.

O BASIC dos AMSTRAD marca o final do programa mediante a colocação do valor zero em dois endereços consecutivos. Portanto, o método utilizado pelo nosso utilitário para averiguar onde termina o programa (comando BUSCA.FINAL) consiste simplesmente em procurar os dois zeros consecutivos. No entanto, para evitar que os dados sejam acidentalmente interpretados como linhas de programa, sem o serem, verifica-se em cada linha que a sua extensão não ultrapassa 255. Se aparece uma linha com mais de 255 bytes, executa-se o comando APAGA.PROGRAMA para eliminar esses dados, já que evidentemente são falsos.

Os comandos RSX de que dispomos são os seguintes:

|IMP.COMECADO Imprime o endereço inicial do programa.

BUSCA.COMECADO, variável%: Semelhante ao anterior, mas em lugar de imprimir o endereço, coloca-o na variável inidicada. A esta variável deve ter sido atribuído previamente algum valor, porque senão a função variáveP/o produzirá um erro.

FIXA.COMECADO,inteiro:

Fixa 9 endereço inicial de um programa. É a instrução que se deve utilizar antes de se carregar um programa, e antes de nos mover-mos de um programa para outro. Torna-se importante não confiar na nossa memória e anotar os endereços em que carregamos os programas ou então, se a dimensão deles o permitir, utilizar endereços "arredondados" (por exemplo, %1000, &3000, &5000, &5000, &7000, etc).

BUSCA.FINAL, variável%:

Introduz na variável definida o valor do último endereço utilizado pelo programa que estamos a considerar. A seguir a este endereço armazenam-se as variáveis desse mesmo programa.

BUSCA.MINIMO variável%:

Introduz na variável definida o primeiro endereço utilizável por um novo programa, por detrás da zona de variáveis do programa que estamos a considerar.

APAGA.PROGRAMA:

Apaga o programa que estamos a considerar, sem afectar os outros. Se for utilizada a instrução NEW do BASIC todos os programas serão apagados.

O utilitário “Multi-Programa", tal como se apresenta, é totalmente compatível com os 464, 664 e 6128, já que ao principio (ao mesmo tempo que ini-cializa os comandos residentes) averigua em que versão de BASIC se está a trabalhar (1.0 para o 464 e 1.1 d para o 664 e 6128). A adaptação é então automática.

O endereço de carregamento do código máquina é &A000. Se quisermos colocar o programa num outro endereço será necessário utilizar a listagem 2 com um assemblador mudando o valor de origem (ORG), já que o programa contém endereços absolutos e por isso não é relocalizável.

Amstrad Magazine

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

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» RSX-Multi  Programa    (Amstrad  Magazine)    LISTING    PORTUGUESEDATE: 2018-09-03
DL: 233
TYPE: PDF
SiZE: 261Ko
NOTE: 2 pages/PDFlib v1.6

» RSX-Multi  Programa    LISTING    PORTUGUESEDATE: 2018-09-03
DL: 146
TYPE: PDF
SiZE: 261Ko
NOTE: 2 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX Mixmode (Happy Computer)
» Applications » RSX GEM (Amstrad Personal)
» Applications » RSX Professional
» Applications » Screencopy (CPC Amstrad International)
» Applications » Trace (CPC Amstrad International)
» Applications » RSX Circle (CPC Magazin)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 645 millisecondes et consultée 950 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.