APPLICATIONSCREATION GRAPHIQUE ★ RSX CONTROLADORES DE MODO 3 (AMSTRAD USER) ★

RSX Controladores de Modo 3 (Amstrad User)Applications Creation Graphique
★ 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 ★ 

Sí, es un hecho muy poco conocido que su AMSTRAD es capaz de utilizar otro modo de pantalla. Para nuestra conveniencia, le llamaremos «Modo 3».

La diferencia con los otros modos estriba en que puede tener datos en la pantalla sin verlos, y que sin embargo están ahí. «¿Para qué sirve eso?», les oigo preguntar. Bueno, desde luego que no puedo oírles pero apostaría que alguno lo pensó, aunque no lo dijera en voz alta.


Esto es más útil de lo que podría usted imaginar Supongamos que ha escrito un programa que requiere instrucciones muy complejas pero no quiere que estén en la pantalla y no quiere tener que reimprimirlas en la pantalla cuando las necesite. Bien, puede tenerlas escondidas, pero todavía en la pantalla, y hacerlas visibles cuando sea necesario, volviéndose invisible lo que estaba en la pantalla durante el proceso. Usted lee sus instrucciones y las intercambia de nuevo. Lo que tenemos es, en efecto, dos pantallas en una. A una la llamaremos pantalla «Frontal» y a la otra pantalla «Posterior». Juegos como el Diseñador de Antitanques utilizan este modo. Todo el trabajo de borrar y redibujar el escenario se realiza en la pantalla posterior, donde usted no puede verlo, y es devuelto a la pantalla frontal cuando está listo, mientras el borrado y redibujado continúa en lo que ahora es la nueva pantalla posterior.

Este modo tiene sus limitaciones. Sólo se pueden tener cuatro colores y los pixels son del mismo tamaño que en el modo O. Esto quiere decir que sólo dispondrá de veinte letras en cada línea. Sin embargo, resulta muy divertido usarlo.

Afortunadamente la mayoría de los comandos normales de impresión pueden utilizarse en ella, y algunas plumas escribirán en la pantalla posterior, otras en la frontal, algunas en ambas al mismo tiempo y otras, también en ambas, pero con colores diferentes en cada una.

Las plumas que escriben sólo en la pantalla frontal son las 1,2 y 3. Las plumas que escriben sólo en la pantalla posterior son las 0,4,8 y 12. La pluma 15 se ve igual en las dos, y las restantes 5,6,7,9,10,11,13 y14 escriben en ambas pantallas pero en colores diferentes cuando observamos la frontal de cuando observamos la posterior.

Si teclea y ejecuta el programa largo, esperamos que consiga el mensaje «Ready» y descubra que tiene unos cuantos nuevos comandos. Si encuentra un mensaje de error, éste le dirá qué línea ha de corregir para que las cosas funcionen. El programa se reserva cierta memoria y se sitúa a sí mismo por encima de HIMEM, no importa dónde esté situada esta variable. Si está utilizando este programa junto con el de caracteres multicolores, deberá cargar el programa MULTICOLOR y ejecutar poke 0,1 antes de ejecutar este otro.

Los nuevos comandos son:

|MODE le pondrá en el nuevo modo y borrará la pantalla igual que cualquier otro comando Mode.

|BACK. Cuando se utiliza el comando |MODE contemplará inicialmente la pantalla Frontal, y para ver la posterior debe usar el comando |BACK. Si ya se encuentra en la pantalla posterior, el comando será ignorado.

|FRONT. De forma semejante, después de un comando |BACK, para- volver a la pantalla frontal utilice el comando |FRONT. Nuevamente se ignorarán los siguientes comandos |FRONT hasta que se ejecute un comando |BACK.

|CLRBACK. Este comando le permite borrar la parte de la pantalla que no puede ver sin afectar a la que sí puede ver. Borrará lo que esté detrás de la pantalla y no la actual pantalla Posterior, sino la que en ese momento se encuentre oculta.

|CLRFRONT. Obviamente, este comando borrará la pantalla que estamos viendo, que no tiene por qué ser la pantalla Frontal. Puede hacer esto fácilmente:

|BACK: |CLRFRONT: |FRONT De este modo hace visible la pantalla Posterior, la borra y la vuelve a hacer invisible.

Aún nos queda un último comando:

|PRINT. Como hemos dicho, en la mayoría de los casos se pueden utilizar las rutinas normales de impresión, pero no cuando se desea imprimir algo en la pantalla frontal que esté encima de algo que sólo es visible en la Posterior. Por ejemplo, si escribió:

PEN 4: LOCATE 10,1():?"HOLA"

para imprimir en la pantalla Posterior, y también:

PEN 1 :LOCATE 10,10:?"ADIOS"

que aparecería en la pantalla Frontal. Cuando ejecute un comando |BACK no encontrará nada en la pantalla posterior, que es la que está observando ahora. Este comando le permitirá hacer esto.

El comando |PRINT intenta hacer lo mismo que el PRINT normal pero sin sobreescribir lo que tiene debajo. Más tarde explicaré cómo lo hace. Para usarlo, simplemente ponga lo que quiere imprimir en una variable de cadena y ejecute la rutina. Por ejemplo:

LET a$="HOLA":PEN ALOCATE 10,10: |PRINT,a$

y también:

LET c$="ADIOS":PEN 1: LOCATE 10,10: |PRINT,c$

Puede utilizar cualquier variable para poner el texto en ella, pero si usa una que esté vacía obtendrá un mensaje de error. Ahora si escribe sus comandos |BACK y |FRONT encontrará el texto intacto en ambas pantallas. Esto sólo funcionará, sin embargo, si utiliza las plumas que sólo escriben en una pantalla o en la otra, pero no en ambas.

Para borrar sólo una parte de la pantalla y no toda, puede usar el método habitual de imprimir espacios donde lo necesite. Desde luego, de esta forma borrará en ambas pantallas a la vez. Si sólo quiere borrar en una de las pantallas, simplemente reescriba las mismas letras sobre las que quiera borrar en esa pantalla, bien sea la frontal o la posterior.

Recapacitemos y clarifiquemos todo este tráfico de Frontales y Posteriores. Tenemos dos pantallas, una de ellas visible, a la que llamamos frontal, con «f» minúscula, y la otra invisible, a la que llamamos posterior, con «p» minúscula. Puede intercambiarlas con los comandos |FRONT y |BACK, de modo que a la primera que vemos después de un comando |MODE la llamaremos Frontal, con «F» mayúscula, y similarmente a la otra la llamaremos Posterior, con «P» mayúscula. Aparte de estos comandos, toda la impresión y borrado se efectúa en la pantalla visible frontal o posterior, que puede ser visible o no en el momento de ejecutar el comando.

A continuación haré todo lo posible para explicar cómo trabaja este modo. Un byte está compuesto por ocho bits, y en el modo 0 cuatro de estos bits se utilizan para la información de color del pixel izquierdo y cuatro para el derecho, por ejemplo:

Un byte = 11111111 Estos son los bits para el pixel izquierdo:

Izquierdo = 10101010 Estos son los bits para el pixel derecho:

Derecho = 01010101 Con Cuatro bits se pueden obtener 24 = 16 colores para cada pixel, que es exactamente lo que tenemos en modo 0.

En el Modo 3 la distribución es diferente.

Estos son los bits para el pixel izquierdo posterior:

Izquierdo posterior = 00000011

Estos son los bits para el pixel izquierdo frontal:

Izquierdo frontal = 00001100 Estos son los bits para el pixel derecho posterior:

Derecho posterior = 00110000 Estos son los bits para el pixel derecho frontal:

Derecho frontal = 11000000 Si numeramos los bits de este modo:

Número de bit 7,6,5,4,3,2,1,0 Byte 1,1,1,1,1,1,1,1

puede ver que aunque los bits 7,6,5 y 4 sean 1, sólo dos de ellos, 7 y 6, influirán en la pantalla frontal y los bits 5 y 4 lo harán en la posterior. A esto se debe que tengamos sólo cuatro colores ya que, en cada pantalla, un pixel sólo tiene 22 = 4 números diferentes.

Por ello, al imprimir texto en una pantalla se borra el texto de la otra si se utilizan los métodos normales. Estos usan los cuatros bits para cada pixel aunque sólo dos sean 1, y borran los otros dos. IPRINT, sin embargo, realiza una operación XOR con el texto, de modo que si sólo dos bits están a uno en la pantalla posterior y ponemos texto en la pantalla frontal, se combinan y permanecen intactos. La regla de XOR es, como estoy seguro de que ya sabréis:

      1100        1111
XOR 0011 XOR 0011
      1111        1100

Como puede ver, en la primera suma los bits se combinan, y si trata de nuevo de hacer XOR con el segundo número obtiene el número con el que empezó. A esto se debe que utilizando el comando |PRINT dos veces con el mismo texto lo borre. Desde luego, si utiliza |PRINT con algo que aparezca en las dos pantallas a la vez, como puede ser la pluma 15, puede terminar destrozándolo todo, o puede encontrarse con que borra el texto de una pantalla, pero permanece en la otra.

Amstrad User #6

★ PUBLISHER: Amstrad User
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR(S): ???
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Controladores  de  Modo  3    (Amstrad  User)    SPANISH    LISTINGDATE: 2022-03-05
DL: 116
TYPE: PDF
SiZE: 348Ko
NOTE: 1 page/PDFlib v1.6

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

Lien(s):
» Applications » Quickplan (CPC Amstrad International)
» Applications » The Planter's Guide (Popular Computing Weekly)
» Applications » Multiplan
» Applications » Planets Ecliptic Position (Computing With The Amstrad)
» Applications » Personal Tax Planner
» Applications » Amsplan
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 241 millisecondes et consultée 517 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.