Professional Documents
Culture Documents
Microhobby-Es Especial6
Microhobby-Es Especial6
;jü/ u tijE
y .1 *\v&Ig t y
M OVIM IENTO Y
Vá
TECLADO^ >t r \
afusMís 3Lijj&f
’Ju y Ju unanación da figura
TECNICAS DE MAPEADO
(/U ÜÜjJJJ/UJf
DETECCIÓN i
1DE CHOQU ES
amrifa cu/nuran
DISPONIBLE EN
Spectrum
Com m odore
A m strad
A m strad D isk
i \s
4
V *
__ 9)
z a fir o so ftw ar e DIVISION Paseo ae la Castellana 141 28046 M a aria
Tel 459 50 04 Tel Barna 209 55 65 Tele* 22690 ZAFIR (
POCO RUIDO, MUCHAS NUECES
Director Editorial
José I Gómez-Centurión
Director
Gabriel Nieto
Director de Microhobby
Domingo Gómez
Diseño
José Mana Oreia.
Redactores
Cristina Fernández.
Pedro Pérez
Secretaría Redacción
Carmen Santamaría
Colaboradores
Pablo Ariza. Ralael Márquez.
Enrique López. David López
Fotograba
Carlos Candel.
Chema Sacristán
Dibujos
F L Frontán. J. Igual.
M López Moreno. A Luis González Romero
Vital Gana. José Manuel Barco
Edita
HOBBY PRESS. SA
CONTROL DE SPRITES. Por fin uno
potente ru tin a que mueve g r á fi
Presidente
María Andrino
cos, crea anim ación y te pe rm ite
desplazar p o r p a n ta lla s im u ltá
Consejero Delegado
José I Gómez-Centurión
neamente distintos tipos de fig u
ras.
Jefe de Publicidad
Mar Lumbreras
Publicidad Barcelona
José Galán Cortés
Tels 303 10 22 -3 1 3 7176
Fotomecánica
Grof
C/ Ezequiei Solana. 16
Depósito Legal:
M-36.598-1984 TÉCNICAS DE MAPEADO. Crear los
mapas y decorados de tus juegos
Representante para Argentina.
Chile. Uruguay y Paraguay. Cía será a p a r tir de ahora una ta re a
Americana de ediciones. S R L casi ru tin a ria .
Sud América 1 532 Tel 21 24 64
1209 BUENOS AIRES (Argentina)
MICROHOBBY no se hace
necesariamente solidaria de las
opiniones vertidas por sus
colaboradores en los artículos
firmados Reservados todos los GUÍA DE UTILIDADES GRÁFICAS.
___________derechos___________ Una com pleta guía de h e rra
Solicitado control m ientas de p rogram ación para
OJD
tr a b a ja r con los g rá fico s del
Spectrum.
M ICRO H O BBY E SP EC IA L
TODO
SOBRE LOS
Los UDG o gráficos
definidos por el
usario, son unos
caracteres similares a
los del alfabeto al
conectar el
ordenador. Gracias a
unas pequeñas
operaciones podemos
llegar a crear
cualquier carácter o
gráfico que nos sea
de utilidad. Para
i NT
conocer esta
interesante
posibilidad de
nuestro ordenador, os
lizar PRINT USR " A " , obte
explicamos con niendo distintas cantidades
ejemplos cómo se ya sea nuestro Spectrum de
realiza paso a paso. un 16 ó 48 k. También es im
portante que podemos po-
kear utilizando esta misma
fórmula, por lo que para in
CÓMO SE CREA UN UDG primer cuadro de arriba a troducir nuestro gráfico, uti
ia izquierda. Apuntaremos lizaremos POKE USR " A " ,
Un carácter del ordena un 1 cuando el cuadro en y después de la coma con el
dor es una cuadrícula de cuestión este pintado y con comando BIN colocaremos
ocho por ocho pixels o pun un 0 cuando el cuadro esté los ocho números que he
tos. Para diseñar el gráfico en blanco, siguiendo cua mos apuntado en la prime
necesitamos unas cuadrícu dro a cuadro hasta acabar ra línea; quedará de la for
las como la que se muestra la línea. Cuando hayamos ma que sigue POKE USR
en la figura 1. completado la línea empe " A ” ,BIN 0011100. Así he
Sobre esta cuadrícula zaremos una nueva serie de mos procedido a introducir
procederemos a rellenar los números con la siguiente y el primer dato del carácter,
cuadros con un lápiz hasta repetiremos la operación pero necesitamos introducir
obtener la forma deseada. hasta completar las ocho lí el resto; por eso tenemos
En la figura 2 hemos crea neas. Como se muestra en que sumar después de las
do una figura que simula un el ejemplo 1, los números 1 comillas de la A y antes de
pequeño muñeco. forman el gráfico que he la coma, un 1 (POKE USR
Cuando el gráfico esté mos creado. "A "+ 1 ,B IN 00111000), y
terminado, podemos intro Una vez realizada esta en el binario colocar los da
ducirlo en el ordenador de operación y con los datos tos de la segunda línea y re
varias formas. La más sen que hemos apuntado, utili petir la operación sumando
cilla y aconsejable si se está zaremos el comando POKE luego 2, 3, 4, 5, 6 y 7 y las
empezando, es la utilización para introducir en memoria siguientes líneas; como po
de la función binaria de los distintos datos, teniendo déis observar en el listado 1.
nuestro ordenador. Para en cuenta lo siguiente; pa Esta fórmula es sencilla
ello en un papel apuntare ra averiguar cuál es la di pero además de lenta, ocu
mos los datos de la siguien rección donde empieza un pa demasiada cantidad de
te forma, empezando por el UDG, lo más sencillo es uti memoria, por lo que existen ■ ■ ■ ■
otras fórmulas que realizan ciremos esta cantidad en la
la misma operación, como dirección 23676, luego con
podréis apreciar en el lista PRINT 6 0 0 0 0 —((INT
do 2. En él hemos sustituido 60000/256)*256) pokea-
los números en binario por remos el resultado en la di
sus homólogos en decimal; rección 23675 y cualquiera
en el listado 3, donde he de los métodos anterior
mos creado un bucle que mente explicados para in
realiza la lectura de los da troducir el gráfico.
tos, se introducen en su di Para evitar esta limitación
rección correspondiente. Es en su uso, una de las opcio
te último listado nos sirve nes por las que podemos
además para introducir optar es la de disponer va
cuantos gráficos deseemos rios bloques de UDG en la
de una manera muy sen memoria, y usuarios según
cilla, basta con sustituir el la conveniencia.
carácter segundo del
bucle FOR-NEXT, que
es una a por el carác MAS DE 21 UDG
ter del último gráfico
que vayamos a reali Además de los UDG, po
zar e incluir en DATAS demos definir los 92 carac
los datos correspon teres del ordenador, si
dientes al resto de grá guiendo las mismas pautas
ficos. que para los gráficos defini
Por último para utili dos y posicionarlos en una
zar dicho gráfico rea dirección determinada de la
lizamos las mismas ope memoria, y utilizando la va
raciones que con PRINT riable del sistema llamada
pero al introducirlo pon CHARS cuya dirección es la
dremos el cursor en mo 23606 y la 23607, usare
do gráfico y pulsaremos la mos la misma fórmula que
letra en la que hemos intro con los UDG pero con estas
ducido el gráfico, y que en dos direcciones. En el lista
el caso que estamos expli do 3 encontraremos un
cando es la A. ejemplo práctico de cómo
obtener un set de caracteres
alternativo; en este progra
CUÁNTOS GRÁFICOS ma se utiliza una fórmula
PODEMOS CREAR distinta a las anteriormente
explicadas, que consiste en
Es importante saber que que con ayuda de la función
los UDG, pueden ser posi- RANDOMIZE un número,
cionados en cualquier direc este número se descompone
ción de la memoria RAM, automáticamente en el byte
ya que en las variables del menos y más significativo, y
sistema se encuentran dos se archiva en la dirección
direcciones que a su vez 23670 y 23671 respectiva
contienen la dirección de mente, por lo que luego só
memoria donde se encuen lo nos queda actualizar la
variable del sistema CHARS,
+ 14 1 -,X.
tran los UDG. Esta variable
es la denominada la UDG, con el contenido de estas di
y su dirección es la 23675 y recciones. Es importante re
p wL £ la 23676. cordar a la hora de utilizar
l
4
I k
Cuando la dirección esté
decidida, por ejemplo la
un nuevo set de caracteres
que los primeros 256 bytes
6 0 0 0 0 , calcularemos las no se pueden emplear por
p X 0 cantidades que hay que po- lo que debemos restar a la
V. >■ 3■
- kear, para ello utilizaremos dirección donde hayamos
la siguiente fórmula, PRINT archivado los gráficos esta
INT 60000/256, e introdu cantidad. Es también impor-
tante recordar cuál es el con otro ya en pantalla; así
contenido de la variable si imprimimos en OVER 1 un
CHARS ya que si deseamos gráfico igual que esté será
volver a utilizarlo debere borrado.
mos teclear los siguientes Evitar que el gráfico par
pokes: POKE 23606,0 y padee se consigue colocan
POKE 23607,60. do una línea que detecte si
Los gráficos que obtene se ha pulsado una de las te
mos con el listado 3, son los clas correspondientes al mo
que se muestran en la figu vimiento, actuando como si
ra. de un filtro se tratase.
Con todas estas técnicas
con ayuda del comando
CÓMO UTILIZAR OVER conseguimos que lo
que anteriormente estaba
LOS UDG en la pantalla no se bo
PARA UN JUEGO rre totalmente. Con PLOT,
DRAW y CIRCLE, dibuja
Como habréis podido mos algo en pantalla y al
comprobar, no es nada com pasar por encima de las lí
plicado realizar un UDG. neas, el dibujo sólo se borra
Moverlo por la pantalla en cuando el gráfico está super
traña algo más de dificul puesto pero al desplazarlo
tad. En principio debemos el dibujo se restablece.
tener en cuenta algunas de
las características del Spec-
trum.
La pantalla está compues UTILIZACIÓN
ta por 32 columnas y 24 lí DE CÓDIGOS
neas, aunque no es fácil ASC CON PRINT
mover desde el Basic un
gráfico por las dos líneas in El uso de los códigos ASC
feriores de pantalla. Cual con PRINT nos ayuda a con
quier desplazamiento por seguir efectos difíciles como
pantalla de un gráfico pare los que vamos a explicaros
cerá que va dando saltos, a continuación.
ya que no existe una posi Por ejemplo, utilizando
ción intermedia donde im CHR $ 8, conseguimos que
primir el gráfico entre la co el puntero de pantalla, se
lumna 1 y la 2, o la línea 1 desplace hacia atrás una
y 2. Con los atributos ocu posición. Para obtener, por
rre lo mismo, por lo que lo ejemplo, el gráfico de una
normal desde el basic es mina en lugar de diseñarla
mover los gráficos sin atri podemos utilizar lo siguien
butos, dejando el color del te:
papel y la tinta como están. PRINT AT 1O ,1O ;"0";
Con el ejemplo 4, obtene OVERl;CHR $ 8 ;" X "
mos el gráfico de un muñe Existen teóricamente otros
co y con las teclas Q, A, O ASC, que realizan la opera
y P desplazaremos el mismo ción de cursor arriba, aba
por la pantalla. jo y a la derecha, pero por
Para actualizar el gráfico errores del sistema no fun
en la posición correspon cionan correctamente y al
diente es necesario, prime utilizarlos aparece en pan
ro, borrar la posición ante talla una interrogación al
rior, de cuya misión se en igual que ocurre con el de
carga la línea 80, borrando dicado al DELETE y EDIT,
el gráfico antes de actuali ASC 12 y 7 respectivamen
zar. Para ello usamos el co te.
mando OVER que imprime Los ASC al utilizarse des-
invirtiendo los pixels de ca
da carácter que coinciden
de el Código Máquina, de operaciones que realizan
sempeñan un papel igual son las siguientes:
que desde el Basic y los más AND sirve para compa 1
utilizados son los siguientes: rar variables desde el Basic, OR, al igual que el AND,
pero su utilización desde el en el Basic se dedica exclu
Código Máquina es mucho sivamente a los condiciona
ASC CARÁCTER más completa, ya que rea
6 PRINT coma les, pero en Código Máqui
liza la operación bit a bit, na realiza la operación ló
8 Cursor izquierda entre el parámetro S y el re
13 ENTER gica del operando y el con
gistro A, en el cual se alma tenido del registro A, utili
16 INK control cena el resultado. Para com
17 PAPER control zando las pautas que se
probar mejor su funciona muestran en la tabla de ver-
18 FLASH control miento observar la opera
19 BRIGHT control dad:
ción en la tabla de verdad
20 INVERSE control de la función AND: A OR S = A
21 OVER control 0 0 0
A AND S = A 0
22 AT control 1 1
23 TAB control
0 0 0 1 0 1
0 1 0 1 1 1
1 0 0
1 1 1
AND, OR y XOR XOR, desde el Basic tiene
un funcionamiento análogo OTROS COMANDOS
Los operadores lógicos al OVER 1, y en C/M, reali ÚTILES
son de gran utilidad al ma za la operación lógica entre PARA LOS GRÁFICOS
nejar gráficos, pero por el operando S y el conteni
desgracia desde el Basic só do ael registro A; la tabla de ATTR (x,y), esta función
lo es posible la utilización Verdad de la función XOR devuelve el valor de los atri
del AND y el OR para los queda así: butos de las coordenadas
condicionantes, y el XOR A XOR S = A de x e y de pantalla; es im
para utilizar en el OVER, las 0 0 0 prescindible que los valores
FIG. 3
ciftURA 2
l is t a d o 1
lililí* *
i 't - i r a H % 1 !
V.5V.^'f! i N 011®1100
L IS T A D O
E USR .. q " + 1 , 5
F \G V J R a
l is t a d o
-a ” TO
LISTADO 3a
9; LORD ' ^
E J |® ° 4I?EK 23670
P O ^^-S E T<
íiíiS e a F
p^ xnt ' chR*
® ® H i© 0 © NEXT 3
0 ® U Í0 0 0
de x e y estén cerrados en sexto bit nos expresa el es lizables los comprendidos una coordenada de la pan
tre paréntesis ya que sino tado del brillo, siguiendo las entre 0 y 5 ó 24 y 31. talla y el carácter que se en
produciremos un error de mismas pautas del flash; del PEEK n, con este coman cuentra en esta dirección. Al
sintaxis. Para utilizarlo pro uinto al tercero son los de- do podemos averiguar el realizar esta operación si el
bar a imprimir en pantalla icados al color del papel, contenido de una celdilla de resultado no es 0 no es que
con papel azul y tinta blan y del segundo al cero, el co memoria, siendo este núme no exista en esa posición un
ca un carácter (PRINT PA lor de la tinta. Es aconseja ro entre 0 y 65535. carácter, sino que no es re
PER 1; IN K 7;AT 10,10; ble utilizar la fórmula si POINT (x,y), si el resulta conocido como tal por el or
"R "), y después usando guiente para saber qué nú do de esta operación es 1, denador.
ATTR preguntar qué colores mero corresponde a un es es que ese pixel está activa USR $, muy útil a la hora
están en esas coordenadas tado de atributos. do de color de tinta, y si es de averiguar la dirección de
(PRINT ATTR(10,10)), el va N Ú M . TINTA-i- N Ú M . 0 no lo está. Este comando comienzo de cualquiera de
lor devuelto por el ordena PAPEL*8 + NÚM. BRILLO está limitado a la parte supe los caracteres definidos por
dor será el resultado del co *64+ NUM. FLASH*128 rior de la pantalla, siendo el usuario.
lor (15). Este número en bi CHR $n, introduciendo en imposible con su uso com BORDER n, sirve para dar
nario nos dará el dato de n un número entre 32 y 255, probar el estado de una color al borde siendo éste
color del papel y tinta, y el obtendremos cualquiera de coordenada dentro de la un número comprendido
estado del brillo y flash. El los caracteres ASCII del zona de pantalla destinada entre 0 y 7.
7 bit por la derecha es el Spectrum y si el número es a los mensajes. BRIGHT n, este comando
que indica el estado del el comprendido entre 6 y el SCREEN $ (x,y), del mis sólo puede ser utilizado ac
flash, siendo 0 para desac 23 son destinados al mane mo modo que podemos tivado (1) o desactivado
tivado y 1 para activado. El jo de pantalla, siendo inuti- averiguar cuál es el color de (0), consiguiendo en una y
CONTROL bytes
DATOS 50000 N .
linea D ü MP*-
y i g l l i ^ »
v 66
69 i^ Í 9 6 7 8 1 0 l® 0lli® T ? 2 ®
70
71
r \ír i
ÍO J ”
1 8 78
1366
X
4.56
154- USTADO •+7
684 USR
342^ FOR
a=USR
a
" | " aTb
1 0 68
R6RD b. P°KE ^
3 5 6.4 0.
« !5 t a «6 1 16 6,,2S
2 5 44.5 6 ' 5
i& NE*X
S
¿0 ORTO
r T R 5 6 , 5 6 l£ T y=10
’ 1 6
a <>
10850
55
60 E | 1 a*<>27 RÍ h e Ñ g0 v" • - (a
n f 0R ^ a4>^5Í r =u f RNÓ X <3l»
<21> (a =
-
. 750 .& ® 7 flN° : ■
I « m H í 11 ll® rn i u ^
,111 $ « « « . . 0,30 drRu
!l! lli» w g f ! ! ! % “ '" “
902® DR«U ®'
otra forma dar brillo a los INVERSE o, cootrola la io- 65535, coo ayuda de POKE mieoto desde el puotero de
atributos. versióo de caracteres que se tambiéo podemos realizar paotalla taotos oúmeros co
DATA 0, 11, 11, 0, todos los vao a imprimir. Eo caso de dibujos eo paotalla taoto de mo se iodiqueo eo x.
datas que aparezcao detrás utilizar coo 1 los caracteres gráficos como de atributos. la coma después de
de esta seoteocia, seráo leí se imprimeo eo vídeo ¡over PRINT, es el comaodo sio PRINT y sio estar eotrecomi-
dos como datos, al utilizar so, y si es 0 eo vídeo oor- lugar a dudas más utilizado llada realiza uoa tabulacióo
la fuocióo READ. mal. eo Basic; coo él podemos de 16 caracteres, desde el
FLASH o, su fuociooa- OVER o, realiza uo ioter hacer que aparezca eo pao- puotero.
mieoto es igual que el del cambio al estar activada es talla cualquier carácter y su el puoto y coma sir
brillo, pero realizaodo uo ta fuocióo, eotre los datos fuociooamieoto puede ser ve para iodicar al ordeoa-
iotercambio de atributos eo- que estabao eo paotalla y de distiotas maoeras. dor que todo lo que está
tre el papel y la tiota, coosi- los que posteriormeote seao AT x,y: si es utilizado coo uoido por ellas se imprime
guieodo así el efecto de par utilizados. AT, posiciooamos las coor- secjuidameote.
padeo. PAPER o, su fuociooa- deoadas doode vao a ser : la comilla iodica al or-
INK o, el color del atribu mieoto es completameote impresos eo paotalla uoo o deoador que debe saltar de
to de tiota es cootrolado por igual al del comaodo INK, varios caracferes. líoea para que lo que se ex
este comaodo permitieodo pero cootrolaodo el color TAB x: coo él sólo pode prese a cootiouacióo sea im
el uso de cualquiera de los de foodo. mos iodicar el desplaza- preso eo la líoea siguieote.
ocho colores del Spectrum POKE o, sirve para iotro-
además del color 8, para ducir valores compreodidos
traospareote y 9 para coo- eotre 0 y 255 eo las direc-
traste. ciooes desde la 16384 y
Sin duda, uno de ios
factores más
decisivos para que un
programa tenga éxito
£
sprite.
para los no inicia
dos, definiremos
qué es lo que en
tendemos por un
Llamaremos sprite a un
gráfico, animado o no, que
UDG o parpadean, el
conjunto desmerece
bastante. Para
solucionar el
problema
se mueve por la pantalla en
una dirección determinada. presentamos una
Este gráfico deberá pasar rutina que moverá y
por delante de lo que haya ’í g ' |
dibujado en pantalla sin bo
1 * dibujará los gráficos
rrarlo, y si se cruza con otro, mientras nuestro
uno de los dos pasará por programa se encarga
delante de otro. Por esto ca
da sprite tiene asignada una ae otras tareas.
prioridad, de tal forma que
al cruzarse dos sprites, pa
sará por delante aquél cu
ya prioridad sea mayor. Evi
dentemente, no puede ha
ber dos sprites con la misma
prioridad.
En otros ordenadores, co-
-v q x «6
EL PROGRAMA
Antes de profundizar más
en el funcionamiento de la
rutina, sería preferible te
clear ahora el programa
para ver los resultados y ■ ■ ■ ■
f Tr •' i
1 1
i i1 ' ;
• i f I
jt
ción aparece a la izquierda mos comprobar también có Para hacer vuestras pri que pensar que solamen
de la pantalla y se mueve mo el sprite toma el color de meras pruebas, podéis utili te la pantalla de memoria
hacia la derecha. papel que haya en la pan zar también el programa ocupa ya unos 7 K. Pero
El segundo ejemplo nos talla, lo que contribuye a Basic de demostración, con si todavía os parece mu
muestra una especie de re evitar un poco la mezcla de sólo cambiar los DATAs de cho, vamos a ver con de
loj con una aguja siempre colores que acabamos de algún ejemplo. Para ayuda tenimiento qué es lo que
quieta y la otra girando en mencionar. ros, tenéis en la figura 3 una hay a partir de esa direc
sentido horario. Como de- El quinto ejemplo mues tabla con las direcciones y ción.
beriáis haber supuesto, se tra, por una parte, un ejem demás datos de los gráficos
trata de animación cíclica. plo práctico del uso de tra usados para la demostra
Además, podéis comprobar yectorias preestablecidas ción, y en la figura 4 un re MAPA DE MEMORIA
cómo un sprite no necesita con una flecha que gira, y sumen de qué valores y en
estar siempre moviéndose, por otra parte un grupo de qué orden debéis poner en Si sólo pensáis usar la ru
puede estar en una posición cuatro flechas paradas de los DATAs. Advertencia im tina desde Basic y no tenéis
fija, poniendo los incremen las que dos tienen anima portante: al final de los da ningún interés en el Código
tos X e Y a 0. En este modo, ción cíclica y dos de tos de todos los ejemplos, es Máquina, no es necesario
podemos controlar directa adelante-atrás, para que se necesario añadir un cero a que leáis este apartado ni el
mente la posición del sprite, puedan apreciar bien las di los DATAs para que el pro siguiente, pues en innecesa
pokeando en los lugares ferencias entre una y otra. grama distinga entre los de rio lo que se dice en ellos
para poder utilizar los spri- cuatro tablas. La primera va tercera, después cargar 1
tes. Pero si sabéis Código de 63488 a 63999, la se con 47, que es el número
Máquina, continuad leyen Fig. 4 gunda de 64000 a 64511, que queremos girar, y la di
do y podréis sacar mucho la tercera de 64512 a rección formada contendrá
más provecho a la rutina. Valores a colocar en los 65023, y la cuarta de el resultado deseado. Como
En la figura 5 tenéis un es 65024 a 65535. Las cuatro al girar un byte, hay una
DATAS
se crean en el momento de parte que se sale, ésta se al
quema del mapa de memo en el programa Basic
ria. Lo primero que tene activar las interrupciones. macena en otra dirección,
— Dirección del primer Lo que hay en ellas es el re justo 256 bytes más arriba,
mos, entre las direcciones
53000 y 53288, es la tabla gráfico. sultado de girar cada uno así que basta con incremen
— Ancho en caracteres. de los 256 posibles números tar H para obtenerla. Si no
de sprites, ya explicada an
— Alto en pixels. que puede contener un os ha quedado demasiado
teriormente, y cuyo inicio
será denominado TASPRI a — Coordenada X. byte, 6 bits hacia la dere claro, posiblemente lo en
— Coordenada Y. cha, en la tabla cuarta, 4 en tendáis mejor cuando veáis
partir de ahora.
— Número de fases de la tercera, 2 en la segunda la subrutina que crea la ta
Lo siguiente, entre 53288
animación. y 0 en la primera. La utili bla. Como muchos de voso
y 53543, es otra tabla, — ln d ic a d o r:0 = a n im a - dad es que a la hora de di tros ya habréis adivinado, el
TABLDI, que no hemos ex ción cíclica, l=adelan- bujar un gráfico, no tendre que sólo haya cuatro tablas
plicado antes porque es de te/atrás. mos que utilizar instruccio quiere decir que el progra
uso interno de la rutina. En — lndicador:0= línea rec nes de rotación que hacen ma no trabaja realmente en
esta se almacenan una serie ta, 1= trayectoria com más lento el proceso, pues alta resolución en este sen
de datos de los sprites, pe pleja. tido horizontal, sino que el
to que ya tenemos el traba
ro solamente de los que se
— C o lo r jo hecho. Por ejemplo, si mínimo desplazamiento es
van a dibujar en pantalla
(tintan-64 x brillo). queremos girar el número de dos pixels. Esto no supo
(como hemos visto, puede
— Si línea recta: 47, 4 bits a la derecha (el ne un gran problema, pues
haber sprites fuera de ésta).
— Incremento X. número 47 puede formar la suavidad obtenida es más
En la figura 6 hay un resu
— Incremento Y. parte de un gráfico, ya que que suficiente. Sin embargo,
men de los 15 bytes de que para mayor comodidad se
— Si trayectoria comple sabemos que todos los grá
consta cada elemento. Los
ja: ficos, en el ordenador se re permite que se den las coor
dos primeros bytes indican
— Dirección de los ducen a números binarios, denadas como si el mínimo
la dirección en la pantalla
datos de la trayec con un equivalente deci desplazamiento fuera de
de memoria a la que va a ir
toria. mal), el proceso a efectuar dos pixels. La verdad es que
el gráfico. Los dos siguien
sería cargar el registro H este sistema del uso de ta
tes indican la dirección del
con 252, que es el número blas con los bytes desplaza
gráfico, y los otros dos, la dos no es de nueva crea
que corresponde a la tabla
de la máscara. El séptimo ción, ha sido utilizado en
byte indica el numero de
varios programas comercia
scans, o lo que es lo mismo,
les, entre los que cabe des
la altura en pixels. El octa
Fig. 5 tacar «Cyberun», cuyo rápi
vo byte indica el ancho en
M apa de memoria do scroll habría sido impo
caracteres. Tanto éste como
sible con métodos conven
el anterior no tienen por DirecciónEtiqueta Contenido cionales. Pero continúenlos
qué corresponder con los 53000 TASPRI Tabla de datos de los sprites con el contenido de la tabla
dados en la tabla de sprites, existentes. TADIBL. El undécimo byte
ya que éstos se refieren a las 53289 TABLDI Tabla de datos de los gráficos
indica los atributos del spri-
dimensiones del gráfico que que se van a dibujar.
te. El decimosegundo y el
se va a dibujar en pantalla, 53544 SPARES Espacio reservado para guardar
decimotercero indican la di
y si éste se encuentra en un los trozos de pantalla. rección en la pantalla de
lado o una esquina, la por 54568(7) ORIGSC Pantalla de memoria. memoria, donde van a ir los
ción de gráfico que se ve es 60904 ORIGAT Atributos de la pantalla de atributos del sprite. Por últi
menor que el gráfico ente memoria. mo, los bytes decimocuarto
ro. El noveno byte nos dice 61696 Tabla de interrupciones.
y decimoquinto indican el
cuántos caracteres de an 61953 INICIO Subrutina de inicialización y número de filas y el de co
cho quedan fuera de la activación. lumnas, respectivamente,
pantalla. Comprobaremos 62075 DESACT Subrutina de desactivación. que ocupa el g rá
su utilidad al estudiar el pro 62082 COMCHO Subrutina de comprobación de fico en la zona de atribu
grama. El décimo byte es el choque.
flamado byte de rotación. tos.
62194 ENTINT Subrutina principal de
Puede valer 248, 250, 252 interrupciones. Continuando con el mapa
ó 254, y es el byte alto de 63488 Tablas de rotaciones. de memoria, entre las direc
la dirección de comienzo de ciones 53544 y 54566, está
una tabla. Son, por tanto, el espacio denominado
1 6 ,0 , 2 0 0 - 1 '® '®
350 ORTO 48580. ' i 6 ( 2 S 5 j 25 S , 1 . 0
L£Ód>O
<0 _ TF D=0_’ í? Q P
» U Sl « r« - 36A' 3 ' I V 60 2 5 6 .1 '®
0 4®i 60 4 t ? ^ ® 0 ' 2 ' I V 0 0 ,1 2 4 .X .0 '
4 8 5 1 6 .2 .1 8 '
°£ci< 23670; C° p o k e R + § ' i x/256): • O A7l^®¿®.eUDI O ~7 _ _ * Pk0.1 /®
03í ®D I V " 03 •
•6PR f r e s dPOR fiiN
,0
"g ^ s e r s a ? ^ - let x.
■ - M • 1 9 8 • 1 ''
'| 4
8PT« * 881
D«Tfi * 8 S ^ '
1 6 ,0 , 1 6 , 8 , 1 , ® '
1 6 ,0 , 8 0 . 1 . ® '® '
9 M & -S E
1090 POK| 23728'2 rS6 <60
® 30® 4 l TR S
4 8 160 2 16 ® ' ® ' - 0 ' 0 ' 0
® 6 % 1¿ 0T° 4 7 3 0 0 ' 2 1 6 , - 6 6 , 3 8 , 8 . ® '
112® S R^NTi 0RTo5 é | r Í fe' i ^ ^ T 5 R ^
_ 1 "' R5NDRETURN , ord ""CODE 47
'8 ¿ ® 0 grfi 4851 . ' e ,0,
« r J i o5^ 3 ,: ' c ° s “ 619 '
033¿ V R 4 8 5 l 6 ' V 24 '® . 2 S S . ® '® '®
* a 0 6n
® 6 l0 1Ó0 TP 47 3 6 4 ,3 , '
,0 , 0 '
SPARES. Es una zona de tra memoria, cambiando el que para poder generalizar bujo, se necesita que esta
bajo donde se almacenarán EQU de la etiqueta SPARES al máximo la subrutina que columna adicional sea un
los trozos de pantalla que en el listado ensamblador. se encarga de dibujar los píxel más alta que el resto
van a ser borrados al dibu En la dirección 54568 se gráficos en esta pantalla, de la pantalla. Así que en
jar los sprites, para poder encuentra la pantalla de necesitamos un carácter realidad, la zona ocupada
restablecerlos después. La memoria. Como sabéis, la más de ancho, en el que se por la pantalla comienza en
cantidad de memoria nece pantalla del Spectrum tiene dibujarán restos de los spri 54567, pero la dirección
saria depende de los sprites 256 píxels de ancho (32 ca tes que, por estar a medias que se corresponde con el
que se vayan a utilizar y sus racteres) por 192 de alto, en la pantalla, no deben ser inicio de la pantalla real del
dimensiones. El valor que se así que ocupa 3 2x1 9 2 = dibujados enteros. De esta ordenador, es la 54568,
le ha dado es un valor pro = 6144 bytes (sin contar con manera, la pantalla de me que es la que tiene el nom
medio que será suficiente los atributos), así que, en moria ocupará 3 3 x1 9 2 = bre de ORIGSC.
para casi todos los casos. Si principio esto es lo que de = 6336 bytes. En realidad, A continuación de la pan
para vosotros resulta insufi bería ocupar la pantalla de ocupa un byte más, porque talla, se encuentran sus atri
ciente, podéis colocar esta memoria. Sin embargo, es también para generaliza butos, en la dirección 60904,
zona en otra parte de la to no es así. Lo que pasa es ción de la subrutina del di con la etiqueta ORIGAT. Al
igual que antes, necesitamos registro I estará entre 61696 el gráfico está en el primer hacemos es guardar todos
una columna más, con lo y 61951, y que el contenido píxel de un carácter y otra los registros que vamos a
que ocuparán 33 x 24 = 792 de cualquiera de estas di para el resto de los casos. El utilizar. A continuación, es
bytes. En este caso, no ne recciones y de las siguientes resultado quedaría menos tudiamos el contenido de la
cesitamos reservar especial será 242, con lo que siem elegante, sería más difícil de variable ESTADO. Si es 0,
mente otro byte antes de la pre se saltará a la dirección com prender y ocuparía deberemos volcar la panta
dirección 60904, pues nos 242 * 256 + 242 = 62194. prácticamente la misma me lla, y si es 1, hacer todo lo
sirve el último de la zona de Tras la tabla de interrup moria. demás. En este segundo ca
la pantalla, que será a la ciones tenemos, en 61953, so saltamos a NOVOLC. En
vez el último byte de la pan INICIO, la subrutina que el primero, llamamos a la
talla y el primero de los atri inicializa las interrupciones y subrutina que vuelca la pan
FUNCIONAMIENTO talla y hacemos que ESTA
butos. crea la pantalla de memo
ria y las tablas de rotacio El proceso que hay que DO valga 1 para la próxi
En la dirección 61696 se
nes. realizar para mover los spri- ma vez que se produzca
encuentra la tabla de inte una interrupción, para salir
rrupciones. Se ha dicho mu En 62075 está DESACT la tes por la pantalla es bas
subrutina que desactiva las tante complejo y lleva bas después por SALINT.
chas veces en esta y en otras En el caso de encontrar
revistas que en el modo 2 de interrupciones y vuelve al tante tiempo. Por ello, lo va
modo normal. mos a dividir en dos partes, nos en la segunda parte,
interrupciones el micropro
En 62082 está la subruti de tal modo que una vez ponemos ESTADO a 0 pa
cesador toma el contenido
na COMCHO, de compro haremos una parte, y la si ra la próxima vez. Después
del registro I y el del bus de nos disponemos a borrar to
datos, que siempre es 255, bación de choque de spri- guiente vez haremos la otra
tes. En realidad no cabe en dos los sprites dibujados la
y forma una dirección, de la parte, y a la siguiente volve
tera aquí, pues se montaría remos a hacer la primera, y última vez. Para ello, toma
que se extrae la dirección
sobre la dirección donde así. Hacemos el volcado en mos el contenido de NUBL-
definitiva de la subrutina de
deben comenzar las inte pantalla de la pantalla de BO, que excede en uno al
interrupciones. Sin embar número buscado. Antes de
go, hay algunos periféricos rrupciones, por lo que par memoria, que es el proceso
te de ella se encuentra al fi más lento, y la segunda, ha entrar en el bucle que bo
ue, por no estar demasia-
nal de todo el bloque de la remos el resto, que se pue rrará todos los gráficos, ini-
o bien hechos, hacen que cializamos IX con TABLDI,
el contenido del bus de da rutina de interrupciones y de dividir en las siguientes
sus subrutinas. subetapas: tabla que tiene los datos de
tos en el momento de las in
— Borrar los sprites de los sprites que fueron dibu
terrupciones no sea 255. Es En 62194 se encuentra la
sus posiciones antiguas. jados y ahora queremos bo
to quiere decir que la direc subrutina principal de inte
— Calcular nueva posi rrar, y HL con SPARES, don
ción donde el microprocesa rrupciones, ¡unto con todas
ción de los sprites y el gráfi de están almacenados uno
dor buscará la dirección de sus subrutinas y variables
co que toque de los que detrás de otro los trozos de
las interrupciones, puede (excepto NUMSPR y SPRICH,
pantalla necesarios para
ser cualquiera cuyo byte al que se encuentran en varia compongan la animación
de cada uno. efectuar el borrado. Ahora,
to sea el contenido del regis bles del sistema no usadas).
— Hacer todos los cálcu si el contenido de NUBLBO
tro I. Para conseguir que Detrás, como ya hemos di
los necesarios para el dibu era 1, es que no habíamos
sea cual sea el valor del bus cho, continúa la subrutina
jo de los gráficos y su pos dibujado ningún gráfico la
datos, se lea la misma direc de comprobación de cho
terior borrado, almacenan última vez, y salimos del bu
ción para la subrutina de in que, que aunque no es muy
do los resultados en la tabla cle sin haber entrado en él.
terrupciones, no hay más larga, ha sido cortada en
remedio que elegir para la dos para aprovechar mejor TABLDI, a la vez que se al
subrutina una dirección cu la memoria, rellenando ios macenan los trozos de pan
yos byte alto y bajo sean huecos. talla que van a ser ocupa
¡guales, y llenar con el va Y lo último que hay en la dos por los sprites.
lor de estos, 257 bytes a memoria son las ya mencio — Dibujar los spri
partir de la dirección XX0 0, nadas tablas de rotaciones, tes que se en
siendo XX el contenido del que comienzan en 63488. A cuentren en
registro I. En nuestro caso, propósito de estas tablas, la pantalla.
para que la tabla de inte seguramente os habréis Ahora que
rrupciones esté en 61696, I preguntado qué sentido tie sabemos to
valdrá 61696/256 = 241, y ne almacenar un byte gira das las tareas
la subrutina de interrupcio do 0 veces (que es lo que a realizar, po
nes com enzará en hay en la primera tabla), demos comen
62194=F2F2h, así que la puesto que el resultado se zar a comentar
ta b la estará llena de rá el mismo. La respuesta es el listado de la
242 = F2h. Es fácil ver que bien sencilla. Si no incluyé rutina.
entonces, sea cual sea el ramos esa tabla, sería nece El punto de en
contenido del bus de datos, sario hacer dos subrutinas trada de ENTIT.
la dirección formada con el de dibujo, una para cuando Aquí, lo primero que
Ahora vamos, tomando de siendo n el dato en cuestión. 33 menos ese número, que mos metido en BORPOI +1.
la tabla los datos necesa Este sistema les resultará fa será lo que hay que sumar Como en B teníamos 0, en
rios. En DE cargamos la di miliar a los que hayan leído a la dirección destino de la BC tenemos el número de
rección en la pantalla de los artículos sobre cómo se pantalla, tras restaurar un bytes a renovar; en DE te
trabajo donde comenzará programa un juego, publi sean para lograr la direc nemos el destino, y el origen
el proceso. Ahora, en vez cados en los MICROHOBBY ción del siguiente. Por últi en HL, porque los trozos de
de cargar en registros, hay 97-106, y escritos por el mis mo, cargamos A con el nú pantalla que vamos a recu
unos datos que los vamos a mo autor. En BORPOI + 1 y mero de scans que debemos perar han sido anteriormen
meter en una dirección de en BORPOD-l-1 guardamos restaurar. En BORPOI, aun te guardados en SPARES,
memoria, de tal manera la cantidad de bytes de an que veamos un LD C,0 es así que tenemos los pará
que luego serán recogidos cho que hemos de restau tamos cargando C con el metros necesarios para ha
directamente por una ins rar. En AUMPOI + l y en ancho del bloque a restaurar, cer un LDIR. Ahora calcula
trucción del tipo LD C,n, AUM PO D+1, guardamos pues es el valor que había mos la dirección en panta-
■ H L
lia del siguiente sean, su los trozos de pantalla, ya alternativos guardamos en ces, a pesar de que iniciali-
mándole al contenido de DE podemos dibujar los sprites HL el origen de pantalla de cemos B con 25. La razón
tras el ld ir, el número cal en sus nuevas posiciones, trabajo, y en DE el de la es que, como veremos ense
culado antes y metido en llamando a DIBUJA, que se pantalla del ordenador, guida, a cada paso por el
AUMPOI + 1 (por si no lo apoyará en los datos de además de poner C a 0. En bucle, el registro BC será
habéis notado, os diré que TABLDI. Ahora, antes de los registros normales pone decrementado 32 veces, así
en la pantalla de trabajo, volver, hacemos un rst 56 mos en HL el origen de los que al final de las 22 veces
los scans están uno tras para leer el teclado, y des atributos de memoria, y en que se repetirá el bucle, BC
otro, a diferencia de cómo pués entramos en SALI NT, DE su correspondiente en la habrá sido decrementado
están en la pantalla del or donde se recuperan los re pantalla del ordenador. en 22 x 32 = 704, con lo que
denador). Tras esto, cerra gistros y se vuelve. Nótese Asimismo, cargamos C con B habrá sido decrementado
mos el bucle para terminar que tal y como está puesto, 0 y B con 25 (estas dos últi en 3. Por tanto, deberemos
con todos los scans. Ahora, y teniendo en cuenta que la mas operaciones de una so empezar con B valiendo 3
nos queda restaurar los atri fase de volcado de pantalla la vez. B será el contador más de las veces que se re
butos. Para ello, cargamos abarca el tiempo de dos in del bucle que se repetirá pita el bucle. Dentro del bu
en DE la dirección destino terrupciones, la lectura del para cada fila, dentro del cle de las 22 filas, volvemos
de atributos, y en A el nú teclado se hará tres veces cual deberemos volcar ocho a los registros alternativos
mero de filas que ocupa. menos de lo normal. Esto scans y una fila de atributos. para volcar los scans. Car
Por lo demás, la restaura hace que la respuesta del El bucle se repetirá 22 ve- gamos B con nueve para
ción de los atributos es idén mismo al teclear sea bastan entrar en un bucle que se L1
tica a la que acabamos de te pobre, pero da un poco repetirá ocho veces, adivi
hacer. Tras restaurar por más de velocidad al no te nad porqué. Dentro de es
completo un trozo de pan ner que ejecutarse tantas te segundo bucle, traslada
talla, cerramos el bucle que veces la subrutina de lectu Fig. 6 mos los 32 bytes que com- y
los restaurará todos. Ya he ra de teclado. Si pensamos ponen un sean de la panta
mos terminado la primera usar los sprites desde Códi TABLA DE DATOS DE lla desde la Ídem de memo-
de las subfases antes cita go Máquina, podría ser útil LOS GRÁFICOS ria a la real. Posiblemente
das. quitar las líneas 96, 97 y 98 QUE SE V A N A DIBUJAR os sorprenda que para esto
para ahorrar aún más tiem utilicemos 32 instrucciones
Ahora continúamos por Dirección Contenido
po. LDI. Pero resulta que esto es
INSABO. Aquí hacemos un relativa
bucle en el que ¡remos mo Y esto es todo el progra mucho más rápido que car
DIR + 0 Dirección de gar BC con 32 y hacer un
viendo todos los sprites y ma principal. Ahora que
destino en pan LDIR, y además, así pode
calculando los datos para la dan las subrutinas, que son
talla de mos utilizar el registro B co
tabla TABLDI en los que es cuatro: VUELCA, MOVERR,
memoria. mo contador. Estos DLIs y
tén en la pantalla. Dentro CREADA y DIBUJA.
DIR+ 2 Dirección del los que veremos a continua
de este bucle, IY será el VUELCA es la que se en gráfico.
puntero para el elemento carga de copiar la pantalla ción son la causa de que en
DIR+ 4 Dirección de la un bucle tengamos que car
correspondiente al sprite de trabajo en la pantalla del máscara.
dentro de la tabla de sprites ordenador. Se trata del pro gar B con 25 y en el otro 9
DIR + 6 Número de en vez de 22 y 8 respectiva
TASPRI, IX el de TABLDI, y ceso que más tiempo consu scans.
DE señalará la primera di me, ya que hay que mover mente. Tras esto, calcula
DIR+ 7 Bytes de ancho. mos en DE la dirección del
rección libre de la zona casi 7 K. La rutina vuelca to DIR + 8 Bytes que no
SPARES, pues en este bucle dos los scans de arriba a siguiente sean. Dentro de
entran en este bucle siempre vamos a
también será donde guar abajo, y por cada 8, vuel pantalla.
daremos los trozos de pan ca una fila de atributos. pasar de un sean a otro de
DIR+ 9 Byte de la misma fila, y, como mu
talla que hagan falta. Den Puede pareceros que sería rotación.
tro del bucle, lo que encon más sencillo volcar primero chos ya sabréis, el algoritmo
DIR + 10 Byte de para pasar de un sean a
tramos son llamadas a dos toda la pantalla sin atribu atributos.
subrutinas. MOVERR se en tos, y luego los atributos, otro de la misma fila es sim
D IR -l-ll Dirección de plemente incrementar el
cargará de calcular las nue pero el resultado sería que destino en atri
vas coordenadas del sprite, el movimiento quedaría mu byte alto de la dirección. Pe
butos de ro antes debemos restarle
teniendo en cuenta si se cho menos suave. Con este memoria.
mueve en línea recta o se procedimiento habrá pe 32, porque al hacer los LDIs
DIR+ 13 Número de filas es como si le hubiéramos su
gún trayectoria prefijada, y queñas zonas de la panta de atributos que
de calcular la fase de ani lla donde sprites parecerán mado 32. Como no hay re
ocupan el
mación en que se encuen doblarse; pero en la inmen gistros dobles libres, nos va
gráfico. lemos de A para hacer la
tra, si la tiene. CREADA sa mayoría de los casos, la DIR + 14 Número de co
crea el elemento en la tabla suavidad de movimientos resta. Primero le restamos
lumnas de 32 a E. Si no se nos produ
TABLDI y guarda los trozos será perfecta. atributos.
de pantalla. Veamos cómo funciona la ce acarreo, la resta ya está
Una vez guardados todos subrutina. En los registros bien hecha y procedemos a
incrementar D. Pero si hay sean de la siguiente fila, te sobrante, cerramos el bu de la tabla TABLDI. Lo pri
acarreo, deberemos restar niendo en cuenta que es po cle. mero que hacemos al entrar
le uno a D, pero como des sible que estemos pasando Llegamos ahora a MO- es comprobar que el sprite
pués tendríamos que incre de un tercio a otro. No creo VERR, la subrutina que cal esté activado, para lo cual,
mentarlo de nuevo, no ha que estos ajustes merezcan cula las nuevas coordena como ya hemos dicho, com
cemos ninguna de las dos más explicación, pues ya se das de cada uno de los spri- probamos que no sea 127 el
cosas. Antes de cerrar el bu han gastado muchos litros tes. A esta subrutina se lle sexto byte de la tabla (seña
cle, HL necesita ser incre de tinta hablando de cómo ga con IY apuntando a los lado por IY + 5). Si es 127,
mentado para saltarnos la se calcula el sean siguiente datos del sprite en trata regresamos inmediatamen
columna de más que ya di a uno dado en la pantalla miento dentro de la tabla de te. A continuación, guarda
jimos que había en la pan del Spectrum. Ahora volve sprites TASPRI. IX, por su mos en D el décimo byte de
talla de trabajo. Tras salir mos a los otros registros, y parte, apuntará al lugar la tabla, que era el que in
del bucle, en el que habre trasladamos una fila de atri donde debemos crear el dicaba el color, el tipo de
mos volcado los ocho scans, butos. Tras incrementar HL elemento correspondiente
hacemos los ajustes necesa para saltarnos la columna
rios para pasar al primer
animación y el tipo de mo to lo conseguimos con el CP distintos para la animación,
vimiento. Aislamos el color 128 y el CCF, que pone el primero habrá cinco fases
y lo guardamos en su lugar banderín de acarreo alzado que coincidirán con las de la
correspondiente en la tabla para un número negativo, y cíclica. Pero después, habrá
TABLDI. Ahora, si el movi el SBC A,A, que dejará en tres más en las que se dibu
miento es en línea recta, sal A un 0 si el acarreo estaba jarán los tres gráficos del
tamos a RECLIN. Si es en bajo, y un —1 (un 255) si es centro en orden inverso:
taba alto. Este incremento, primero el cuarto, luego el
trayectoria prestablecida,
cargamos en HL la direc una vez convertido en un tercero, y después el segun
número de 16 bits, se lo su do. En general, si hay N
ción de los datos de la tra
mamos a la coordenada Y, gráficos distintos, la canti
yectoria. Leemos el valor
y guardamos la nueva coor- dad de fases por las que pa
contenido en esa dirección.
deanda. A continuación, saremos será de 2*N-2. Por
Si es 127, la trayectoria ha
hacemos lo propio con la X. eso ADETRA, tras incremen
finalizado y cargamos en
Ya hemos actualizado las tar el contador de fase, le camente, lo que se hace en
HL la dirección inicial para
volverla a repetir. Tanto si coordenadas. Ahora vamos restamos ese número. Si el ella es averiguar si hay que
hacemos esto como si no, a pasar a calcular qué grá resultado es 0, el ciclo ha dibujar todo el gráfico, o és
continuamos por NOFITA. fico hay que dibujar, de los brá terminado y comenza te se encuentra parcialmen
varios que puede tener un remos de nuevo por la fase te en la pantalla, y calcular
Ahora comprobamos si el
valor leído es un 126. En es sprite, para lo cual tendre 0. Pero antes hemos guar todos los datos para que
mos aue tener en cuenta la dado el resultado de la res luego DIBUJA se encargue
te caso, los dos siguientes
fase ae animación. Por eso ta. Ahora tenemos que cal ya de dibujar los gráficos.
bytes indicarán la nueva di
cargamos en E el número cular qué es el que hay que Lo primero que hacemos es
rección inicial de los gráficos
correspondientes al sprite, y total de fases de animación dibujar. Si la fase actual es calcular qué tabla de rota
y en A la fase en la que es menor que la cantidad de ciones de las cuatro existen
los pasamos a su lugar en la
tabla TASPRI, para retroce taba la última vez. Ahora gráficos distintos que hay, tes es la que vamos a utili
der a continuación a RECU- saltamos a ADETRA si la nos encontramos en la par zar. En realidad, lo que cal
anim ación es del tipo te que es igual que en la culamos es el byte alto de su
PE y leer un nuevo dato de
adelante-atrás. Si es cíclica, animación cíclica, por lo dirección de inicio (el bajo
la tabla de datos de la tra
yectoria. Cuando nos en simplemente incrementamos que la fase es igual al núme es 0). Tras guardar esto en
contramos con un dato que la fase, y si hemos llegado ro del gráfico. En caso con su lugar, comprobamos si la
no es 127 ni 126, llegamos a la última, la ponemos a 0. trario, bastará que calcule coordenada X es positiva y
a TRANOR. Este dato será Después saltamos a TRA- mos 2*N-2-fase actual, pe menor de 256. En este caso
REN. Nótese que en la ani ro eso es lo que habíamos saltamos a XPOSIT. En ca
el incremento X, y lo pasa
mos a E, cargando A el si mación cíclica, coinciden la calculado antes, salvo que so contrario, si no es mayor
guiente valor que será el in fase actual con el gráfico con signo contrario así que de —256, retornamos inme
que hay que dibujar. Esto en PARETR lo recuperamos diatamente, pues el sprite se
cremento Y, tras actualizar
el contador de trayectoria, quiere decir que si la fase es (había sido guardado en encuentra fuera de la pan
saltamos a COCORE, don 0 habrá que dibujar el pri PARETR + 1), lo cambiamos talla. Cuando es negativa
mer gráfico, si es 1, el se de signo y continuamos por mayor que —256, compro
de nos reuniremos con la bi
furcación hecha en el caso gundo, etc. En ADETRA tra TRAREN como en los otros bamos si es mayor o igual
tamos la animación de casos. En TRAREN, carga que —6, en cuyo caso, el
de un movimiento en línea
recta. En este casó saltába adelante-atrás. En este tipo mos DE con la cantidad de trozo del gráfico que no se
de animación, si por ejem memoria que ocupa cada ve en pantalla será menor
mos a RECLIN. Aquí, car
gamos en E el incremento X plo, tenemos cinco gráficos gráfico, y la multiplicamos de un carácter. Esto quiere
y en A el Y, para entrar en por dos caras para calcular decir que habrá que dibujar
COCORE con los mismo da la que ocupa cada gráfico el gráfico entero, pero em
tos que si hubiéramos veni con su mascara. Este es el pezando en la columna so
do desde el caso de trayec valor que le tendremos que brante de la pantalla de
toria prefijada. En COCO- sumar a la dirección del pri memoria, para que quede
RE, pasamos el incremento mer gráfico del sprite tantas aquí el trozo que no se ve
Y a BC. Hay que tener en veces como indique el con rá en pantalla. Por eso car
cuenta que los incrementos tenido de A. Tras hacer es gamos en BC ORIGSC—1 y
son números con signo, y al to, guardamos la nueva di en HL ORIGAT—1. Es en es
pasarlos a un registro do rección del gráfico en el lu tos registros donde vamos a
ble, el registro bajo deberá gar que le corresponde en construir las direcciones des
ser igual que el byte de in ía taola TABLDI. Y esto es tino del gráfico en la panta
cremento, pero el alto, de todo lo que hace MOVERR. lla de trabajo y en los atri
berá ser 0 para un incre Llegamos ahora a CREA butos de la misma. Como
mento positivo y 255 para DA, posiblemente, la subru hemos dicho que dibujare
un incremento negativo. Es tina más complicada. Bási mos el gráfico entero, hace-
mos que el ancho del gráfi es porque el sprite está com PARTEY. Seguimos ahora de un gráfico que se sale
co en la pantalla sea igual pletamente fuera de la pan por XPOSIT. Aquí la coor por arriba o por abajo, co
al ancho del gráfico en sí, y talla, y retornamos ensegui denada X estará entre 0 y gemos el número de scans
que el número de bytes de da. Si el resultado excede 255, y pueden ocurrir dos que caben en pantalla, lo
ancho que no entran en la de cero, coincidirá con la casos: que el sprite quede dividimos por 8, y si no re
pantalla es 0. Tras esto sal cantidad de caracteres de totalmente dentro o que se sultado exacto, al cociente
tamos a PARTEY para hacer ancho que del gráfico ca salga parte por la derecha. le sumamos 1 y nos olvida
cálculos similares con la brán en la pantalla, y lo Vamos a comprobarlo. Si la mos del resto, y ese cocien
coordenada Y. Continua guardamos en su lugar en X es 0, consideramos desde te será lo que buscábamos.
mos en NEGARE, a donde TABLDI. Ahora si que hay el principio que el sprite es En el caso de un sprite que
llegamos cuando la coorde un trozo del gráfico que no tá totalmente dentro de la cabe completamente en la
nada X es mayor que —256 se dibuja por estar fuera de pantalla. En caso contrario, pantalla, se calcula la fila de
pero menor que —6. Como la pantalla. El ancho de es calculamos la columna en la pantalla dentro de la que
las dimensiones de los grá te trozo será igual a la coor baja resolución donde ter está el primer sean del grá
ficos en la magnitud X vie denada en baja resolución minaría, el dibujo. Si no lle fico, y la fila dentro de la
ne dada en caracteres, va del sprite, sólo que cambia ga a 33, el gráfico cabe en que esta el último, se restan,
mos a pasar esta coordena de signo. Pero para esos tero. En caso contrario, al se le suma 1 y obtenemos el
da X de alta a baja resolu bytes que no se van a dibu valor obtenido le restamos resultado deseado. Conti
ción, para lo cual la dividi jar sean tomados de la de 32 y ya tenemos cuantos nuaremos ahora la explica
mos por 8, teniendo en recha, como debería ser, y bytes de ancho no tienen ción más detalladamente
cuenta que se trata de un no de la izquierda, este nú que ser dibujados. Lo resta desde COYPOS. En primer
número negativo, y por lo mero no sólo lo guardare mos del ancho del sprite y lugar, guardamos en su lu
tanto, los bits que entren mos en IX+ 8, sino que se lo obtenemos cuántos han de gar correspondiente en la
sumaremos a la dirección serlo. En RECOIN calcula tabla la dirección de la pan
de comienzo del gráfico. mos la dirección destino en talla de memoria a la que
Por último, cargamos en BC la pantalla de trabajo y sal va a ir el gráfico. A conti
y HL, ORIGSC— 1 y tamos a PARTEY. En INTE- nuación calculamos la direc
ORIGAT— 1 respectivamen GE, lo único que hacemos ción de la máscara a partir
es indicar que el ancho del de la dirección del gráfico y
gráfico que cabe en panta de la memoria ocupada por
lla es igual al ancho total de un gráfico. Ahora calcula
éste y que el ancho de la mos cuántas columnas de
parte que no cabe es 0, y atributos ocupa el gráfico, si
después retrocedemos a RE está en el principio de una
COIN para calcular la di columna, ocupará tantas
rección de la pantalla de columnas como su ancho en
trabajo. Y llegamos a PAR caracteres, pero en caso
TEY. Aquí se hace lo mismo contrario, ocupará una
que acabamos de hacer con más. Ahora recuperamos
la X, así que no la vamos a de la pila a DE y HL (que
comentar tan en detalle, si han sido guardados en el
no sólo a ver las diferencias. fragmento de listado que no
Aquí, cuando un sprite no hemos visto con detenimien
está completamente en la to), y volvemos a guardar
pantalla, no necesitamos HL. Tras meter la dirección
te, para que, como antes, el calcular nada más que de atributos en su sitio y
trozo del primer byte a di cuantos scans quedan den aumentar en 1 el contenido
bujar que no debe salir en tro, y no cuántos fuera, de la variable NUBLBO pa
pantalla, quede en la co aunque cuando se sale por ra indicar que hay un sprite
lumna extra. Pero si el grá arriba, igual que cuando más para dibujar, llegamos
fico empieza justo en la po con la X se salía por la iz a las líneas que se encargan
sición de un carácter, no ha quierda, habrá que modifi de guardar en SPARES (re
brá ningún byte que quede car la dirección de comien cuérdese que DE apunta a
a medias entre dos direccio zo del gráfico, sumándole el SPARES) cada uno de los
nes, o lo que es lo mismo, el ancho del gráfico tantas ve trozos de pantalla donde
por la izquierda deben ser primer byte a dibujar del ces como scans quedan fue luego van a ir los sprites.
unos y no ceros. A esta gráfico quedará completa ra de la pantalla. Lo único Tampoco necesitan comen
coordenada en baja resolu mente dentro de la panta que se hace y que no se ha tarios, pues son práctica
ción, le sumamos el ancho lla, por lo que hacemos que cía con la X es calcular mente idénticas a las que to
del gráfico. Si el resultado BC y HL incrementen en uno cuántas filas de atributos maban estos trozos de SPA
es cero o ni siquiera llega, sus valores antes de saltar a ocupa el gráfico. En el caso RES y los copiaban en la
pantalla. Al final, actualiza contador para el bucle, que mos desplazar todo el grá racteres. En SUMVAL+1,
mos IX para que apunte al se repetirá tantas veces co fico antes de dibujarlo). En cargamos 33 menos el nú
siquiente elemento de la ta mo sprites haya que dibu P O S N U M +1, almacena mero de scans de ancho. Es
bla. jar, utilizamos A guardado mos un 255 girado (8-N) te es el valor que hay que
Y llegamos a DIBUJA, la en la pila. Veamos todos los veces hacia la izquierda. sumarle a la dirección de
subrutina que, utilizando el datos que cargamos dentro Ahora intercambiamos los pantalla tras haber dibuja
gráfico y la máscara y todos de este bucle antes de pro registros con los alternati do un sean para obtener la
los datos de la tabla TABL- ceder a efectuar el dibujo. vos. En HL, cargamos la di dirección del siguiente. C se
Dl, se encarga de efectuar En DE cargamos la direc rección del gráfico para lue rá el contador de los scans
los dibujos de los sprites en ción de la pantalla de traba go pasarla a IY. En HL car que debemos dibujar. Por
la pantalla de memoria. El jo. En H, el byte alto de la gamos la dirección de la
mayor problema de com tab la de ro tación . En máscara. En POSBYT+1,
prensión que puede presen PONUDO + 1, el valor 255 cargamos el ancho en ca
tar esta subrutina es que girado N veces (siendo N el
maneja demasiados datos y número de pixels que debe
puede uno perderse. Como
último, en DE cargamos el
número de caracteres de
ancho que no vamos a di
bujar del sprite. Sobre LOS-
CAN se cerrará el bucle pa
ra cada sean.
Aquí intercambiamos los
registros. Ahora tenemos
que tener bien claro cuál es
el proceso a seguir para di
bujar cada sean. Cada byte
del gráfico tendrá que ser
colocado entre dos direccio
nes de memoria dentro de
la pantalla. Por tanto, en
una dirección de la panta
lla entrarán fragmentos de
dos bytes del gráfico. Sa
biendo que la tabla de ro
taciones nos da por un lado,
la parte del byte del gráfi
co que va en la dirección de
pantalla actual y por otro
lado la parte irá en la mis
ma dirección que la prime
ra parte del siguiente byte
de gráfico, el proceso para
cada byte sería: obtener la
primera parte del byte. Jun
tarla con la segunda parte
del anterior byte. Almace
nar el resultado en pantalla.
Obtener la segunda parte
del byte y guardarla para
su uso con el byte siguiente.
En realidad, sería un poco
más complicado, pues hay
que hacer esto para el byte
del gráfico y para el de la
máscara. El paso descrito
como guardar el resultado
en pantalla, será en reali
dad hacer un AND de lo
contenido en pantalla con el
resultado de la máscara, a
continuación hacer un OR
con el resultado del gráfico
y por último almacenar el
resultado en pantalla. A
partir de ahora, para inten
tar clarificar un poco las co
sas, vamos a llamar B1, C1,
etc., a los registros del jue
go que hemos inicializado
primero, es decir, en el que
DE tiene la dirección de la
pantalla y HL la de la tabla
de rotaciones, y B2, C2,
etc., a los del otro juego, es
decir, en el que HL confine
la dirección de la máscara
Actualidad, pokes, mapas, trucos,
los mejores juegos y programas para
SPECTRU M , AM STRAD, COM M ODORE y M SX
Todo el universo
del Software
mes a mes
v e n t a
ya esta
K ¡o s e ° '
| A 'c R ° ¡p íd e la
y DE el número de bytes que parte del byte anterior y en imaginario byte de másca cemos el AND con la pan
no hay que dibujar. Para B la de éste para usarlo la ra (colocada a n te rio r talla y el OR con el gráfico
guardar la segunda parte próxima vez. mente en PO N U D O +1) y lo metemos en pantalla.
del byte del gráfico, utiliza Ahora decrementamos H con la segunda del byte que Ahora le sumamos a la di
remos B1 para el gráfico y y juntamos la segunda par ha quedado sin dibujar. Ha rección de pantalla el valor
C1 para la máscara. Pero te del byte anterior, que es necesario para calcular la
en el caso del primer byte tá en A con la primera de dirección del siguiente sean
de un sean, estos registros éste. Lo guardamos tempo (dicho valor se encontraba
no podrán contener la se ralmente en L y obtenemos en SUMVAL+ 1).
gunda parte del byte ante la máscara, hacemos el Por último, sólo nos que
rior, porque éste no exis AND con la pantalla, el OR da volver al juego 2 y cerrar
te. Por esto, lo que hacemos con el gráfico y lo guarda el bucle de los scans. Aho
es invertarnos un byte an mos en la pantalla. Ahora ra nos queda dibujar los
terior, que para que no volvemos al juego 2 para atributos. Para ello, carga
afecte al dibujo debe ser 0 cerrar el bucle de cada byte mos en HL la dirección des
para el gráfico y 255 (una de un sean. Súmanos DÉ a tino de los atributos en la
vez girado y tomada su se HL e IY para saltarnos la pantalla de memoria, en
gunda parte) para la más parte del gráfico que no ha ATDIRG+1 el número de
cara. de ser dibujada y de nuevo columnas que hay que relle
Estos son los valores que al juego 1. Ahora tenemos nar , en SUMATT + 1, 33-el
debemos cargar en B1 y C1 que dibujar la segunda par número anterior (ya debe
antes de entrar en el bucle te del último byte del sean ríais saber para qué lo va
para todos los bytes de un que no ha sido dibujada mos a utilizar), en E el byte
sean, y lo hacemos en POS- dentro del bucle. Al igual de atributos, en D una más
NUM (recuérdese que pre que como ocurría con el pri cara para las partes del atri
viamente habíamos carga mer sean, con este último buto de la pantalla que no
do en POSNUM+1 la se debemos inventarnos un deben cambiar (el papel y
gunda parte del resultado byte siguiente, del que el el flash), y en A el número
de rotar 255). Ahora volve gráfico sea 0 y la máscara de filas a rellenar. En
mos al juego de registros 2, 255. En PONUDO ¡unta ATLAFX se cierra el bucle
e inicializamos B2 que va a mos la primera parte del para cada fila, y en ATBL-
ser el contador del bucle pa Dl el de cada byte de la fi
ra los bytes de un sean (el la. Dentro de éste, tomamos
número de sean lo había el byte de atributos de la
mos puesto en POSBYT +1). pantalla, nos quedamos con
Sobre LOBYTS se cerrará el el PAPEL y el FLASH me
bucle. Aquí, guardamos en diante un AND D, lo junta
A' el byte del gráfico y en A mos con INK y BRIGHT y lo
el de máscara. Volvemos al guardamos en la pantalla.
juego 1. Cargamos en A la Por lo demás, es práctica
primera parte del byte de mente idéntico este proceso
máscara y la juntamos con al de volcar los atributos de
la segunda del byte an pantalla a SPARES o de
terior que estaba en C, SPARES a pantalla, que ya
y después cargamos en ha sido visto. Tras dibujar
C la segunda parte del los atributos, recuperamos
byte actual. Ahora pa A, que nos decía cuántos
samos a A el byte del gráficos había que dibujar,
gráfico y después a L y actualizamos IX para que
para calcular la direc apunte al siguiente elemen
ción correspondiente to.
en la tabla de rota Con esto hemos termina
ción. Como he do todo lo relacionado con
mos incremen el programa principal. Lo
tado H, HL es único que quedan son las
tará apuntando tres subrutinas anexas, IN I
a la segunda CIO, DESACT y COMCHO,
parte del byte, y que son tan sencillas y poco
no a la primera. interesantes y que no mere
Cargamos en cen una explicación a fon
A la segunda do.
LISTADO EN SAM BLADO R C
11 0 4 778 1NSAB0 LD A .l
28 O - 781 LD (NUBLBO),A
31 788 LD DE, SPARES
SPRITES POR 888 LD IX.TABLDI
SI 818 LD IY.TASPR1
<18 INTERRUPCIONES 828 LD A.ÍNIKSPR)
78 838 LD B,A
88 POR PABLO AR12A. 848 AND A
88 858 JR Z,NOSPRI
188 868 IttttlN PUSH BC
118 ORO 62184 878 PUSH DE
128 881 CALL NOVERR
138 888 POP DE
148 ENTINT DI 888 CALL CREADA
158 PUSH AP 818 LD BC, 17
168 PUSH BC 828 ADD IY.BC
178 PUSH DE 838 POP BC
188 PUSH HL 848 DJNZ IffIAIN
188 PUSH IX 858 CALL DIBUJA
288 EXX 868 NOSPRI POP IY
218 EX AF.AF' 878 PUSH IY
221 PUSH AF 881 RST 56
238 PUSH BC 888 SALINT POP IY
248 PUSH DE lili POP HL
258 PUSH HL 1818 POP DE
248 PUSH IY 1128 POP BC
278 LD A,(ESTADO) 1838 POP AF
288 AND A 1848 EX AF,AF'
288 JP N2.N0V0LC 1858 EXX
318 CALL VUELCA 1868 POP IX
311 LD A, 1 1878 POP HL
328 LD (ESTADO),A 1888 POP DE
338 JP SALINT 1888 POP BC
341 1188 POP AF
358 NOVOLO LD HL,SPARES 1118 El
368 XOR A 1128 RETI
378 LD (ESTADO),A 1138 1
381 LD A,(NUBLBO) 1148 i
388 LD IXJABLDl 1158 VUELCA LD HL.0R1GSC
SUGERENCIAS Y demos pokear en las direc
488 INBOTO DEC A 1168 LO DE,16384
ciones 62387 y 62388 la di
ADVERTENCIAS 418 JR 2 ,1NSA80 1178 LD C,8
rección de la pantalla del 421 EX AF,AF' 1188 EXX
ordenador dónde quere 438 LD E, ( IX+8) 1188 LD HL.0R1GAT
Tal y como está, la zona
mos que empiece, y en 441 LD D ,(lX 4 l) 1288 LD DE,22528
de pantalla sobre la que se
62396 y 62397 la dirección 458 LD A ,(1X414) 1218 LD BC,25*256
dibujan los sprites es toda la
de atributos. 468 LD (B0RP01+1),A 1221 LVOLCA EXX
parte superior de ésta, las
478 LD (BORPOD4l),A 1238 LD 8,8
22 líneas, pero no hay ra Es necesario advertir que 481 NEG 1248 LOPPNU LDI
zón para que la zona usa si usamos demasiados spri 488 ADD A ,33 1258 LD1
da tenga la altura que que tes o demasiado grandes, se 518 LD (AUIPOI41),A 1261 LDI
ramos. Por .ejemplo, pode puede producir el bloqueo 518 LD (AÜHPOO*1 ),A 1278 LDI
mos reservar los dos tercios del ordenador. La única so 528 LD A ,(1X46) 1288 LDI
superiores para la pantalla lución a esto, como ya he 538 LD B,8 1288 LDI
de juego y utilizar el tercio mos dicho, es cambiar en el 541 B0RP01 LD C ,l 1388 LDI
inferior para marcadores y listado Ensamblador la ubi 558 LD1R 1316 LDI
otras cosas. Cuanto más pe cación de la zona SPARES. 568 AUiPOI LD 0,8 1328 LDI
queña sea la zona destina 571 EX DE.HL 1338 LDI
Por último advertirles a 581 ADD HL.BC
da a sprites, mayor será la 1348 LDI
los usuarios del Spectrum 588 EX DE.HL 1358
velocidad a la que vayan LDI
128 o + 2 que el programa 611 DEC A 1368 LDI
nuestros programas. Los
ajustes que deberemos ha funcionará perfectamente 618 JP NZ.BORPOI 1378 LDI
cer son los siguientes: Si en modo 48 K, pero en 128 628 LD A ,(1X413) 1388 LDI
queremos que la zona en la sólo funcionará si no inten 638 LD E ,(1X4)1) 1388 LDI
tamos interrumpir el pro 648 LD 0,(1X412) 1488 LDI
que aparezcan los sprites
grama con las interrupcio 658 BORPOD LD 0,8 1418 LDI
tenga un alto de N filas, 661 LD1R
nes activadas, pues en este 1428 L01
tendremos que hacer POKE 678 AUMPOD LD C,8 1438 LDI
momento se bloqueará el
62400,X, donde X es igual 681 EX DE.HL 1448 LDI
a N +1 si N está entre 1 y ordenador.
688 ADD HL.BC 1456 LDI
8, a N + 2 si N está entre 9 Esperamos que este pro 788 EX DE.HL 1468 LDI
y 16, y a N + 3 si N es ma grama os sea de utilidad y 718 DEC A 1478 LDI
yor de 16. Si no queremos consigáis con él hacer pro 721 JP NZ,BORPOD 1488 LDI
que esta zona empiece jus gramas de calidad comer 738 LD C,15 1488 LDI
to arriba de la pantalla po cial. 741 ADD IX,BC 1588 LDI
758 EX AF,AF' 1511 LDI
768 JP INBOTO 1528 LDI
DE M A N E J O DE PANTALLAS
1538 LD1 2298 LD A,(HL) 3858 ; 3818 SUB C 4578 SRL C
1541 LDI 2388 LD (1Y+8),A 3848 CREADA LD A ,<IY+4) 3828 LD 8, A 4588 SRL c
1558 LD1 2318 INC HL 3878 LD C,A 3838 JP PARTEY 4598 LD A,(IY+4)
1548 LO A,E 2328 LD A,<HL) 3888 AND 4 3848 INTEGE LD A,(1Y«2) 4488 ADD A,(IY<3)
1578 SUB 32 2338 LD < m n ,A 3898 ADD A, 248 3858 LD (IX+7),A 4418 ADD A ,7
1588 LD E,A 2348 INC HL 3188 LD <1X*9),A 3848 XOR A 4428 SRL A
1598 JR C.NOINCD 2358 JP RECUPE 3111 LD A ,( W 5 ) 3878 LD (1X+8),A 4438 SRL A
1488 INC D 2348 TRANOR LD E,A 3128 AND A 3888 JP RECOIN 4448 SRL A
1418 N01NCD INC HL 2378 INC HL 3138 JR Z,XPOSIT 3898 PARTEY LD A ,(IY *7 ) 4458 SUB C
1428 DJNZ LOPPNU 2388 LD A,(HL) 3148 INC A 3988 ANO A 4448 LD (IX+13),A
1438 LD A.E 2398 INC HL 3158 RET NZ 3918 JR Z.YP0S1T 4478 EX AF.AF'
1448 ADD A ,32 2488 LD <IY+13),L 3148 LD A,C 3928 INC A 4488 LD C.A
1451 LD E|A 2418 LD <IY+14) ,H 3178 ADD A ,4 3938 RET NZ 4498 JP COYPOS
1448 JR C.SITERC 2428 JP COCORE 3188 JR NC,NEGARE 3948 LD A,(1Y«4) 4788 M0SCA8 LD A ,192
1478 LD A, D 2438 RECLIN LD A ,0 Y 0 8 )
3198 LD HL.ORIGAT-l 3958 ADD A ,(m 3 > 4718 SUB (1Y<4)
1488 SUB 8 2448 LD E,A 3288 LD BC.ORIGSC-l 3948 RET NC 4728 LD (IX i4 ),A
1498 LD D.A 2458 LD A .O Y O l)3218 LD A,(IY+2) 3978 RET 2 4738 ADD A ,7
1788 S1TERC EXX 2448 COCORE LD C,A 3228 LD (IX<7),A 3988 LD (IX+4),A 4748 SRL A
1718 LDI 2478 CP 128 3238 XOR A 3998 NEG 4758 SRL A
1728 LDI 2488 CCF 3248 LD (IX *8),A 4888 ADO A.OY43) 4748 SRL A
1738 LDI 2498 SBC A,A PARTEY 4818 PUSH HL 4778 LD (1X413) ,A
3258 JP
1748 LDI 2588 LD B,A 3248 NEGARE SCF 4828 PUSH DE 4788 COYPOS LD ( IX*8),C
1758 LDI 2518 LD L,(IY 44) 3278 RRA 4838 LD L ,(IX *2 ) 4798 LD (1X41),B
1748 LDI 2528 LD H,(IY47) 3288 SRA A 4848 LD H,(1X«3) 4888 LD L.UX42)
1778 LDI 2538 ADD HL.BC 3298 SRA A 4858 LD D, 8 4818 LD H,(IX*3)
1788 LDI 2548 LD (IY 44),L 3388 LO B.A 4848 LD E,(1Y*2) 4828 LD E.UY4I5)
1798 LDI 2558 LD <1Y47),H 3318 ADD A, <IY+2) 4878 NESUDI ADD HL.DE 4838 LD D .0 Y 0 4 )
1888 LDI 2548 LD A.E 3328 RET NC 4888 DEC A 4848 ADD HL.DE
1818 LDI 2578 LD C.A 3338 RET 2 4898 JP NZ,NESUDI 4858 LD (1X*4),L
1828 LDI 2588 CP 128 3348 LD <IX+7),A 4188 LD (1X42),L 4848 LD (1X45),H
1838 LDI 2598 CCF 3358 LD A ,8 4118 LD (1X43),H 4878 LD 0,0X47)
1848 LDI 2488 S8C A, A 3348 NE6 4128 LD A ,(1X44) 4888 LD A ,0X49)
1858 LDI 2418 LD 8, A 3378 LD ( 1X+8),A 4138 ADD A ,7 4898 AND i
1848 LDI 2428 LD L,(IY 44) 3388 ADD A ,(IX *2 ) 4148 SRL A 4988 JR Z, SANUBY
1878 LDI 2438 LD H,(IY45) 3398 LD <1X+2),A . 4158 SRL A 4918 INC D
1888 LDI 2448 AOD HL.BC 3488 LD A ,8 4148 SRL A 4928 SANUBY LD (1X+14),D
1898 LDI 2458 LD <IY44),L 3418 ADC A, <IX+3) 4178 LD (1X413),A 4938 POP DE
1988 LDI 2448 LD (IY45),H 3428 LD (IX *3) ,A 4188 JP COYPOS 4948 POP HL
1918 LDI 2478 LD A,(1Y412) 3438 LD A, C 4198 YP0S1T LD A ,( IY+4) 4958 PUSH HL
1928 LDI 2488 LD E,(IY48) 3448 LD HL jORIGAT-l 4288 CP 192 4948 LD 0 X 0 1 ) ,L
1938 LDI 2498 BIT 3,0 3458 LD BC.ORIGSC-l 4218 RET NC 4978 LD 0 X 0 2 ) ,H
1948 LDI 2788 JP NZ .ADETRA 3448 AND 4 4228 SRL A 4988 LD H.B
1958 LDI 2718 INC A 3478 JR NZ,PARTEY 4238 SRL A 4998 LD L.C
1948 LDI 2728 CP E 3488 INC HL 4248 SRL A 5888 LD A ,(1X04)
1978 LDI 2738 JR NZ.N0F1CI 3498 INC BC 4258 PUSH BC 5818 LD <PUBYSA41 ),A
1988 LDI 2748 XOR A 3588 JP PARTEY 4248 LD BC, 33 5828 LD (PUATSAO) ,A
1998 LDI 2758 NOFICI LD (IY«12),A 3518 XPOSIT LD A,C 4278 INC A 5838 NEG
2888 LDI 2748 JP TRAREN 3528 SUB 1 4288 CALATT DEC A 5848 ADD A ,33
2818 LDI 2778 ADETRA INC A 3538 JR C.INTEGE 4298 JR Z.ATCOMP 5858 LD (PUSUSAO),A
2828 LDI 2788 LD D,A 3548 SRL A 4388 ADD HL.BC 5848 LD (ATSUSAO).A
2838 INC HL 2798 sue E 3558 SRL A 4318 JP CALATT 5878 LD A.(NUBLBO)
2848 DEC B 2888 SUB E 3548 SRL A 4328 ATCOMP POP BC 5888 INC A
2858 JP N2,LVOLCA 2818 ADD A ,2 3578 ADD A ,(IY *2 ) 4338 PUSH HL 5898 LD (NUBLBO),A
2848 RET 2828 LD (PARETR+l) ,A 3588 CP 33 4348 PUSH DE 5188 LD A, 0X44)
2878 1 2838 JR Z.FIANC1 3598 JR C.INTEGE 4358 LD H.B 5118 LD 8,8
2888 1 2848 LD A,D 3488 SUB 32 4348 LO L.C 5128 PU8YSA LO C .l
2898 HOVERR LD A,(1Y*5) 2858 FIANC1 LD <IY+12),A 3418 LD ( IX+8),A 4378 LD DE, 33 5138 LDIR
2188 CP 127 2848 CP E 3428 NEO 4388 LD A,(IY44) 5148 PUSUSA LD C,8
2118 RET 2 2878 JR C,TRAREN 3438 ADD A ,<IY+2) 4398 AND A 5158 ADD HL.BC
2128 LD A, <IY+9) 2888 FARETR LD A ,8 3448 LD (1X<7 ),A 4488 JR Z.PRIFIL 5148 DEC A
2138 LD D.A 2898 NEO 3458 RECOIN LD A,C 4418 CALF1L ADD HL.DE 5178 JR NZ.PUBYSA
2148 AND 71 2988 TRAREN LD E,<IY415) 3448 SRL A 4428 DEC A 5188 POP HL
2158 LD (1X418),A 2918 LD D .0 Y 0 4 ) 3478 SRL A 4438 JP NZ.CALFIL 5198 LD A ,(1X 03)
2148 BIT 4,D 2928 SLA E 3488 SRL A 4448 LD B,H 5288 PUATSA LD C,8
2178 JR 2, RECLIN 2938 RL D 3498 LD C,A 4458 LD C,L 5218 LDIR
2188 LD L .0 Y 0 3 ) 2948 LD L.UY48) 3788 LD HL.ORIGAT 4448 PRIF1L LD A,(1Y44) 5228 ATSUSA LD C, 8
2198 LD H .0 Y 0 4 ) 2958 LD H,( IY*1> 3718 ADD A,L 4478 ADD A.OY43) 5238 ADD HL.BC
2288 RECUPE LD A, (HL) 2948 AND A 3728 LO L,A 4488 JR C.MOSCAB 5248 DEC A
2218 CP 127 2978 JR Z.PRIFAS 3738 ADC A,H 4498 CP 193 5251 JP NZ, PUATSA
2228 JR N2,NOFITA 2988 LD 8, A 3748 SUB L 4588 JR NC.M0SCA8 5248 LD C,15
2238 LD L , <IY+18) 2998 HULTIP ADD HL,DE 3758 LD H.A 4518 LD A,(IY43) 5278 ADD IX,BC
2248 LD H ,(IY 4 ll) 3888 DJNZ NULTIP 3748 LD A, C 4528 LD (1X44),A 5288 RET
2258 LD A, ( HL > 3818 PR1FAS LD <IX42),L 3778 LD BC.ORIGSC 4538 LD A,C 5298 ;
2248 NOFITA CP 124 3828 LD (1X43),H 3788 ADD A,C 4548 EX AF,AF' 5388 ;
2278 JR N2 .TRANOR 3838 RET 3798 LD C.A 4551 LD C,(IY44) 5318 DIBUJA LD IX.TABLDI
2288 INC HL 3848 ; 3888 ADC A,B 4548 SRL C 5321 LD A,(NUBLBO)
5338 D1BLUP DEC A 6050 SUS L 7018 POP HL 7498 LD A, 1
6538 RET
5348 RET Z 6860 LD H,A 7820 INC H 7508 LD (NUBLBO),A
6548 COORDS CALL DITABS 7510 XOR A
5358 PUSH AF 6878 EX D£,HL 7830 LD A,H
6558 CALPOI JP 8 7528 (NIMSPR) ,A
5368 LO E,<IX*8) 6080 EXX 7840 AND 7 LD
6568 COORDX LD L,(IY «4) 7538 LD (ESTADO),A
5378 LD D,<IX+1) 6090 DEC C 7858 JR NZ.INIPR7
6578 U> H,(1Y*5)
5388 LD H,(1X«9> 6100 JP NZ.LOSCAN 7860 LD A,L 7548 El
6588 RET
5378 LD L ,255 6118 LD L , <IX+11> 7078 ADD A ,32 7558 RET
6598 COORDY LD L,<IY+6)
5488 LD A,<HL> 6128 LD H,(IX+12) 7888 LD L,A 7561 ;
6608 LD H,(1Y*7) 7570 ¡
5418 LD <PONUOO-* 1) ,A 6138 LD A,(IX *14) 6618 RET 7098 JR C.1NIPRT
5428 INC H 6148 LD (ATDIRG+l) ,A 7188 LD A,H 7588 DESACT LD A, 63
6628 D1TABS LD IY.TASPRI
5438 LD A, (HL) 6158 NEG 7118 SU8 8 7590 1N 1
6630 AND A
5448 DEC H 6168 ADD A ,33 7128 LD H,A 7686 LD I,A
6640 RET 2
5458 LD ( POSNUM*1 ),A 6178 LD (S U V m *l),A 7130 1N1PRT EX AF.AF' 7616 RET
6658 PUSH DE
5468 EXX 6188 LD E, <1X+18) 7148 DEC A 7628 ;
6668 LD DE,17
5478 LD L,(1X*2> 6190 LD D.184 7158 JR NZ, INI LAP 7638 ;
6678 SIMDIS ADD IY,DE
5488 LD H,(IX*3) 6200 LD A, <IX+13) 7160 LD HL, 22528 7648 CONCHO LD BC,(SPRICH)
6680 DEC A
5498 PUSH HL 6218 ATLAFX EX AF.AF' 6690 JR NZ,SIMDIS 7178 LD DE, ORIGAT 7650 INC C
5588 POP IY 6228 ATD1RG LD 8,8 6780 POP DE 7188 LD A ,24 7666 JR Z.BCONTO
5518 LD L,(1X*4) 6238 ATBLD1 LD A,(HL) RET 7198 INATIA LD 8C,32 7676 DEC C
6710
5528 LD H,<IX+5) 6248 AND D 7280 LD1R 7686 CALL CHOSUB
6728 ;
5538 LD A,(1X*7) 6258 OR E 7210 INC DE 7690 LD 8C,6
6738 ;
5548 LD (POSBYTM) ,A 6260 LD (HL),A 7220 DEC A 7788 RET NC
6740 NUMSPR EOU 23681
5558 NEG 6278 INC HL 7230 JR NZ.INATLA 7710 INC BC
6758 TABLDI EQU 53289
5568 ADD A ,33 6280 DJNZ ATBLD1 7240 IN 2 7720 RET
6760 TASPR1 EQU 53880
5578 LD (SUMALMI.A 6298 SIMATT LD C.0 7258 LD C,4 7738 ¡
6778 0RI6SC EQU 54568
5588 LD C.ÍIX+6) 6380 ADD HL.BC 7260 LD H, 248 7740 8COÍTO LD IX,SPRICH
6788 0R1GAT EQU 60984
5598 LD E,(IX*8> 6318 EX AF.AF' 7270 LCRTCR LD A ,9 7750 LD A, (NIMSPR)
6790 SPARES EQU 53544
5688 LD 0,0 6328 DEC A 6800 SPRICH EQU 23728 7288 SUB C 7768 BUCHAL INC (IX*8)
5618 LOSCAN EXX 6338 JP NZ.ATLAFX 6810 ; 7290 SU8 C 7778 EX AF.AF'
5628 POSNUN LD BC,0 6340 POP AF 6820 ; 7300 LD L,8 7780 LD 8C,(SPRICH)
5638 EXX 6358 LD C, 15 6830 ORG 61953 7310 ROTACU LD 8,L 7798 LD A ,8
5648 POSBYT LO 8,8 6368 ADD IX , BC 6848 INICIO DI 7328 LD E,8 7886 CP C
5658 L08YTS LO A ,(IY *0 ) 6370 JP D1BLUP 6858 LD A, 241 7338 LD D,A 7816 JR Z,SASPRI
5668 INC IY 6388 ; 6860 LD I.A 7348 VERROT DEC D 7828 CALL CHOSUB
5678 EX AF.AF' 6398 ; 6878 LD B,0 7358 JR Z.UEREXI 7836 LD BC, 1
5688 LD A,(HL) 6408 ESTADO DEFB 0 7368 SRL B 7848 o rr C
6888 LD HL,61696
5698 INC HL 6418 NU8L80 DEFB 1 6898 INTCRE LD (H L),242 7378 RR E 7858 SASPRI EX AF.AF'
5788 EXX 6420 ; 6900 INC HL 7380 JR VERROT 7868 DEC A
5718 LD L,A 6438 ; 6918 DJNZ INTCRE 7398 VEREX1 LD (HL),B 7870 JR NZ,BUCHAL
5728 LD A,(HL) 6448 D1HEXS LD E,<IY+2) 6920 LD (H L),242 7480 INC H 7880 DEC BC
5738 OR C 6458 SLA E 6930 LD DE.0R1GSC 7418 LD (HL),E 7898 RET
5748 INC H 6468 SLA E 6940 LD HL,16384 7420 DEC H 7908 ;
5758 LD C, (HL) 6478 SLA E 6950 LD A ,192 7430 DEC L 7910 CHOSUB LD HL,COORDX
5768 EX AF,AF' 6480 JP CONTIN 6960 1NILAP EX AF.AF' 7440 JR NZ,ROTACU 7920 LD (CALP01+1),HL
5778 LD L,A 6490 D1NEYS LD E,<1Y*3) 6978 PUSH1 HL 7458 INC H LD KL.DIHEXS
7938
5788 LD A, 8 6588 C0NT1N LD D.8 6988 LD 8C.32 7468 INC H 7948 LD (ANCALT*1),HL
5798 LD B,(HL) 6518 AND A 6998 LD1R 7478 DEC C CALL CHOREA
7950
5888 DEC H
7968 RET NC
5818 OR (HL)
7978 LD HL,COORDY
5828 LD L,A
7980 LD (CALPOI+1),HL
5838 EX AF.AF'
7990 LD HL.DINEYS
5848 EX DE.HL
8660 LD (ANCALT*1),HL
5858 AND (HL)
8010 CHOREA LD A,8
5868 OR E
8820 CALL COORDS
5878 LD (HL),A
8030 EX DE.HL
5888 INC HL
8646 LD A,C
5898 EX DE.HL
8856 CALL COORDS
5988 EXX
5918 DJNZ LOBYTS 8668 AND A
5928 ADD HL.DE 8878 SBC HL.DE
5938 ADD 1Y.DE 8888 LD A,B
EXX 8898 JR NC.BIENCO
5948
5950 LD A, C 8186 LO A,H
5968 PONUDO OR 0 8116 CPL
5978 EX DE.HL 8126 LD H,A
5980 AND (HL) 8138 LD A,L
5998 OR B 8146 CPL
6888 LD (HL),A 8158 LD L,A
6818 SIMAL LD A, 0 8168 INC HL
6828 ADD A,L 8178 LD A,C
6838 LD L(A 8188 BIWCO CALL DITABS
6848 AOC A,H 8198 ANCALT JP 8
6 GRANDES EXITOS EN UNO
MAS UN JUEGO GRffnS(DUET) P ta s-
^RSTÓ N c a ss e ^
an h b »ad
PLUSBO NUSG AM E
DUET. PREVIOUSLY
UNRELEASED,
SIMULTANEOUS
TWO-PLAYER ACTION
duet
D a vid LÓPEZ GUAITA
3231 PUSH HL 3878 INC HL 4518 LD (IX *11) ,D 5158 CALL FAeER 5798 AMD 786866111
3248 LD HL,NUEPOS 3888 LD D,(HL) 4528 LD (1X412),A 5168 POP BC 5888 AND A
3258 LD E,A 3896 LD H,D 4538 LD HL.BUFFER 5178 POP IX 58)8 JP Z,EXACT
3268 LD <HL),E 3988 LD l,E 4548 INC (HL) 5188 JP FOLLOU 5828 INC C
3278 LD HL.HORIZ 3918 LD DE.ANTD1R 4558 JP ADIOS 5198 ALNT PUSH IX 5838 EXACT CALL D1RPAD
3288 LD (HL),8 3928 LD A.L 4568 ZLAUNC LD 1X,8FDFD 5288 PUSH BC 5848 FAe PUSH BC
3298 POP HL 3936 LO (DE),A 4578 LD ( I X ) ,195 5216 LD C,(1X41) 5856 LD B,8
3388 RET 3946 LD A,H 4588 LD HL, 1NTPR 5228 LD 8,(1X42) 5868 PUSH DE
3318 AMJO LD A ,2 3958 INC DE 4598 LD (1X41),L 5238 LD E,(IX+3) 5876 LDIR
3328 ADD A,8 3966 LD (DE),A 4668 LD (1X42),H 5248 LD D,(IX44) 5888 POP DE
3338 ADD A, D 3978 POP DE 4618 LD HL.8FE88 5258 LD L,(IX *5 ) 5896 POP BC
3348 CP 192 3988 Re 4628 LD BC, I88FD 5268 LO H,<1X46) 5988 LD A,D
3358 RET NC 3998 PUTTER PUSH DE 4636 ESCRIB LD (HL),C 5276 CALL 1MPRESS 5918 AND 788888111
3368 PUSH HL 4888 PUSH BC 4648 INC HL 5288 POP BC 5926 CP 7
3378 LO HL.NUEPOS+l 4818 LD B,B 4658 DJNZ ESCRIB 5298 POP IX 5936 JP Z,TB41
3388 SUB 8 4628 LD C,A 4668 LD (HL),C 5388 JP FOLLOU 5948 INC D
3398 LO D,A 4836 LD 0,8 4678 LD A,IFE 5318 A60RRA PUSH BC 5958 JP FAei
3488 LD (HL),D 4848 LD E,7 4688 LD 1 ,A 5328 LD C ,(lX 4 l) 5968 T0M1 LD A.E
3418 LD HL.VERTI 4856 CALL NULTI 4698 IH 2 5336 LD B,(IX42) 5976 ADD A, 32
3428 LD (HL>,4 4866 LD DE,BUFFER*i 4788 Re 5346 LD E.ÍIX43) 5988 JP C.T0N2
3436 POP HL 4876 ADD HL, DE 4718 1NTPR PUSH AF 5358 LD D,(IX*4) 5996 LD E,A
3446 RO 4886 POP BC 4728 PUSH BC 5368 CALL BORRA 6886 LD A,D
3456 ARRIBA LD APD 4896 POP DE 4738 PUSH DE 5378 POP BC 6816 SUB 7
3468 SU8 2 4186 Re 4746 PUSH IX 5388 JP FOLLOU 6828 LD D,A
3478 Re C 4118 JOYST DI 4758 PUSH HL 5398 HLUE60 XOR A 6636 JP FA ei
3488 PUSH HL 4128 LD IX,D1NEN 4768 LD C,8 5468 LD (BUFFER),A 6848 T0M2 LD E|A
3496 LD D,A 4136 LD C,(IX> 4776 LD IX.BUFFER41 5416 R e 838 6656 INC D
3588 LD HL.NUEPOS* 1 4146 LD B,<1X+1 4788 QUEDA? LD A,(BUFFER> 5428 POP HL 6868 F A ei DJNZ FAe
3516 LD <HL),D 4158 LD (1X42),6 4798 CP C 5436 POP IX 6871 Re
3528 LO HL,VERTI 4168 LD (IX i3 ),8 4888 JP 2.HLUE60 5448 POP DE 6888 BORRA
3536 LD (HL),1 4171 LD IX,NUEPOS 4818 LD A ,(IX ) 5458 POP 8C 6896 LO A.E
3548 POP HL 4188 LD L, (IX) 4828 CP 2 5468 POP AF 6188 SRL E
3558 Re 4198 LD H ,(IX M ) 4838 JP Z.AFAST 5476 El 6116 SRL E
3568 MULTI LD HL ,8 4288 PUSH HL 4846 CP 1 5488 R eí 6128 SRL E
3578 LD A ,16 4218 POP IX 4858 JP Z,ALNT 5496 6RAFIC EQU 65512 6138 AND A
3588 TRIU BIT 8, E 4228 LD HL,AMPOS 4868 CP 3 5588 SU1TCH EOU 65588 6148 JP 2 ,BORRAI
3598 JR 2 ,TOPI 4238 LD E, (HL) 4878 JP Z,ABORRA 5516 AMPOS EQU 65561 6158 INC C
3688 ADD HL.8C 4248 INC HL 4888 PUSH BC 5528 NUEPOS EQU 65583 6168 BORRAI CALL DIRPAO
3618 TOPI CCF 4256 LD D,(HL) 4898 LD C,(1X41) 5536 BUFFER EQU 62886 6178 80RRA2 PUSH 8C
3628 SRL D 4266 INC HL 4988 LD B,(IX42) 5548 SALTO EQU 6286) 6188 XOR A
3636 RR E 4278 LD (HL),E 4916 LD E ,(IX*3) 5558 ATR EQU 65585 6196 PUSH DE
3648 SLA C 4288 INC HL 4928 LD D,(1X*4) 5568 DIMEN EQU 65566 6286 HILAN LD (DE),A
3658 RL B 4298 LD <HL),0 4938 LD A ,(1X45) 5578 H0R1Z EQU 65588 6216 INC E
3668 DEC A 4386 IN A ,(223) 4948 CALL PAINT 5588 VERTI EQU 65569 6228 DEC C
3678 JP NZ.TRIU 4316 BIT »,A 4956 POP BC 5598 AKTD1R EQU 65518 6236 JP NZ.MILAN
3688 Re 4328 JP Z.JOYSTl 4968 FOLLOU PUSH IX 5666 TABLA EQU 65515 6246 POP DE
3698 TABLER LO HL.HORIZ 4338 CALL DEREC 4976 POP HL 5618 FAeER LD A,E 6256 POP BC
3788 LD A,(HL) 4348 J0YST1 IN A ,(223) 4986 LD A ,7 5628 AND 766688111 6266 LD A,D
3716 INC HL 4358 BIT 1|A 4998 ADD A.L 5638 SLA A 6278 AND 786666111
3728 ADD A,(HL) 4368 JP Z,J0Ye2 5888 JP NC,PENSE 5648 ADD A.L 6288 CP 7
3738 SLA A 4378 CALL IZBUI 5818 INC H 5656 JP NC.MAZ 6298 JP Z.T0M3
3748 PUSH AF 4388 J0Ye2 1N A, (223) 5828 PENSE LD L.A 5668 INC H 6388 INC D
3758 LD HL.GRAFIC 4398 BIT 2, A 5638 PUSH HL 5678 MAZ LD L.A 6318 JP 80RRA3
3766 LD A,<HL) 4488 JP Z.J0YCT3 5848 POP IX 5688 PUSH DE 6328 T0M3 LD A>E
3778 INC HL 4418 CALL ABAJO 5856 INC C 5698 LD E, (HL) 6336 ADD A ,32
3786 LO H,< HL) 4428 J0YST3 IN A ,(223) 5861 JP QUEDA? 5788 INC HL 6348 JP C.T0M4
3798 LD L,A 4436 BIT 3,A 5878 AFAe PUSH IX 5718 LD D,(HL) 6358 LD E,A
3886 POP AF 4448 JP 2 ,CANSIA 5888 PUSH BC 5728 PUSH DE 6368 LD A,D
3818 ADO A,L 4458 CALL ARRIBA 5896 LD L ,(IX 4 l) 5736 POP HL 6376 SUB 7
3828 JP NC,TABLl 4466 JP CAMBIA 5188 LD H,(1X42) 5748 POP DE 6388 LD D,A
3838 INC H 4476 TOPAIN LD (IX +7) ,4 5118 LD C, ( IX+3) 5758 LD A,E 6398 JP B0RRA3
3848 TABLl LD L.A 4488 LD (IX«8),C 5128 LD B,(IX44) 5766 SRL E 6488 T0M4 LD E,A
3858 PUSH DE 4498 LD ( IX+9),8 5136 LD E,(IX45) 5776 SRL E 6418 INC D
3868 LD E,< HL) 4588 LD (1X«18),E 5146' LD D,(1X46) 5788 SRL E 6426 BORRA3 DJNZ B0RRA2
4431 RET 7888 RET 7738 TGM2I LD A ,L
¿448 D1RPRN PUSH DE 7898 DIRPAD LD A,D 7748 sue E
¿458 PUSH HL 7188 SLA A 7756 ADD A ,32
¿4 ¿8 POP DE 7116 SLA A 77¿e JP C.T0M22
¿478 CALL DIRPAD 7126 AND X I1188886 7776 LD L,A
¿488 PUSH DE 7138 0R E 7788 LD A ,H
¿498 POP HL 7148 LD E,A 7794 SUB 7
¿588 POP DE 7156 LD A,D 7888 LD H,A
¿5)8 RET 71 ¿6 AND X I 1888888 7816 JP INPR3
¿528 PA1NT PUSH AF 7178 SRL A 7828 T0N22 LD L,A
¿538 SRL 8 7188 SRL A 7838 INC H
¿548 SRL 8 7196 SRL A 7848 JP INPR3
¿558 SRL B 7288 PUSH AF 7858 IMPR2 SRL L
¿5¿8 LD A,E 7216 LD A|D 78¿8 SRL L
¿578 AND 7.846881 1 1 7228 AND X86888111 7878 SRL L
¿588 AND A 7236 LD D,A 7888 CALL DIRPAN
¿598 JP Z, XEXAC 7248 POP AF 7898 PUSH IX
¿¿88 INC C 7258 0R D 7988 PUSH DE
¿¿IB XEXAC LD A,D 72¿6 SET ¿,A 7916 POP BC
¿¿21 AND X66668111 7276 LD D,A 7928 POP DE
¿¿38 AND A 7288 RET 7938 LD A,C
¿¿48 JP Z,YEXAC 7296 1NPRES PUSH BC 7948 1MPR7 PUSH BC
¿¿58 INC B 7388 POP IX 7958 LD 8, A
¿¿¿8 YEXAC SRL D 7316 LD A |L 79¿8
¿¿78 SRL D 7328 AND X88888111 7978 PUSH AF
¿¿88 SRL D 7338 LD B,A 7986 LDIR LD A,(DE)
¿¿98 SRL E 7346 AND A 7998 XOR (HL)
¿788 SRL E 7358 JP Z.IMPR2 8888 LD <HL),A
¿718 SRL E 73¿8 SRL L 8818 INC DE
¿728 PUSH DE 7378 SRL L 8828 INC L
¿738 POP HL 7388 SRL L 8838 DJNZ LDIR
¿748 CALL D1RAT 7396 CALL D1RPAN 8848 POP AF
¿758 POP AF 7488 INPR3 PUSH DE 8858 LD B,A
¿7¿8 LD H,C 7411 LD 0,6 88¿8 DEC B
¿778 RAIN1 LD C,H 7428 LD C,8 8678 DEC HL
¿788 PUSH DE 7438 IHPR5 LD A,(IX) 8888 PUSH AF
¿798 PAIN2 LD (DE),A 7448 PUSH BC 8898 LD A,H
¿888 INC DE 7458 IMPR4 SRL A 8166 AND X888881 11
¿816 DEC C 74¿8 RR C 8118 CP 7
¿828 JP NZ.PA1N2 7478 DJNZ INPR4 8128 JP Z.TTNl
¿836 POP DE 7488 ADD A , D 8138 LD A ,L
¿846 LD L,A 7496 XOR (HL) 8)48 SUB B
¿856 LD A,E 7588 LD (H L),A 8158 LD L.A
7518 INC L 81 ¿8
¿8¿6
¿878
¿888
ADD A ,32
JP
INC D
NC,SINCA 7528
7536
LD
LD
D,C
C,B
8178
8188 TTM1
INC H
JP 1NPR¿
LD A .L
DEM O 1
¿898 7548 POP BC 8198 SU8 6
5 BORDER 0 INK 7: PR PER 0: C
¿988 SINCA LD E,A 7556 INC IX 8288 ADD A ,32 L E fiR 2 4 9 9 9 : FOR a = 65500 TO 6 5 5 2 0
75¿8 DEC E : POKE a ,0 NEXT a
¿918 LD A ,L 8216 JP C,TTN2 10 POKE 6 5 5 0 6 , 3 : POKE 6 5 5 0 7 ,1 6
¿928 DJN2 PAIN1 7578 JP NZ.INPR5 8228 LD L,A POKE 6 5 5 0 5 , 4 : POKE 6 5 5 1 0 , 5 6 : P
OKE 6 5 5 1 1 , 1 9 9 POKE 6 5 5 1 2 , 8 0 : PO
¿938 7588 LD A,D 8238 LD A,H KE 6 5 5 1 3 , 1 9 5 : LORD ""C O D E 5 0 0 0 0 :
¿948 RET 7598 XOR (HL) 8246 SUB 7 LORD "" C O D E 5 0 5 0 0 : LORD ""C O D E
51000 RRNDOMIZE USR 6 3 4 5 0 RRND
¿958 DIRAT LD A,H 7¿88 LD (H L),A 8258 LD H,A O M IZE USR 6 4 4 0 1
¿9¿6 SHA A 7¿18 POP DE 82¿8 JP 1MPR¿ 20 RRNDOMIZE USR 6 3 8 4 9 : PRUSE
1: GO TO 20
¿978 SHA A 7¿28 DEC D ' 8276 TIN2 LD L.A 6 0 0 0 FOR R = 50000 TO 5 0 0 3 0 S T E P 2
7¿34 RET Z 8288 INC H : POKE R ,6 8 : POKE ( R + l ) , 1 9 7 : NEX
¿988 SHA A T R: GO TO 20
¿996 ADD A ,858 7¿46 LD A,H 8296 1NPR¿ POP AF 6 0 1 0 GO TO 10
7866 LD D,A 7¿58 AND X88888111 8388 POP BC
7818 LD A,H 7¿¿8 CP 7 8318 DJNZ 1MPR7
7828 AND 7 7¿78 JP Z.T0M21 8328 RET LISTADO 1.1 DUMP: 50.0 00. N.° BYTES: 30
7838 RRCA 7¿88 LD A , L 8338 ZOUIT LD A,83F
7848 RRCA 7¿98 SUS E 8348 LD I,A LÍNEA DATOS CONTROL
7858 RRCA 7788 LD L,A 8358 IN 1 1 38C738C778C758C7B8C7 1499
7718 INC H 83¿B RET 2 38C798C738C7F8C718C8 1532
78¿8 ADO A ,L 3 38C738C7D8C738C738C7 1435
7478 LD E,A 7728 JP IMPR3 8378 ZFLA8
En la línea 2470 comien gistros, y después se ob Además, si el exceso de
za a pokear los valores en IMPRESOR serva si hay algún gráfico desplazamiento es 0, salta
IX según el criterio que ya POR INTERRUPCIONES que imprimir. Si no hay nin a IMPR2, en la cual lo hace
antes te he explicado. Incre guno, se realiza un rst 38h más rápidamente, ya que
menta el contenido de buf para actualizar el teclado no debe rotar nada.
fer, para indicar que se ha La rutina ZLAUNC, en la con la rutina de la ROM. Si BORRA empieza en la lí
añadido un gráfico, y ob línea 4560, establece las in estás usando esta rutina nea 6080. Comprueba si la
serva si ATR es distinto de 0, terrupciones en modo 2. desde Código Máquina, posición está desplazada de
en cuyo caso debería saltar ZLAUNC parece excesiva puedes quitar esa orden. alguna columna, y si es así
a TOPAIN. mente complicada, ya que Para acabar recupera todos incrementa el ancho en la lí
TOPAIN deja los datos en las interrupciones se esta los registros y vuelve al Ba nea 6150. Llama a DIR
el buffer para que se pinte blecen con tres órdenes, pe sic. PAD, para calcular la direc
el sprite después de impri ro no es así. Si hay más gráficos para ción en el archivo de panta
mirlo. Finalmente, incre imprimir, el ordenador con lla; pone a 0 los bytes de
menta de nuevo el conteni Una interrupción se fija al IX apuntando a la dirección pantalla de cada sean; des
do de buffer, regresa y cargar en el registro I un va del buffer toma el prefijo, y pués recicla la dirección de
vuelve al Basic reponiendo lor que será el byte de ma en base a él salta a las ruti pantalla y halla la dirección
las interrupciones. yor peso de una dirección. nas dee preparación de da del sean inferior del anterior
En caso de que se hubie El byte de menor peso se to tos, que son AFAST, ALNT, entre las líneas 6260 y
ra escogido IMPRES, el pro ma del valor del bus de da ABORRA y una última que 6420. Repite esto hasta que
cedimiento sería muy simi tos, que en teoría debería los manda a PAINT. A la acaba con el alto de la zo
lar. La diferencia sería que valer 255. vuelta de cada una de estas na a borrar y retorna.
habría que imprimir dos Sin embargo, el interface rutinas, se añade IX 7 y si PAINT empieza por divi
gráficos, uno para borrar el Kempson puede hacer que quedan más gráficos se re dir el alto por ocho y si las
sprite anterior y otro para este valor cambie, y no sa pite la operación. Finalmen posiciones horizontales no
imprimir el nuevo. La direc bremos la dirección resul te se pone a 0 buffer y se corresponden a alguna co
ción del sprite anterior la to tante. Para solucionarlo, la vuelve al Basic. lumna precisamente incre
maría de ANTDIR, y la po rutina llena desde FE00 h Cada una de estar rutinas menta el ancho. Llama a Dl-
sición del registro IX, en el hasta FEFFh toda la memo de preparación (AFAST, RAT, subrutina que calcula
cual la habíamos dejado ria con el dato FDh. Así cai ALNT, etc.), hacen lo mis la posición en el archivo de
desde la línea 1790. Solta ga donde caiga la interrup mo. Toman los datos del atributos en base a dos
ría a TOPAIN si fuera nece ción siempre tomará como buffer y llaman a cada una coordenadas cargadas en
sario, y para finalizar vuel valor de salto FDFDh. de las rutinas de impresión, HL, y devuelve el resultado
ve al Basic. Con esto hemos En esa dirección tenemos de borrado o de coloreado. en DE. A la vuelta a la ruti
acabado la segunda parte, la memoria justa para hacer Empezaré explicando na empieza a llenar la zo
y llegamos al impresor por un ¡pINTPR. En INTPR pri FASTER. En ella se toma el na de los atributos con el
interrupciones. mero se salvan todos los re exceso de bits de desplaza valor del registro A. Des
miento con respecto a la co pués calcula la dirección en
lumna, se multiplica por 2 y el archivo de atributos de
se busca en la tabla. Des bajo de la actual posición y
LISTADO 1.2DUMP:5uaa. N.° BYTES: 257 pués se carga en HL la di lo repite hasta que acaba
rección de comienzo del con el alto.
sprite, y llama a DIRPAD, Aquí finaliza la explica
LÍNEA DATOS CONTROL rutina que calcula la direc ción del funcionamiento;
ción de la memoria de pan ahora voy a decirte cómo
X 01 8 0 0 18003C003C007E0 879
2 07E00FF00FF000000FF0 996 talla donde se debe empe puedes hacerlo.
3 0E700F700F700F700F70 634
4 0FF00003000F003E00FE 58 9 zar a imprimir el sprite. Al
5 03FC03FC05F80EF81F70 1168
6 23B07BC0E3806F002200 1026 imprimir cada sean, vuelve USO DE ACTION
7 1C000800000000000000 36 a tomar el ancho, calcula la
8 0000FEC0E2F0FPFCF2FF 1911 ¡
9 FRFFE2FCFEF0FEC00000 1923 dirección de la pantalla que Para empezar, éstas son
10 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 1C00 36
11 2P006B00E3807BC03BB0 1054 1 está debajo de la anterior las direcciones para activar
12 1F700EF805F803FC03FC 1168 j entre las líneas 5900 y
13 00FE003E000F00030FF0 58 9 y desactivar la rutina:
14. 0E300EF00E300FB00E30 631 6050 y después decremen- 63450 Origen de la ruti
15 0FF000000FF00FF007E0 996
16 0 7 E 0 0 3 C 0 0 3 C 0 0 1800180 879 ta el alto hasta que éste lle na y dirección donde debes
17 00100038004400DE01C7 562
18 03D60D C40EF81F701FO 0 1022 ga 0, en cuyo caso vuelve llamar para redefinir teclas.
19 3FC03FC07F007C00F000 1001 ! al Basic. 63849 Dirección de inicio
20 C0000000000000000000 192 1
21 037F0F613F7D FF7BFF77 1182 IMPRES es muy parecida; de la subrutina de actualiza
22 3F770F7F037F00000000 454
23 00000000C000F0007C00 556 la diferencia está en que an ción de posición con che
24 7F003FC03FC01FP01F70 971
25 0EF80DC403D601C700D6 1102 tes de imprimir cada byte queo del teclado. Si vas a
26 00440038001000000000 140 tiene que rotarlo, y pasar hacer un movimiento lleva
1 _ parte de él a otros bytes. do por esta rutina deberás
llamarla periódicamente. 65014 Dirección para Si piensas hacer lo prime con IMRES entonces debe
También se encarga de in desconectar el impresor por ro, deberán introducir los rás hacer una tabla, y si
troducir los datos en el buf- interrupciones. Hay dos po datos como ya he expuesto usas FASTER dos tablas,
fer. sibilidades: que desees usar antes. Para ello deberás to aparte naturalmente de los
64401 En esta dirección la rutina introduciendo di mar el contenido de buffer, propios gráficos. La prime
se activa el impresor por in rectamente en el buffer da multiplicarlo por 7 y añadir ra tabla debe tener las di
terrupciones. Una vez pues tos y esperando a que se im le al resultado 62001. En recciones de los gráficos, (o
to en marcha, no es necesa priman o definiendo las te tonces tendrás la dirección de las segundas tablas, en el
rio que vuelvas a llamar clas y llamando a la rutina donde debes colocar los da caso de FASTER) y se debe
aquí de nuevo. del teclado. tos. Los introduces, incre de poder acceder a ella su
mentas el contenido de buf mando VERTI y HORIZ, mul
fer y ya está. tiplicando el resultado por
dos y añadiéndole GRAFIC.
DEM O 2p. Te recuerdo que cuando
uses IMPRES, la dirección En el contenido de la posi
será la del propio gráfico, y ción de memoria resultante
5 BORDER 0 : PR PER 0 : INK 7 : C si usas FASTER la dirección se debe de encontrar la di
L S : FOR a = 65500 TO 6 5 5 1 5 POKE será la de una tabla con las rección de inicio de otra ta
a , 0 : N EXT a : POKE 6 5 5 0 0 , 1 : POKE
6 5 5 0 5 , 6 : POKE 6 5 5 0 6 , 2 PO KE 6 5 5 0 direcciones de los gráficos bla o del gráfico, según el ti
7 , 1 6 : POKE 6 5 5 1 2 , 8 0 : POKE 6 5 5 1 3 , po de impresión. Cuando es
195 LORD "" C O D E 5 0 0 0 0 : LORD " " C desplazados.
ODE 5 1 0 0 0 : RRNDOMIZE USR 6 3 4 5 0 : Si usas la rutina del tecla otra tabla, es señal de que
RPNDOM IZE USR 6 4 4 0 1
10 RRNDOMIZE USR 6 3 8 4 9 : PR U SE do, lo primero que debes se usa FASTER, y en esa ta
1: GO TO 10
6 0 0 0 FOR R = 50000 TO 5 0 0 3 0 S T E P 2 hacer es darles a las varia bla deben estar las direccio
: POKE f l , 5 6 : POKE < R + 1 ) ,1 9 9 : NEX bles los contenidos correc nes de inicio de cada gráfi
T R
6 0 1 0 GO TO 10 tos. Piensa que si trabajas co desplazado. Para acce-
mmm
der a ella debe tomar el ex
ceso de pixels que nos resul
ta de restar la posición X de
la columna de pantalla de
su izquierda. El resultado es
un número entre 0 y 7. Des
pués lo multiplicas por dos
y lo añades al inicio de esta
segunda tabla, para tomar
de esa dirección la posición
de inicio del gráfico despla
zado. Esto último lo realiza
la propia rutina FASTER.
Es evidente que antes de
mover así un sprite deberás
de haber introducido estas
tabla(s) en la memoria, se
gún indique GRAFIC, que
normalmente vale 5 00 0 0.
Para dar color al sprite
que estás moviendo dale a
ATR un valor distinto de 0,
con el cual coloreará los
atributos del sprite.
UNA
AVENTURA
EN EL
OESTE
á s x s s a s ; í a s a ra s
^ERBE SOFTWARE. C/. NUÑEZ MORGADO, 11 -28036 MADRID. TELEF. (91) 3 Í4 _18"04
DELEGACION BARCELONA. C/. VILADOMAT, 114 - TELEF. (93) 253 55 60.
s mismos progra- K
creado ahora este J La continuación de uneia
, aún en gráficos y éxito de todos ios tiempos
¡nte increíbles han roe ha de salvarlo de una
haya sorprendido i tú podéis evitarloll
liGOS DEL
Toda rutina concebida
para manejar gráficos
y desplazarlos a lo
largo y ancho de la
pantalla, debe
cumplir algunos
requisitos básicos y
de entre ellos cabe
señalar como
fundamental, el que
sea capaz de detectar
si se ha producido un
HECCION
choque entre sprites
para poder obrar en
consecuencia. Con
este artículo se
pretende dar una
idea clara de las
técnicas que podemos
utilizar para
conseguirlo.
esulta difícil ima 22527d— a la que corres El fichero de imagen, sin y su nombre es PIXEL-AD.
ginar una rutina pondan. Ríos de tinta se han los atributos, ocupa 6144d La utilización de esta ruti
que mueva un vertido a fin de explicar la bytes y se encuentra dividi na es sumamente simple:
cierto número de forma en que éste está or do en tres bloques bastante basta llamarla conteniendo
figuras por la pan ganizado en el Spectrum. diferenciados entre sí; de tal en el registro B el valor de
talla, sin asignarles unas Organización que, por otra modo que si queremos pa la coordenada vertical, y en
coordenadas —verticales y parte, más de uno podría sar de una línea de la pan C el de la horizontal. La di
horizontales— a partir de calificar de «caótica» al oír talla a la inmediatamente rección del fichero de ima
las cuales podamos empe hablar de ella por vez pri inferior, tenemos que sumar gen correspondiente a esas
zar a imprimir los sprites y mera. Es de suponer que el valor 256d a la dirección coordenadas, nos será de
también, partiendo de ellas, muchos lectores conocerán en cuestión en lugar de 32d, vuelta en el reqistro doble
conocer si dos —o más— de el tema en profundidad, pe como cabría esperar. HL.
estas figuras se han puesto ro para aquellos que nunca La cuestión se complica Una última «pega» queda
en contacto. se han aventurado a inter todavía más si esa línea es por resolver; y es que
Basándose en esta premi narse en el tortuoso mar de tá en un tercio diferente al PIXEL-AD no fue concebida
I
sa, se hace evidente la ne la pantalla del Spectrum, que nos encontramos, con para operar en la parte in
cesidad de una rutina que trataremos de explicar bre lo cual en vez de 256d tene ferior de la pantalla —don
se encargue de transformar vemente su configuración y mos que sumar 2048d a la de el Spectrum presenta los
estas coordenadas en la di la manera en que podemos dirección en la que estemos mensajes de error y efectúa
rección del fichero de ima solventar los problemas que en dicho momento. los INPUTs.
gen —desde 16384d hasta esto nos plantea. El problema estriba, por Para arreglar esto, basta
lo tanto, en conocer nuestra cargar el acumulador con el
situación y la cantidad que valor 191 d y llamar a la ru
debemos de sumar, o res tina dos direcciones más
fHOQUES
tar, a esa dirección para ir adelante con lo cual, para
a donde pretendemos. nosotros, PIXEL-AD va a es
La solución la tenemos en tar situada en la posición
la propia ROM del ordena 8876d, teniendo en cuenta
dor, concretamente en la que el valor mínimo —0 —
posición 22AAh —8874d— de la coordenada Y se en-
LISTADO i
Las etiquetas V A R I, pantalla, aunque no resulta
VAR2, etc., que pueden ob demasiado complicado el 1® BORDER :0LORbe " "COD
servarse en el listado, están hacer que esto no sea así. E I¿4- CLS . LET fi =INT (BND
referidas a los parámetros Si queremos manejar grá
verticales y horizontales de ficos, lógicamente debere * # i í B< i f M E BÍNpÍRIoSEV IS
cada gráfico y su significa mos disponer de una tabla
do es: en memoria, que nos infor
me cuál es la situación de
VARI: Ordenada del re cada uno de ellos —también *^60 XNK1: | ; CF o |I ^ 0tti? IN¿
volver. puede indicarse su fase y BT . N É X
N ÉT
XT fí pRINT
.-.o t kjT RRT
T f f.®
,0
VAR2: Ordenada de la color, si los tuviera, o la di x'70 fo h / - « T V * ÑE&T f „
cruz. rección en que debe despla
VAR3: Ordenada de la zarse— a fin de que poda > e, S » í % ; "4i "T r t * x ',3 i; "
bala. mos ir moviéndolos secuen-
VAR4: Abscisa de la bala. cialmente, o llqgado el ca
VAR5: Abscisa de la cruz. so, hacer que alguno desa
parezca. %I . ^ 22, 4, 4
; "; S
" SYYHHBB 0
0L S
SHH IFT
IF T
En nuestro caso, no es po No es mala práctica el ac
p?§ § I r n d o h i z e usr 4®!®® 1; FLRS
sible efectuar un nuevo dis ceder a una tabla de este ti
Í t ® p ? R 3 NÍ 2 - " O T R R UEZ?“
paro hasta que el anterior po, mediante el registro in-
haya desaparecido de la dexado IX —formato LD then g0
...........o» ST
0P__
de ser, al menos, igual o un la se encontraría por enci
n cierto número de veces — ma de la cruz, pero sin lle
n nosotros decidimos cuán gar a entrar en contacto
n tas— mayor que la de la con ella, si es así, podemos
cruz. En tal caso, la sustrac regresar sin más miramien
o ción entre ambas deberá tos al bucle principal.
o ser un número positivo. En cambio, si la resta no
n De otro modo, querría dio como resultado un nú
i- decir que la bala —horizon mero positivo, es fácil llegar
e talmente— todavía no ha a la conclusión de que el dis
e llegado a la altura de la paro se encuentra por de
cruz. bajo de la cruz. Sólo nos
i- En el supuesto de que el queda comprobar si está a
disparo se moviese de dere menos de 15 —scans verti
n cha a izquierda, sería nece cales que ocupa el gráfico
u sario seguir los mismos pa de la cruz, menos uno— po
a sos, pero a la inversa, es de siciones de distancia de és
cir, restar de la abscisa de ta; en caso afirmativo se po LISTADO 2
ir la cruz, la de la bala, mirar ne de manifiesto la existen
I- si su resultado es positivo y
DUMP: 40.000 N.° BYTES: 420
cia de un choque. De lo con
e obrar en consecuencia. trario se retorna al bucle LÍNEA DATOS CONTROL
a Volviendo al caso que nos principal. 1 C D 9 E 9 C C D B E 9 C 3 E F B D B F E 1856
ocupa, lo siguiente es com 2 C B 4 7 C C 7 6 9 C 3 E F B D B F E C B 1741
is probar cuántas veces es Para finalizar, es posible 3 4 F C C 8 B 9 C 3 E F B D B F E C B 6 7 1670
4 C C 2 4 9 D 3 E 7 F D B F E C B 4 F C R 1543
i- que alguien se pregunte por 5 D 1 9 D F B 7 6 F 3 C D 6 4 9 D C D 3 B 1 7 04
mayor la abscisa del dispa 6 9 D C 3 R 0 9 D C B 4 F C 8 3 R 9 F 9 C 1524
qué, en el listado Basic la
ro que la de la cruz. 7 F E 9 7 C 8 C D 9 E 9 C 3 R 9 F 9 C 3 C 1557
e abscisa de la cruz es siem 8 3 2 9 F 9 C 1 8 13 C B 47 C 83 R 9 F 1099
Considerando que esta 9 9 C F E 1 7 C 8 C D 9 E 9 C 3 R 9 F 9 C 1525
o pre un número múltiplo de 10 3D 3 29 F 9 C 0 6 4 0 0 E 0 8 1150 615
última ocupa 16 pixels de C 3 3 E 1 0 F5 C 5 3 E B F C D R C 2 2 1379
ocho. 11
¡, ancho, si el resultado de la 12 0 6 0 3 1 R R E 7 7 2 3 1 3 10F 9 C 1 840
La respuesta es muy sim 13 0 5 F 1 3 D 2 0 E R C 9 0 6 9 5 0 E E 8 1175
i- resta fuese, pongamos por 14 1 1 8 0 C 3 3 E 1 0 F 5 C 5 3 E B F C D 1318
u caso, dos. Significaría que el ple: como no está pensado 15 R C 2 2 060 21 R R E77 23 131 0 603
16 F 9 C 1 0 5 F 1 3 0 2 0 E R C 9 0 6 2 8 1262
ir disparo se encuentra dos pi aue se mueva hacia los la 17 0 E 2 0 C 5 2 1 E 1 9 D 1 1 R 0 C 3 0 6 1036
i- xels a la derecha de la po dos, si intentamos imprimir 18 0 2 1R 7 71 3 2 3 3 6 0 0 2 3 10F7 553
19 7 9 E 6 0 7 2 8 0 E 4 7 2 1 E1 9 D 0 E 912
sición actual que ella ocupe. la en una coordenada hori 20 0 4 C B 1 E 2 3 0 0 2 0 FR 1 0 F3 C 1 1019
zontal que no sea múltiplo 21 1 1 E 1 9 D 3 E 0 2 F 5 C 5 3 E B F C D 1363
i- En nuestro ejemplo, se ha 22 R C 2 2 0 6 0 2 1 R R E 7 7 2 3 1310 603
considerado el número 12 de ocho, el gráfico tenderá
u como un valor aceptable, a aparecer en una que si lo 23 F9C105F13D 20ERC93RE0 1498
sea, de lo que se despren 24 9DFE00C03E0132E09D3R 1155
□ por lo que si la diferencia 25 9F9CD60232DF9CCDDE9C 1543
fuese mayor que esta canti de que su posición en pan 26 C93RE09DFE00C83RE19C 1533
talla no coincidirá con el va 27 FEF0300FCD D E9C3RE19C 1579
dad, se retorna al bucle 28 C60432E19CCDDE9CC9CD 1622
principal sin hacer más com lor asignado a su abscisa, 29 D E9C3E2032E19CRF32E0 1352
30 9D C93R D F9D FE00201B3R 1167
probaciones. con la consiguiente confu 31 BF9CFE96300EF5CD BE9C 1609
sión que esto produciría. 32 F1C 60 33 2B F 9CCDBE9CC9 1 5 91
En caso contrario, las 33 3E0132D F9D C93RBF9CFE 1353
coordenadas horizontales Por último, cabe decir que 34 1R380EFSCDBE9CF1D603 1 3 50
35 3 2 B F9 C C D B E9 C C 9 R F 32DF 1597
están ya suficientemente las condiciones impuestas 36 9 D C 9 3 R E 0 9 D F E 0 0 2 8 3 5 3R 1202
chequeadas, ocupémonos en el programa para que un 37 C19C473RE19C98382BFE 1364
38 0C30273RBF9C473RDF9C 1012
ahora de las verticales. choque se verifique son ab 39 983806FE023019180C3R 637
40 D F9C473RBF9C98FE0F30 1324
El proceso a seguir es muy solutamente arbitrarias, es 41 0BRF32E09D3E2032E19C 1142
similar al anterior: restamos decir, pueden variarse a 42 FBC9C3469C0000FC00FC 1377
a la coordenada Y de la ba gusto del consumidor y no
la, la de la cruz, si el resul existe ningún impedimento LISTADO 3
tado es positivo y menor de para hacerles los retoques DUMP: 50.000 N.° BYTES: 82
dos —scans verticales que necesario hasta conseguir
ocupa el gráfico del dispa que se adapten a nuestras LINEA DATOS CONTROL
ro— querrá decir que la ba pretensiones.
1 07FC02D 803FF63F00144 1143
la se encuentra impresa, co Se puede afirmar que el 2 10014413FF43F0088003 805
3 F0940400R9F800RB0800 988
mo máximo, dos posiciones mejor aprendizaje es, sin 4 RRC800RR1000RBE000BR 1137
por encima del gráfico de la duda, la práctica y las expe 5 00008200007C000003C0 449
6 03C003C003C003C003C0 975
cruz, con lo cual se hace evi riencias personales. Confío 7 FFFFFFFFFFFFFFFF03C0 2235
dente una colisión entre am en que este artículo haya 8 03C003C003C003C003C0 975
9 FCFC0000000000000000 504
bos sprites. Si la diferencia contribuido en algún modo
fuese mayor de dos, la ba a ello.
LISTADO EN SA M B LA D O R 648
658
JR N2,IMPRIM
RET
668 CRU? LD 6,149 ¡Ordenad a
ie ORG 48888 678 LD C.ME8 ¡Abscisa
28 CALI REVOL ¡Primera impresión del revolver 688 LD DE, NC388 ¡D ire ccion del g rá fic o de la cruz
38 CALI CRU2 ;T la cru z, con over 1 698 LD A.818 ¡Numero de scans v e rtic a le s
48 PRINC LD A,8FB ¡Chequea la te c la Q 788 1MPR1 PUSH AF
58 1N A , <UFE) 718 PUSH BC ¡Guarda coo rdenadas
68 BIT 8,A ¡Esta puls ada? 728 LD A,8BF ¡c a lc u la la d ire cc ió n
78 CALL 2,ARRIBA ¡s i 1 o e sta, mueve arrib a 738 CALL P1XEL ¡del fie hero de pan ta lla
88 L? A.8FB ¡Chequea la te c la U 748 LD 8,482
98 IN A,(UFE) 758 12 LD A,(DE) ¡E impr ifie
188 BIT 1,A ¡Esta puls ada? 768 XOR (HL) ¡del misn o modo que
ne CALI. 2,ABAJO ¡Si lo esta, mueve abajo 778 LD (HL),A ¡la sub ru tin a Revol
128 LD A ,KFB ¡Chequea la te c la T 788 INC HL
138 IN A,(UFE) 798 INC DE
148 BIT 4,A ¡Esta puls ada'5 888 DJNZ 12
158 CALL Z.D1SP ¡Si lo e sta, dispara 818 POP BC ¡Recupera c oordenadas y
168 LD A,87F ¡Chequea Symbol S h ift 828 DEC 6 ¡decrementa la ordenada hasta
178 IN A , <UFE' 838 POP AF ¡f in a liz a r la impresión
188 BIT !,A ¡Esta puls ada'' 848 DEC A
198 JP 2 ,CHOQUE ¡Si 1 o e sta, retorna al Basic 858 JR N2.IMPR1
288 El ¡S in cro n iza co n 868 RET
218 HALT ¡el b arrid o 878 IDIS LD 8,828 ¡Ordenad a del disparo
228 DI ¡de la p an tall a 888 LD C,828 ¡Abscisa
238 CALL MCRUZ ¡Mueve 1 a cruz y 898 PUSH BC ¡Guarda coo rdenadas
248 CALL MD1SP ¡el disp aro, s i se ha producido 988 LD HL.BUFER
258 JP COMPR ¡S alta a comprobación de choque 918 LD DE.8C3A8 ¡Dire ccion del g rá fic o del disparo
268 ARRISA BIT 1,A ¡Esta puls ada <a W*5
928 LO B.882
278 RET 2 ¡Retorna si lo esta
938 METE LD A,(DE) ¡Mete 1 os datos en
288 LD A ,(V A R I' ¡La o rdenada del revolver
948 LD (HL),A ¡el buf er e introduce
298 CP 897 ¡Ha alcanz ado el lim ite superior?
958 INC DE ¡un cero de spues de cada
388 RET 2 :Er caso a f¡ rm ativo, retorna
968 INC HL ¡lin e a a f i n de poder
318 CALL REVOL ¡Borra f ¡gura an te rio r
978 LD (H L),888 ¡rota r ío s s i la abscisa
328 LD A,(VARI) ¡Incr ementa en uno 988 INC HL ¡no fuese u n nuriero
338 INC A ¡la ordenada y la 998 DJN2 METE ¡m ú ltip lo de ocho
348 LD (VARI),A ¡uuel ve a in tro d u c ir
1888 LD A,C
358 JR REVOL ¡Imprime la fig u ra en la nueva p o sio o n 1818 AND 887 ¡Si lo es, sigue sin
368 ABAJO 81T 8,A ¡Esta pu ls ada la Q 1828 JR 2 ,SIGUE ¡hacer ninguna operación
378 RET 2 ¡Retorna si lo esta 1838 LD 8,A
388 LD A,(VARI) ¡La o rdenada del revo lver 1848 ROI LD HL.BUFER
398 CP 817 ¡Ha alcanz ado el 1 im ite in fe r io r '’ 1858 LD C.I84
488 RET 2 ¡En caso a fi rm ativo, retorna 1868 R02 RR (HL) ¡Rota lo s datos del
418 CALL REVOL ¡Borra f i gura antigua 1878 INC HL ¡bufer para SU
428 LD A,(VARI) ¡Tena la ordenada 1888 DEC C ¡p o s te rio r i npresion
438 DEC A ¡para decrem e n ta rla en uno 1898 JR N2.R02
448 LD (VARI),A ¡y vo Iver a in tro d u c irla 1188 DJN2 ROI
458 REVOL LD 8,848 ¡Ordenad a del revolver 1118 SIGUE POP BC ¡recupera c oordenadas
468 LD C,888 ¡Abscisa 1128 LD DE,BUFER ¡y lo in p n ie
478 LD DE.8C358 ¡Oiré ccion del g r á fic o del revo
1138 LD A ,882 ¡Numero de scans v e rtic a le s
488 LD A ,818 ¡Numero de scans v e rtic a le s
1148 INOI PUSH AF
498 IMPRIM PUSH AF 1158 PUSH BC
588 PUSH 8C ¡Guarda coo rdenadas LD A,8BF
1168
518 LD A.8BF ¡C alcu la la d ire cc ió n 1178 CALL P1XEL
528 CALL P1XEL ¡del Fie hero de p a n ta lla 1188 LD 8,882
538 LO B,883 ¡e in p ri ne 1198 ESCR LD A,(DE) ; Impr ir» e el g rá fic o
548 1MP8 LD A,(DE) ¡mezcla ndo lo s 1288 XOR (HL) ¡del disp aro mezclando
558 XOR (HL) ¡datos de 1 g r á fic o con 1218 LD (HL),A ¡el con tenido del
568 LD (HL),A ¡ lo que haya en p a n ta lla 1228 INC HL ¡bufer con lo que
578 INC HL 1238 JNC DE ¡haya en pa n ta lla
588 INC DE 1248 DJNZ ESCR
598 OJNZ 1MP8 1258 POP BC
688 POP BC ¡Recupera c oordenadas y 1268 DEC B
618 DEC B ¡decrementa la ordenada 1278 POP AF
628 POP AF ¡hasta conp le ta r la fig u ra 1288 DEC A
638 OEC A 1298 JR N2.IMD1
1388 RET 1438 CP 194 ¡ I m it e na xino, es p re ciso
1318 DISP LO A ,<1DEN) ¡Hay ya un disparo etectuado? 1448 JR NC.F1N0 ¡canbi pr el sentido
1321 CP M86 ¡En caso a f ir n a t iv o 1458 PUSH AF ¡Guarda ord e n id i
1336 RET N2 ¡retorna 1446 CALL CRU2 ¡borra la f i gura actual
1346 LO A ,881 ¡Ahora s i ha de haberlo 1478 POP AF ¡recupera o rdenada
1358 LO (1DEN),A ¡y lo hace constar 1488 ACO A ,883 ¡la incr ementa en tre s
1348 LO A,(VARI) ¡Tona la ordenada del revolver 1498 LO <VAR2),A ¡mpr me la cru 2
1378 SU8 882 ¡para decr enentarla en dos e 1788 CALL CRU2 ¡en su nu eva p o sició n y
1388 LO (VAR3),A ¡in tr o d u c irla en la del disparo 1718 RET ¡retorna
1398 CALL 101S ¡Imprime su g ra tic o y 1728 FINO LO A, 1 ¡In d ica qu e la cruz
1488 RET ¡retorna 1738 LO (DIREC),A ¡se nueve hacia abajo
1418 MDISP LO A,(IDEM) ¡Hay un disparo 1748 RET
1428 CP 886 ¡en pantal la? 1758 AEA LO A,(UAR2) ¡La o rdenada de la cruz
1438 RET 2 ¡Retorna si no lo hay 1748 CP RIA ¡ha alcanz ado el I i m te in t e r io r?
1448 LO A,(VAR4) ¡Su a bscisa ha alcanzado 1778 JR C.F1ND2 ¡Si es a s i, canbia su sentido
1458 CP 8F8 ¡el valor máximo? 1788 PUSH AF ¡Guarda la ordenada,
1446 JR NC,BORRA ¡Si e s a s i , restab lece paranetr 1798 CALL CRUZ ¡Borra la a n te rio r tig u ra
1478 CALL 101S ¡Borra la tig u ra a n terio r 1888 POP AF ¡recupera o rdenada
1488 LO A,(VAR4) ¡in c r ementa su 1818 SUB R83 ¡la decren enta en
1498 A00 A ,884 ¡abscisa en cuatro 1826 LO (VAR2>,A ¡tres unidades
1588 LO (VAR4),A ¡unid ades, 1836 CALL CRUZ ¡la m pri ne de nuevo y
1516 CALL ID1S ¡la m pri ne en la nueva po sició n 1848 RET ¡retorna
1528 RET ¡y retorna 1858 F1N02 XOR A ¡Ahora la cr uz ha de
1538 BORRA CALL ID1S ¡Borra gr á tic o del disparo 1848 LO (DIREC),A ¡nov erse hacia a rrib a
1546 LO A ,828 ¡restaur a su abscisa 1878 RET
1558 LO (VAR4),A ¡e in d ica que ya 1388 »SU8RUTlfW DE CHOQUE»
1548 XOR A ¡puede produ c irs e 1898 CCWPR LO A,(IDEN) ¡Hay un disparo
1578 LO <1DEN),A ¡un n uevo disparo 1988 CP 888 ¡en pantal la ’
1588 RET 1918 JR Z,VUELVE ¡Si n 0 lo hay retorna
1598 MCRUZ LO A ,( DIREC) ¡Si el indicador de sentido 1928 LO A , (VAR5) ¡Rest a a la abscisa
1488 CP 888 ¡es un nun ero d is t in t o de 8 1938 LO 8,A ¡del dispa ro
1418 JR N2,ABA ¡la cru z se mueve hacia abajo 1946 LO A,(VAR4) ¡la d e la cru 2
1428 LO A,(VAR2) ¡Si s u ordenada ha alcanzado el 1958 SBC A,B ¡si el res u ltad o no es un numero p o s itiv o
1946 JR C,VUELVE ¡reto rna
1978 CP R8C ¡Si lo es, ha de ser nenor de doce
1988 JR NC,VUELVE ¡En caso c o n tra rio retorna
1996 LD A.ÍVAR2) ¡Rest a a la ordenada
2888 LO 8,A ¡del dispa ro
2618 LD A , (VAR3J ¡la d e la cruz
2828 SBC A ,8 ¡Si el res ultado no es p o s itiv o
2838 JR C,N0 ¡s a lta a la subrutm a No
2848 CP R82 ¡Si es pos it iv o , pero nayor de dos
2658 JR NC,VUELVE ¡ret orna
2848 JR CHOQUE ¡si es menor, se detecta un choque
2878 NO LD A,(VAR3> ¡Rest a a la ordenada
2888 LD B,A ¡de la cru z
2898 LD A,(VAR2) ¡la d el disparo
2188 SBC A.B ¡s i el res u l tado es
2118 CP I8F ¡menor de quince, se detecta un choq ue
2128 JR NC.VUELVE ¡si es nayor retorna
2138 CHOQUE XOR A ¡Restaura el byte
2148 LD (IDEN),A ¡iden tit ic a d o r del
2158 LO A ,128 ¡disparo , repone el valor
2148 LO (VAR4),A ¡m ic 1al de su abscisa
2178 El ¡ h a b ilita las in terru p cio n e s
2188 RET ¡y retorna al Bas i c
2198 VUELVE JP PR1NC ¡Regresa al bucle p n n c ip il
2286 D1REC DEFB «8
2218 1DEN DEFB 88
2228 BUFER DEFS *4
2238 PIXEL EQU 8874
2248 VARI EOU 48895
2258 VAR2 EQU 48127
2248 VAR3 EQU 48159
2276 VAR4 EOU 48141
2286 VAR5 EQU 48129
Recorta o copia este cupón y envíalo a Hobby Press, S.A. Apartado de Correos n? 8. 28100 Alcobendas (Madrid).
D e se o recibir en mi domicilio las cintas de MICROHOBBY que a continuación indico, al precio de 625 ptas cada una. Cada cinta lleva grabados los programas publicados por MICROHOBBY durante
cuatro números consecutivos (1 al 4. 5 al 8, 9 al 12. etc ).
Números Números Números. _ Números___ _
Nombre Apellidos _ __ Fecha de Nacimiento.
Domicilio_ Localidad . Provincia. C. Postal Teléfono .
Fonos do |ago (Para agilizar tu envió, es importante que indiques el código postal)
□ Talón bancario adjunto a nombre de Hobby Press. S A. □ Giro Postal a nombre de Hobby Press. S.A., n ? ___________________
□ Contra reembolso (supone 125 ptas. más de gastos de envío y es válido sób para España).
□ Tarjeta de créditon?DDDD DODD PULID DCDD (Sólo para pedidos superiores a 1.500 ptas.)
Visa □ Masler Card □ American Express □ Fecha de caducidad de la tarjeta___________Nombre del titular (si es distinto) Fecha y firma
(Si b deseas puedes sofcitartas por teléfono (91) 734 65 00)
V M Ja JÜ ¿k
de Sesto, 50. 28009 Madrid (Metro O'Donnell
T e l. (91) 2 7 5 9 6 16 - 2 7 4 7 5 0 2
„c r nflT|S A ELEGIR
- - ‘ o o s
SP EC T R U M PLUS +
PTAS. PTAS. C A S C O S M Ú S IC A STEREO
FIST II ................................ 875 XEVIUS .............. 875 19.800 P T S (incl. IVA).
DEEP STRIKE ...................... 875 lOth FRAME ................... .. 1.200
SUPER SOCCER ................... 875 LEADERBOARD ................ .. 1.200 OFERTASJOUSTICKS
TERRA CREST ..................... 875 EXPRESS RAIDER ........... .. 875
DOUBLE TAKE ..................... 875 ACE OF ACES .................. .. 1.200
SHORT CIRCUIT ................... 875 IMPOSSABALL ................ .. 875
ARKANOID ......................... 875 S IG M A 7 ......................... .. 875
UCHI MATA ......................... 875 BAZZOKA BILL .................. .. 875
INSPECTOR GADGET ........... 875 DRAGON'S LAIR II ........... .. 875
SHAO LIN’S ROAD .............. 1.750 SHADOW SKIMMER ......... .. 875
SOFTAWARE AMSTRAD DISCO 2.250 (Incluido regalo calculadora)
I M H N I !
P
comprensión va- memoria. Estos gráficos tab q gn cada panta.
^ o ro b a y « d b j* *
S tm á l K habito- ' - » ^ n^ hgt . o : lo siguiente m a n e r a ^ O -
ción.
iH H H
R
4760: Imprime la panta CLAS. una dire c ama A
lla. 5010-5030: Incrementa ción del ar PCOOR,
4770: Se llama a PCOOR. la coorde chivo de hace una
4780-4790: Se realiza nada Y del pantalla. pausa y cie
una pausa. muñeco y 5460-5580: Calcula las rra el bucle
4800: Salto a VOLV. se almace c o o rd e n a sobre BA
4830-4850: Aquí se lle na. das que hay JAR.
ga si se ha 5040: Recupera la pan debajo del 6050-6110: Si está en la
pulsado la talla. muñeco en pantalla 1,
tecla de sal 5050: Llama a PCOOR. su parte iz 4 0 7 salta a
to. Si el mu 5060-5070: Hace una quierda. CONT10.
ñeco ya es pausa. 5590-5620: Halla el co 6120-6130: Decrementa
taba saltan 5080: Vuelve a teclas. lor de estas el número
do, SALTO 5120-5140: Pone FOR c o o rd e n a de pantallas
y lo almace
na en PANT.
6140-6160: Actualiza
las coorde
nadas del
muñeco y se
salta a EMP.
6170-6190: Si el muñeco
está en el pi
so de aba
jo salta a
CONT11.
6200-6220: Di smi nuye
el número
de pantalla
en 3. 19 ; * H i i i H H i i « « i < « i < i 518 DEFB 16,16,199,228 1818 OUT (254),A
6230-6270: Actualiza 28 :* * 528 DEFB 14,24,232,228 1828 LO (MODO),A
las coorde 38 ¡«RUTINA DE ÑAPEADO « 538 DEFB 14,24,25,221 1838 LD HL.SUEL
nadas del 48 ¡* » 548 DEFB 24,24,74,221 1848 LD DE,SUELO
muñeco y 58 558 DEFB 16,24,147,221 1858 CALL SITUA
¿8 548 DEFB 32,14,194,221 1868 LD B,8
salta a EMP.
71 ORO 58988 578 DEFB 14,24,5,222 1878 REP1 PUSH BC
6280-6350: Aumenta en
88 ENT 58888 588 V ENTAN DEFB 24,24,54,222 1888 CALL IMPR1
3 el número 598 DEFB 48,24,127,222
98 1898 POP BC
de p a n ta 188 JP SEGUIR 688 DEFB 14,24,248,222 1188 LO A,(POSX)
lla, se ac 118 418 TEJAD DEFB 32,14,41,223 1118 ADD A ,32
tualizan las 128 1MPR1 EOU 84888 628 DEFB 32,24,186,223 1128 LD (POSX),A
coordena 138 PANT EQU 58888 638 DEFB 16,14,283,223 1138 DJNZ REP1
das del mu 148 COORY EOU 58881 448 DEFB 16,24,234,223 1148 LD HL.TECH
ñeco y salta 158 COORX EOU 58882 65» DEFB 14,24,29,224 1158 LD DE,TECHO
a EMP. 188 FORMA EOU 58883 448 PUERTA DEFB 8,32,78,224 1168 CALL SITUA
178 SALTO EQU 58884 478 ESCAL DEFB 32,32,111,224 1178 CALL SUBI
6380-6420: Si está en la
188 CONT EOU 58885 688 DEFB 24,24,248,224 1188 LD A , 175
pantalla 6 ó 198 POSX EOU 23388 698 DEFB 16,24,57,225 1198 LD (POSY),A
9 salta a 288 POSY EOU 23381 788 OEFB 16,24,186,225 1288 CALL SUBI
CONT13. 218 NODO EQU 23382 718 1218 JR CONT 1
6430-6470: Aumenta el 228 ANCHO EOU 23383 728 DPAN DEFB 284,175 1228 SUBI LD 8,8
número de 238 ALTO EQU 23384 738 DEFB 221,175 1238 REP2 PUSH BC
pantalla, se 248 COLOR EOU 23385 748 DEFB 242,175 1248 CALL 1MPR1
act ual i zan 258 INFER EOU 23306 758 OEFB 7,176 1258 POP BC
288 SUPER EOU 23387 748 DEFB 48,176 1268 LD A,(POSX)
las coorde
27» 778 DEFB 89,174 1278 ADD A ,32
nadas del
288 TABLA DEFB 14,24,64,215 788 DEFB 124,176 128» LD (POSX),A
muñeco y se 298 DEF8 16,24,113,215 798 DEFB 151,174 1298 DJNZ REP2
vuelve a 388 DEFB 16,24,162,215 888 DEFB 192,174 RET
138»
EMP. 318 PUERT2 DEFB 8,32,211,215 818 1318 CONT1 LD A,(PANT)
6480-6500: Si el muñe 328 ESCAL2 DEF8 32,32,244,215 828 1328 CP 3
co está en 338 DEFB 24,24,117,214 838 SEGUIR LD A ,2 1338 JR 2.MUR02
el piso de 348 DEFB 14,24,198,214 848 CALL 81681 1348 CP 6
abajo salta 358 TECHO DEFB 32,8,239,214 858 LD A ,7 1358 JR 2.MUR02
388 MURO DEFB 14,32,14,217 868 LD <23693),A CP 9
a CONT5. 1348
378 SUELO DEFB 32,14,81,217 878 LD (23424),A 1378 JR Z.MUR02
6510-6570: Actualiza 388 DEFB 24,14,146,217 888 LD A ,94 1388 LD HL.PARl
las coorde 398 DEFB 48,24,195,217 898 LD (COORX),A 1398 LD DE,PARED
nadas, recu 488 DEFB 32,8,68,218 988 LD A ,127 1488 CALL SITUA
pera la pan 418 PARED DEFB 8,32,93,218 918 LD (COORY),A 1418 LD HL.PUEl
talla, llama 428 DEFB 24,16,124,218 928 XOR A 1428 LD DE,PUERTA
a PCOOR y 438 DEFB 24,14,175,218 938 LD (SALTO),A 1438 CALL SITUA
se vuelve a 448 DEFB 24,14,224,218 948 INC A 144» LD A,(PANT)
TECLAS. 458 OEFB 14,24,17,219 958 LD (FORMA) ,A 1458 CP 3
6580-6640: Actualiza 488 DEFB 16,24,44,219 968 LD A ,8 1448 JR C.C0NT2
478 DEFB 32,14,115,219 978 LD (PANT),A 1478 LD HL.PUE2
las coorde
488 DEFB 24,16,188,219 988 1488 LD DE,PUERTA
nadas, lla 498 DEF8 32,32,229,219 998 EMP CALL 3435 1498 CALL SITUA
ma a REST, 588 DEFB 24,32,182,228 1888 LD A,1 1588 LD HL.PAR2
llam a a
PCOOR y
vuelve a TE
CLAS.
1511 LD DE, PARED 2818 JR TEJADO 2518 CP 4 3818 POP 8C 3518 PUE4 DEFB 147,8,48
1528 CALL SITUA 2828 MUR LD A, <PANT) 2528 JR 2 ,ESC 3828 DJNZ OTRA 3528 MUR2 DEFB 135,8,22
1538 JR C0NT2 2838 CP 2 2538 CP 7 3838 LD H L,14384 3538 MUR3 DEFB 43,248,22
1548 HUR02 10 HL.MUR3 2848 JR 2 ,TEJADO 2548 JR 2 ,ESC 3848 LD DE,35888 3548 PUE7 DEFB 95,248,48
1558 LO DE.MURO 2858 LD HL.MUR1 2558 JR C0NT4 3858 LD BC.4912 9558 MUR4 DEFB 147,248,22
1541 CALL SITUA 2848 LD DE.MURO 2548 ESC LD HL.ESC1 3848 LDIR 3548 PUE8 DEFB 135,248,48
1578 LO A.(PAKT) 2878 CALL SITUA 2578 LD DE.ESCAL 3878 JP SE6U2 3578 PAR4 DEFB 135,248,4
1588 CP 3 2888 LD HL.PAR5 2588 CALL SITUA 3888 3588 MUR5 DEFB 95,248,22
1598 JR 2 ,TRES 2898 LD DE, PARED 2598 C0NT4 LD A,(PAN!) 3898 SITUA 01 3598 SUEL DEFB 31,8,22
1488 LO HL.PUE7 2188 CALL SITUA 2488 CP 4 3188 LD A,(DE) 3488 TECH DEFB 183,8,48
1418 LO DE.PUERTA 2118 LD HL.PUE5 2418 JR 2 ,ESCB 3118 LD (ANCHO),A 3418 MUR4 DEFB 43,8,22
1428 CALL SITUA 2128 LD DE.PUERT2 2428 CP 9 3128 INC DE 3428
1438 LO HL.PAR1 2138 CALL SITUA 2438 JR 2 ,ESCB 3138 LD A,(DE) 3438 FIGURA DEFB 44,215
1448 LO DE,PARED 2148 LD A,(RANT) 2448 JR CINT5 DEFB 113,215
3148 LD (ALTO),A 3448
1458 CALL SITUA 2)58 CP 1 2458 ESCB LD HL.ESC2 DEFB 44,215
3158 INC DE 3458
1448 LO HL.PUE8 2148 JR 2 ,TEJADO 2448 LO DE.ESCAL2 DEF8 142,215
3148 LD A,(DE) 3448
1478 LO DE,PUERTA 2178 LO KL.PAR4 2478 CALL SITUA (1NFER),A 3478 DEFB 184,225
3178 LD
1488 CALL SITUA 2188 LD DE,PARED 2488 C0NT5 LO A,(PANT) 3488 DEFB 234,223
3188 INC DE
1498 LO HL.PAR4 2198 CALL SITUA 2498 CP 7 3498 DEFB 184,225
3198 LD A,(DE)
1788 LD DE, PARED 2288 LD HL.PUE4 2788 JR N2.SI6 LD (SUPER),A 3788 DEFB 29,224
3288
17)8 CALL SITUA 2218 LD DE.PUERT2 2718 LD HL.MUR4 3218 LD A ,( HL) 3718
1728 LO HL.MUR4 2228 CALL SITUA 2728 LD DE .MURO 3228 LD (POSY),A 3728 SEGU2 LD A ,14
1738 LO DE.MURO 2238 LD HL.MUR2 2738 CALL SITUA LD (ANCHO),A
3238 INC HL 3738
1748 CALL SITUA 2248 LD DE.MURO 2748 3248 LD A ,( HL) 3748 LD A ,24
1758 JR COMI 2 2258 CALL SITUA 2758 (POSX),A (ALTO),A
3258 LD 3758 LO
1748 TRES LD HL.MUR5 2248 TEJADO LD A,(PANT) 2748 SI 6 LD A,(PANT> 3248 INC HL 3748 LD A ,7
1771 LD DE,MURO 2278 CP 4 2778 LD B,A (COLOR),A
3278 LD A,(HL) 3778 LD
1788 CALL SITUA JR NC.C0KT3 2788 LD DE.DPAN-2
2288 3288 LD (COLOR),A 3788 CALI BFORM
1798 C0NT2 LO A.tPAWT) 2298 LD DE.TEJAD 2798 BUC1 INC DE PUSH HL CALL PCOOR
3298 3798
1888 CP 1 2388 LD HL.TEJ 2888 INC DE CALL IMPRI
3388 CALI. IMPR1 3888
1818 JR Z,MUR 2318 CALL SITUA 2818 DJN2 BUC1 3318 POP HL 3818
1828 CP 4 2328 LD B ,5 2828 LO A,(DE) 3328 El 3828
1838 JR Z.MUR 2338 REP3 PUSH BC 2838 LD L,A RET 3838 TECLAS LD A,«FE
3338
1848 CP 7 2348 LD B ,8 2848 INC DE 3848 IN A, (BFE)
3348
1858 JR Z.MUR 2358 REP4 PUSH BC 2858 LO A,(DE) 3858 BIT 1 ,A
3358
1848 LD HL.PAR3 CALL IMPR1 2848 LO H,A JR 2 ,PUL 12
2348 3348 PARI DEFB 95,248,4 3848
1878 LO DE,PARED 2378 POP BC 2878 LD A,(HL) LD A, «FE
3378 PUE1 DEFB 43,248,48 3878
1888 CALL SITUA 2388 LD A.(POSX) 2888 LD 8, A 3888 IN A,(«FE)
3388 PUE2 DEFB 135,248,48
1898 LD HL.PUE3 2398 ADD A ,32 2898 OTM PUSH BC BIT 2,A
3398 PAR2 DEFB 147,248,4 3898
1988 LD DE.PUERT2 2488 LD (POSX),A 2988 INC HL JR Z.PULOE
3488 PAR3 DEFB 95,8,4 3988
1918 CALL SITUA 2418 DJN2 REP4 2918 LD A, (HL) DEFB 147,8,4 3918 UOLV LO A.87F
3418 PAR4
1928 LO A.ÍPANT) 2428 LO A , <POSY) 2928 INC HL DEFB 43,8,48 IN A,(«FE)
3428 PUE3 3928
1938 CP 3 2438 SUS 14 2938 LO B,A DEFB 135,8,48 3938 BIT 1, A
3438 PUE4
1948 JR C.MUR 2448 LO (POSY),A 2948 LO DEJABLA-4 DEFB 135,14,47 3948 CALI. Z.PSALT
3448 ESC1
1958 LD HL.PAR4 2458 POP BC 2958 8UC2 INC DE DEFB 43,288,47 LD A.IBF
3458 ESC2 3958
1948 LO DE, PAREO 2448 DJNZ REP3 2948 INC DE DEFB 151,128,2 3948 IN A,(BFE)
3448 VENT
1978 CALL SITUA 2478 LO HL.VEMT 2978 INC DE 3478 TEJ DEFB 175,8,2 3978 BIT 8, A
1988 LO HL.PUE4 2488 LD DEMENTAN 2988 INC DE 3488 MUR1 DEFB 95,8,22 3988 RET 2
1998 LO DE.PUERT2 2498 CALL SITUA 2998 DJNZ 8UC2 3498 PAR5 DEFB 43,8,4 3998 LD A,(SALTO)
2888 CALL SITUA 2588 COMI3 LD A,(PAm> 3888 CALL SITUA 3588 PUE5 DEFB 43,8,48 4888 OR A
6818 CALL I1F3D
6828 JR BAJAR
6836
6848
6858 PUE12 LD A,(PANT)
6868 CP 1
FIG. 2 6878
6688
JR
CP
2.C0NT18
4
6898 JR 2 ,CONT1•
7, 224., 3 , 1 9 2 , 1 , 1 2 8 , 1 , 1 2 8 , 1 , 1 2 8 , 9 ,
144-.89, 1 5 3 / 2 1 7 , 1 5 5 , 2 1 7 , 1 5 5 , 2 1 7 , 1 6188 CP 7
55,211,203,205,179,66,66,60,60,0 6116 JR 2.C0NT18
,0,0,0,0 6128 DEC A
6138 LD (PAÑI),A
6148 LD A, 232
4818 JP N2,SUBIR 6158 LD (COORX),A
4518 PUSH BC 5818 C0NT7 LD A.ÍCOORY) 5511 El
6168 JP ENP
4828 CALL 2 ,BAJAR 4528 CALL 8874 5828 ADD A ,2 5528 RET 6170 CONT 18 LD A,(COORY)
4838 JR TECLAS 4538 CALL BATRI 5838 LD (COORYÍ.A 5531
6180 CP 95
4848 4548 POP BC 5848 CALL REST 5548 BAJAR LD A,(COORX)
6198 JR c ,c o r n il
4858 4558 LD A,(DE) 5058 CALL PCOOR 5551 LO C,A
6208 LD A.ÍPANT)
4868 PULI 2 LO A.ÍCOORX) 4566 CP 68 5068 LD BC, 5 5548 LO A.ÍCOORY)
6218 SU8 3
4878 DEC A 4578 JP 2 ,PUEDE 5878 CALL 8IF3D 5571 SU8 24
6228 LO (PAÑÍ),A
4888 LD C.A 4586 CP 22 5888 JP TECLAS 5581 LD 8, A
6238 LD A ,55
4898 LD A.ÍCOORY) 4598 JP Z.VQLV 5898 RET 5591 PUSH BC
6248 LD (COORY), A
4188 SUB 23 4686 CP 67 5188 5688 CALL 8874
6258 LD A , 18
4118 LD B.A 4618 JR N2.C0NT9 5110 5618 CALL BATRI
6268 LD (COORX), A
4128 PUSH BC 4628 CALL 8918 5128 CAMB1 LD A ,5 5621 POP BC
6278 JP EMP
4138 CALL 8874 4638 CALL 11733 5136 LD (FORMA),A 5631 LD A,(DE) 6286 CIIÍT11 LD A,(PANT)
4148 CALL 8ATRI 4648 OR A 5148 RET 5641 CP 48
6290 ADD A ,3
4158 POP BC 4658 JP N2.VOLU 5158 5651 RET 2 6368 LD (PANT),A
4168 LD A,(DE) 4668 CONT9 LD A,(FORMA) 5168 BFORM LD A,(FORMA) 5668 CP 22 6316 LD A , 18
4178 CP 68 4678 INC A 5170 LD HL.FIGURA-2 5678 RET 2 6326 LO (COORX),A
4188 JP 2.PUEI2 4688 CP 5 5188 LD 8, A 5688 CP 67 6338 LD A , 159
4198 CP 22 4698 JR C.C0NT6 5198 BUC3 INC HL 5698 JR NZ,CONT12 6346 LO (COORY), A
4288 JR 2 ,VOLO 4788 LD A,1 5288 INC HL 5788 CALL 8918
6350 JP EMP
4218 CP 67 4718 CONT6 LD (FORMA),A 5216 DJN2 BUC3 5718 CALL 11733 6368
4228 JR N2.C0NT8 4728 CALL 8F0RM 5228 LD A , (HL) 5728 OR A
6370
4236 CALL 8918 4738 LD A.(COORX) 5236 LD (1NFER),A 5738 RET N2
6388 PUEDE LD A,(PANT)
4248 CALL 11733 4748 ADD A ,2 5248 INC HL 5748 CCNTI2 LD A,(COORX) 6398 CP 6
4258 OR A 4758 LD (COORX).A 5258 LD A,(HL) 5758 AOD A , 15
6400 JR 2 .CONT 13
4268 JR NZ.VOLV 4768 CALL REST 5268 LD (SUPER).A 5768 LD C,A
6418 CP 9
4278 C0NT8 LD A,(FORMA) 4778 CALL PCOOR 5278 RET 5778 LD A . ÍCOORY)
6428 JR 2 ,CONT i 3
4288 INC A 4788 LD BC ,5 5288 5788 SU8 24
6438 INC A
4298 CP 9 4798 CALL I1F3D 5298 PCOOR LD A,(COORX) 5798 LD B, A
6448 LD (PANT),A
4386 CALL NC.CAHBl 4888 JP VOLV 5388 LD (POSX),A 5888 PUSH BC
6458 LD A.1B
4318 CP 5 4818 5316 LD A.ÍCOORY) 5818 CALL 8874
6468 LD (COORX), A
4328 CALL C.CAM81 4826 5326 LD (POSY) ,A 5828 CALL 8ATR1
6478 JP B4P
4338 LD (FORMA),A 4838 PSALT LD A,(SALTO) 5338 CALL 1MPR1 5838 POP BC
6488 CONT 13 LD A,(COORY)
4346 CALL 8F0RM 4846 OR A 5348 RET 5848 LD A.ÍDE) 6490 CP 95
4358 LD A.(COORX) 4858 RET N2 5358 5858 CP 48 6588 JR C.CCNT15
4368 SUB 2 4868 INC A 5368 BATRI LD A,H 5868 RET 2
6518 LO A ,87
4378 LD (COORX).A 4878 LD (SALTO),A 5376 RRCA 5878 CP 22
6526 LD (COORY),A
4388 CALL REST 4888 LD A ,5 5388 RRCA 5888 RET 2
6536 LD A, 222
4398 CALL PCOOR 4898 LD (CONT),A 5398 RRCA 5898 CP 67
6546 LD (COORX),A
4488 LD BC, 5 4988 RET 5488 AND 3 5988 JR NZ.CCKT14
6556 CALL REST
4418 CALL 81F3D 4918 5416 OR 858 5918 CALL 8918
6566 CALL PCOOR
4428 JR VOLO 4928 5428 LD D,A 5928 CALL 11733
6570 JP TECLAS
4438 4938 SUBIR LD A,(CONT) 5438 LD E,L 5938 Ofl A 6580 CONT15 LD A , 127
4448 4948 DEC A 5448 RET 5948 RET N2
6596 LD (COORY),A
4458 PULDE LD A.ÍCOORX) 4958 LD (CONT),A 5456 5958 C0NT14 LD A.ÍCOORY)
6680 LD A, 222
4468 ADD A, 16 4968 OR A 5468 REST DI 5968 SUB 2
6618 LD (COORX),A
4478 LD C.A 4978 JR N2.C0NT7 5476 LD H L,35888 5978 LD ÍCOORY),A
6628 CALL REST
4488 LD A.ÍCOORY) 4988 LD (SALTO), A 5488 LD DE,16384 5988 CALL REST
6636 CALL PCOOR
4498 SUB 23 4998 CALL BAJAR 5496 LD BC.6912 5998 CALL PCOOR
6646 JP TECLAS
4588 LO 8,A 5866 JP TECLAS 5588 LD1R 6888 LD BC.5
■■MMMMMMHnMMBi ■■■■■■■■■■■i
En alguna ocasión
hemos comentado los
diferentes programas
que sobre gráficos se
encuentran en el
mercado. En estas
páginas encontraréis,
a modo de guía, el
análisis de las
características de
cada uno. Desfilarán
diseñadores gráficos,
ampliaciones de
memoria y
ensambladores; es
decir todas las
herramientas que
facilitarán nuestro
trabajo. Por razones
obvias, algunos de
sobra conocidos por
los usuarios de
Spectrum ocuparán
un lugar mínimo,
dedicando mayor
espacio a programas
de reciente aparición
que no han sido
sometidos hasta
ahora al minucioso
examen que pasaron
sus precedesoras.
emos eliminado
H
de esta guía
aquellos p r o
gramas que no
han superado el
nivel de calidad establecido.
Creemos que esta selección
beneficiará tanto a los mu
chos asiduos a los progra
mas de dibujo, como a to
dos aquellos que se inicien
en este mundo, sustituyendo
el lápiz y el papel por él, sin
duda, más cómodo diseño a
través del ordenador.
"THE ART STUDIO"
«The Art Studio» fue cali
ficado en su momento como
la mejor utilidad de dibujo
para Spectrum situándola
pareja al potente «Mac
Paint» del Macintosh. Entre
sus peculiaridades destacan
el sencillo manejo por ico
nos y la posibilidad de em
plear ratón, ¡oystick o recu
rrir al teclado. Además de
ser el único programa con
menú de impresoras.
Consta de un menú prin
cipal con once opciones di
ferentes, de las que se ge
neran submenús específicos.
La forma de acceder a ellos
es trasladar un icono sobre
la opción deseada y dejar
volar nuestra imaginación
combinando las amplias po
sibilidades de este progra
ma de dibujo.
Las opciones del menú
principal son: bINbW DdÜ IW
PRINT, permite sacar una
copia por impresora de la
pantalla, eligiendo el tama
ño y justificando a nuestro MICROMñNIR
antojo a derecha o izquier
da.
FILE, se utiliza para vol
car en pantalla los gráficos
salvados en cinta. Permite
además de salvar, cargar y
verificar archivos, o mezclar
dos pantallas.
ATTRS, sirve para modifi
car los atributos con los que
trabajemos, cambiando co
lor de tinta, papel o borde
y detallando brillo, flash, ¡n-
verse, etc.
PAINT, podremos elegir
para dibujar entre lápiz,
spray y brocha, modifican
do la configuración dentro
de un submenú de dieciseis
especificaciones.
MISC, incluye un variado
submenú formado por sien
te opciones que permiten
desde borrar la pantalla,
crear un rejilla de los atribu
tos u observar la pantalla
completa.
UNDO, elimina la última
operación realizada en la
pantalla.
W IN D O W , permite deli
mitar ventanas y trabajar
con ellas aprovechándonos
de su utilidad, empleando
las dieciseis variantes del
menú.
FILL, rellena con color o
con cualquiera de las 64
tramas una superficie pre
viamente delimitada.
MAGNIFY, para ampliar
una zona de la pantalla en
tre dos y ocho veces, y tra
bajar en ella.
TEXT, introduce texto en
pantalla; permite modificar
[ ]8 P h
•9 9 de chip a chip
"PAINT PLUS"
Todos los usuarios de
STORE/RETRIEUE
Spectrum interesados en al
guna medida en los progra 0 TEMPORRRY STORE
mas de diseño gráfico cono 1 LONG TERM STORE
cerán el «Paint Box», uno de
los primeros programas que
aparecieron. «Paint Plus»,
basado en este programa,
perfecciona muchas de las
opciones de su predecesor.
Presenta un menú con
cuatro opciones. El editor
de UDG posee cuatro ban
cos gráficos; permite mane
jar los gráficos realizando
rotaciones, inversiones y
ampliaciones de pantalla
entre otras cosas. La segun
da opción es el Plotter, o
modo de alta resolución,
permite el manejo de la
pantalla punto por punto;
así como salvar y cargar
pantallas, borrar la última
operación y tiene cinco tra
mas diferentes de fill. La op
ción Screen planer posibili
ta la introducción de textos
y gráficos, así como cam
biar los colores de los carac
teres. La última opción, Or-
ganiser, se presenta en un
programa adicional que sir
ve para almacenar un má
ximo de cinco pantallas y
grabarlas en un fichero.
«Paint Plus» dispone de
una página de ayuda que
solucionará en parte el pro
blema de memorizar un ele
vado número de teclas. Sin
embargo no permite traba
jar en las dos líneas inferio
res de la pantalla, ya que
no admite la posibilidad de
desplazar el menú, ni alma
cenar figuras.
" D Y N A M IC G R A P H IC S "
Dynamic Graphics es un
paquete de diseño formado
por tres programas que te
permitirán experimentar en
el campo del dibujo desde
tu Spectrum.
Los tres programas se
complementan para dar co
mo resultado una útil herra
mienta de gran calidad. El
primer programa es un di
señador de sprites. El se
gundo permite la creación
de subrutinas de dibujo pa
ra incorporarlas a los pro
gramas del usuario; y el ter
cero llamado «Drawmaster»
que trata de la creación de
dibujos.
En el primer programa
encontraremos cuatro me-
nús que permiten el acceso
a más de veinticinco coman
dos. Las posibilidades son PERIFÉRICOS
muchas, podremos desde
borrar la ventana, invertir Todo diseñador gráfico
la, modificarla, insertar un debe cumplir dos objetivos.
carácter, utilizar un carácter Por una parte permitir des
como un UDG, dividir la de el ordenador la creación
ventana o grabar en cinta de diseños dependiendo sus
los dibujos. posibilidades del software
El segundo programa dis elegido, y por otro lado la
pone de cinco comandos medida en que facilita su
que permiten cargar en cin realización al usuario. Esta
ta los dibujos realizados con última razón hace que mu
el primer programa, grabar chos de los programas de
la subrutina, autodestruir el dibujo admitan que a la ho
programa, ir al Basic y ra de manejarse la sustitu
crear la subrutina. ción del teclado o el ¡oystick
El programa «Drawmas por periféricos especialmen
ter», especialmente creado te creados para hacer más
para dibujar, permite que el cómodo su uso. Sin duda
cursor esté en cuatro modos son los ratones y los lápices
diferentes: draw, erase, ópticos los que se ajustan a
over y trans. Podremos de este cometido.
limitar el número de pixels AMX MOUSE y STAR
por el que queremos que se MOUSE son los dos ratones
mueva el cursor, jugar con compatibles con Spectrum.
los comandos para modifi Permiten el manejo a través
car los atributos, rellenar de ¡conos de las opciones
con tinta una parte del dibu del software que lo admi
jo y cargar y salvar en cinta tan. Su fácil manejo evita te
las pantallas. ner que recurrir constante
Un paquete interesante, mente a hojas de consulta
en el que aunque el progra para su utilización.
ma de dibujo es algo limita Los lápices ópticos permi
do, comparado con otros ten trabajar sobre la panta
programas del mercado, sin lla en lugar del papel. Des
embargo combinados fo r tacan el lápiz óptico Inves-
man una interesante utili trónica y lápiz óptico DK
dad gráfica. Tronics.
GET, para leer el teclado
'BETA B A S IC " sin usar ENTER, de forma si
«Beta Basic» es una am milar a INKEY $.
pliación del Basic del Spec- KEYWORDS, controla la
trum que añade considera utilización de las funciones
bles ventajas a la hora de de Beta Basic, como tokens
programar y trabajar con el o comandos introducidos
ordenador. Añade 26 nue carácter a carácter.
vas instrucciones y diez fun O N , permite hacer un
ciones. Además se introdu GOTO o GOSUB a un nú
cen mejoras en algunos co mero de línea particular,
mandos y se han añadido dependiendo de una situa
algunos rasgos como cursor ción dada.
parpadeante y un break pa PLOT, para trazar una
ra Código Máquina. Las cadena de hasta 32 carac
nuevas instrucciones se ob teres al igual que los pixels
tienen de forma sencilla des usuales.
de el modo de gráficos, sus RENUM, para renumerar
tituyendo los gráficos por las líneas de un programa.
los comandos. SORT, ordena cadenas,
Las instrucciones más im números o letras en orden
portantes son entre otras: ascendente o descendente.
ALTER, para manipular TRACE, permite la depu
los atributos de la pantalla. ración de un programa en
Permite cambiar la pantalla Basic.
a una combinación de atri
butos, o por ejemplo crear
un gráfico utilizando tinta
del mismo color que el pa
pel y luego modificar la tin
ta.
AUTO, pone en funciona
miento una numeración
automática de líneas.
BREAK, especial para
C/M.
CLOCK, controla la ope
ración de un reloj de 24 ho
ras con alarma.
DEF PROC, END PROC,
PROC, estos tres comandos
sirven para llamar un pro
ceso, definirlo con un nom
bre y terminarlo.
DELETE, borra todas las
líneas de un bloque delimi
tado del programa.
DO y LOOP, ¡unto con las
calificaciones whilw y until
proporciona una estructura
de control ventajosa respec
to al Basic originario del
Spectrum.
DPOKE, significa doble
poke, utilizando la dirección
especificada y la siguiente.
EDIT, permite editar un
número de línea.
nas informativas, etc. Tam "GENS Y M ONS"
bién incluye tres juegos de
caracteres en cuatro tama Estos dos programas de
ños distintos que hacen po la compañía Hisoft son dos
sible 12 tipos de letra dife herramientas imprescindi
rentes. El tratamiento de bles para todos aquellos
gráficos y atributos ha sido que se inicien en el mundo
potenciado con comandos de la programación.
para alterar los valores de «Gens» es un poderoso
los atributos y almacenar o ensamblador del Z80, el mi
modificar bloques de gráfi- I croprocesador del Spec
eos. También permite el lia- I trum; su principal caracterís
mamiento a subrutinas pre- I tica es la diferencia de ma
viamente definidas. «Mega- nejo respecto a otros en
basic» proporciona, al mis sambladores disponibles,
mo tiempo, dos modos dis- que le convierten en un pro
tintos para producir soni grama profesional por su
dos. extensión y sus amplias po
«Megabasic» contiene, sibilidades.
además de la ampliación, Un ensamblador, básica
un segundo programa de mente es una herramienta
nominado «Megaspectrum que permite programar en
Sprites» especialmente dise Código Máquina de forma
ñado para el tratamiento de muy sencilla, trabajando de
gráficos en pantalla. Po modo complementario con
drán definirse formas, colo el relocalizable desensam
res, desplazamientos y velo blador Mons. Sustituye el
"MEGABASIC" cidad de animación, visua árido sistema binario, por
lizar las distintas secuencias una serie de nemónicos,
Ampliar el sistema opera de imágenes para la edición que constituyen el código
tivo de cualquier ordena y corrección de las mismas. fuente; el propio programa
dor, supone que aumenten Las ventajas de esta po traslada a números este có
considerablemente las posi tente utilidad son considera digo, que tras ensamblarlo
bilidades de los mismos a la bles dejándonos libres una se convierte en el código
hora de programar. «Me- vez almacenados los datos
gabasic», como bien indica de unos 20 K de memoria.
su nombre, incorpore al Ba
sic del Spectrum nuevos co
mandos que se introducirán
tecleando directamente el 0000 F3 DI
>PC 0759 F3 22 27 AF 2A 2E AF
nombre; diferencia respec SP 9C0B 2B 2D 65 33 58 27 ED
to a otros programas que XV 5C30 FF CD 00 1F 9C 00 00
IX 03D4 04 0C 0D 20 FD 0E 3F
contenían en las teclas ori HL 0000 F3 AF 11 FF FF C3 CB
ginarias los nuevos coman DE 00 12 15 FF FF FF FF FF 2A
BC 0053 El 6E FD 75 00 ED 7B
dos. fiF 004.4. Z U
IR 3F56
«Megabasic» tiene un sis
tema de edición muy com FFF4. 10 FFFC 42 0004 FF
FFF5 10 FFFD 42 0005 C3
pleto que incluye la posibi FFF6 10 FFFE 3C 0006 CB
lidad de desplazar el cursor FFF7 00 FFFF 00 0007 11
FFF8 00 >0000 F3< 0008 2A
horizontal y verticalmente, FFF9 4-2 0001 AF 0002 5D
FFFfl 42 0002 11 000A 5C
borrar líneas, copiar algu FFFB 42 0003 FF 000B 22
nas para transpasarlas a la
>
fcí
línea de edición para facili
tar la correción de los pro
gramas. El aspecto que más
nos interesa en el tratamien
to de gráficos es la amplia
gama de comandos refe
rentes a ventanas, borrado,
scrolls con diferentes venta
objeto. El «Gens» es tam
bién totalmente reubicable, Muchas son las opciones
es decir, podemos hacer ae este ensamblador, pero
que funcione instalándolo como analizar detenida
en cualquier zona de la me mente cada una de ellas su-
moria; esta es la ventaja pondría escribir de nuevo
que le sitúa por encima ae un libro de instrucciones, co
mo el que acompaña a am
otros ensambladores, ya
que evita la posibilidad de bos programas, nos limita
que coincidan en una misma remos a señalar que algu
dirección el programa sobre nas de ellas son: ensambló
el que trabajamos y el en le rápido, producir un lista
samblador o el desensam do de la tabla de símbolos
blador. no generar ningún código
°b|eto y dirigir el listado del
El «Gens» se caracteriza
por la rapidez en la ejecu ensamblador a la impreso
ra.
ción, y añade otras venta
jas como incluir un ensam
blado condicional, muchos
comandos del ensamblador
y una tabla de símbolos bi
naria.
"T H E C O PE M A C H IN E "
Todos los usuarios intere
sados en la programación
en Código Máquina cono
cerán sin duda el popular
paquete monitor/ensambla-
dor Editas, de la casa
Gremlins. Este paquete ha
sido actualizado por esta
misma compañía y ha dado
lugar a la nueva versión
3.1, que recibe el nombre
globar de «The Code Ma
chine», pudiendo ser adap
tados ambos programas a
casi todos los modelos de in
terface de impresora.
El editor ensamblador
trabaja en modo 40 colum
nas divididos en distintos
campos. El primero permite
introducir los comandos y
renumerar las líneas; el se mandos de edición más uti permitirá estudiar y trabajar Dos herramientas impres
gundo para la utilización de lizados son: LIST, EDIT, sobre nuestras propias ruti cindibles para adentrarnos
etiquetas; el tercero destina AUTO, NEW, RETURN, nas reubicarlas o analizar en el mundo de la progra
do a los nemónicos y el últi RENUM y DELETE. las rutinas de otros progra mación de una forma mu
mo para operandos. Los co- El programa monitor nos mas. cho más asequible.
l _________
Para solicitar
tus tapas,
llámanos
al tel. (91)
734 65 00
No necesita encuadernación,
gracias a un sencillo
sistema de fijación
que permite además
extraer cada revista
cuantas veces sea necesario.
N O N . ’S T I N
SPECTRUM • MSX
AMSTRAD »C B I#64
*fs á