Beruflich Dokumente
Kultur Dokumente
m mulSIDl'UDAPOB
JIAIlW'UI ftAIBOB, S,A.
4 Introducci6n
ConcepWsbsicos.Codif1C8Cinbinaria, Bit Tamao depalabra..
Director Editorial 7 El ordenador por dentro
Antonio Tello Salvatierra Ansto1Il8delmicro. Historia delmicroprocesador. Defensadelos 8bits.
Director Ijecuvo
Birgitta Sandberg 10 Lenguajes
Coordinador Tcnico Niveles enlos lengu4}es'deprogramain. Introduccin al lengu4}emqu1n& quBeselle_e-mqu1n&
F"co.Javier Guerrero
Colaboradoreslspeciales 12 Memoria
Joaqun Lpez 1I8my Rom.Midiendolamemorla, elKiJobyte. Cmoescribir enlaimpresora. POley PBek.
Juan C.Gonzlez
Feo. Jess Vceyra 15 Herramientas
Carlos Rubio Numeracinhexadecimal.
Marcelo T.Helbling
Diseo y Kaquetacin
16 Tcnicas
Las reglas del buenprogramador. Cmousar losregistros habituales.
Flix llanos
.::
__
"r 18 El ensamblador
Bedaccin, Administracin y Publicidad ez es,paraqusirveyoomo se usa..!Jescripainresumida de~Gen,.Consejosy trucos enla utili&?cin.
Roca i Batlle, 10-12- 08023 Barcelona Conclusiones.Ensamblado. OperacionesquereaJiza.elZ80. ContenidodeJa.memori&.
Tel. (93) 21122 56
21 Tablas
lotomecnica y lotocomposicin InstrucaionesdelaCPUZ-80.
ungraf,SA. -cl88icada8 por mnemnicos
Pujadas, 77-79 - 08005 Barcelona -Cl88icadas porcdigode operacih
Impresin
Rotedic, SAo 27 Progranla
Otra. de IrnKm. 12,450 -28049 Madrid Catlogoparacassettes. Cargadordeda.tos.
Distribucin 30 El Bios
Gestin y Marketing Editorial, SAo Rutin88de cd1gomqu1na..Rutin88delBios.
Eduardo Torroja, 9-11 -Fuenlabrada (Madrid)
Tel. (91) 6904001 36 Tablas devariables
VariablesRom del siste1I1&Variables1l8m del sistema..
3
~'~li,)I.(.n.I--------~---------,,----
I INTRODUCCION
CONCEPTOS WICOS
Si existe una caracterstica comn a todos los or-
ganismos vivos desde la diminuta clula hasta el
mayor de los mamferos, sta es la capacidad de co-
municarse con otros seres de la misma especie.
Podramos definir la comunicacin de muchas
maneras pero siempre hariamos referencia a un
intercambio de ideas, de informacin en suma. Los
hombres para intercambiar ideas o informacin
hacemos uso del lenguaje, y cuando necesitamos
comunicarnos con las mquinas tambin hacemos
uso de un lenguaje determinado que stas puedan
entender. Elucubrar acerca de estas hiptesis ha
sido durante tiempo patrimonio de la fIlosofia.
Sin embargo todos estos conceptos pasaron de
lleno a adquirir el rango de cientficas gracias ala
codificacin binaria y a la posibilidad de manipular
dicha codificacin por medio de sistemas electrni-
cos que operan a velocidades vertiginosas.
4
y si seguimos veremos que ciertos nmeros deci-
males necesitan 8 16 bits:p. ej.
Nmero
decimal Nmerobinario
O O
1 1
2 10
3 11
4 100
7 . 111
8 1000= 4 bits
15 1111= 4 bits
16 10000
31 11111
'32 100000
63 111111
64 1000000
127 1111111
128 10000000= 8 bits
255 11111111= 8 bits
256 100000000
511 111111111
512 1000000000=10bits
1023 1111111111=10bits
1024 10000000000
2047 11111111111
2048 100000000000
4095 111111111111
4096 1000000000000
8191 1111111111111
8192 1000000000.0000
16,383 11111111111111
16,384 100000000000000
32,767 111111111111111
32,768 1000000000000000'=16bits
66,535 1111111111111111=1~bits
,
El problema se limita de esta manera a la conver-
Nmero decimal Nmero binario sin decualquiernmero en base2 a decimaly vice-
versa.
O 0000
1 0001 'rABLA.3
2 0010
3 0011 Hn base 10 al nmero 81.984 representa se-
4 0100 gn el siguiente desglose:
5 0101 4 unidades =4X(100)=4
6 0110 8 decenas =8X(101~=80
, 7 0111 9 centenas =9X(10 )=900
8 1000 1 millar =lX(10IS)=1.000
9 1001 S decenas de mUlar =8X(106)=SO.000
10 ioro O sea 4 + 80 -1:- 900 +1.000 + 80.000 = 81.984
11 1011 de modoanAlogoen base 8, 1.111 ser':
12 1100 ~unidad binaria =lX(80)=1
13 1101 1 decena binaria =1 X(81)=8
14 1110 1 centena binaria = 1x&88)=4
15 1111 1 m111arblnario =lX(8 )=8
16 10000 o sea 1+ 8 + 4 + 8 = 1S
.5
Comprueba esto en la primera tabla adjunta. mrico, sino como un valor ordinal, yendo de Oa 7.
Si no es suficiente con este pequeo repaso te ro Imaginemos todos estos ordinales como potencia
gamos que acudas a un libro de matemticas. de 2. Por lo tanto el primer bit ser 2 elevado a O
Comohemos visto en los anteriores ejemplos con puesto que es la primera posicin, es decir 1 ya que
4 bits podemos obtener 2 combinaciones binarias, cualquier nmero elevado a O nos da l. As pues
as pues con 8 bits podemos codificar 256 nmeros cada bit dentro deun byte tiene un valor determina-
decimales diferentes de O a 255. Este concepto es do segn la posicin que ocupe.
importante pues nuestro ordenador MSX trabaja
como veremos ms adelante con grupos.de 8 bits lo Ejemplo:
cual es una caracterstica comn a muchos ordena-
dores por lo que existe un nombre peculiar para N.O de Bit 7 8 B 4 :5 a 1 0
ello "BYTE".Un BYTEes un grupo de 8 BITS conti-
guos es decir adyacentes, y su importancia radica
en que el ordenador siempre manipula grupos de 8
bits Y nunca bits sueltos de uno en uno. Por eso
cuando definimos el cdigo mquina para el siste-
ma MSXdecimos que el tamao dela palabra de ins- Recuerde esta numeracin para los bits de un
truccin es de 8 bits. byte, pues es standard utilizado en casi todos los
textos de ordenadores.
Tomembs ahora el mayor nmero construido
VALOI BELATIVO DE UIf BIT con 8 bits: 11111111.
Para conocer el valor de este nmero, sumamos
DE:rr.rB.O DE UBBlD adems el 00000000, de modo que con 8 bits pode-
mos representar un total de 256 nmeros. Este es el
Sabemos que un byte est formado por 8 bits. To- nmero de posibles codificaciones que podemos ob-
memos entonces estos 8 bits, no como un valor nu- tener con un BYTE:256.
Actualmente estn apareciendo en el mercado
microprocesadores capaces de entender cdigos
escritos de 16 32 bits. El conjunto de bits que la
unidad de proceso central puede entender y tra-
tar como entidad nica, recibe el nombre de PALA-
BRA. .
TAMAO DE PAT,AlBA
Las consecuencias que se derivan del nmero de
bits que puede interpretar simultneamente la OPU
son mltiples. Cuanto mayor es el tamao de la pa-
labra, una CPU aumentar la complejidad de ins-
trucciones que puede decodificar. Ello conlleva
unas mejores prestaciones teroas del micropro-
cesador. Pero como veremos ms adelante, cuanto
mayor es el nmero de bits que puede decodificar si-
multneamente la CPU,mayor es la cantidad de n-
meros de los que puede disponer. El sistema MSX,
utiliza el microprocesador (CPU)Z80A con una pa-
labra de 8 bits -o sea un byte-, que est suficiente-
mente probado y esquematizado, de modo que se
trata de un microprocesador fiable (pronto nos
ocuparemos extensamente del Z80A).
Finalmente piense que en el sistema MSX, un
byte corresponde a una palabra por lo que muy a
menudo se confunden los trminos. Procure que a
usted no le ocurra esto.
6
IANATOMIA DEL MICRO
Al mirar nuestro ordenador MSX podemos pen- lizan para nada el teclado, y sin embargo la funcin
sar que las principales partes del ordenador son el de entrada se realiza igualmente. Todo esto nos de-
teclado, la pantalla (televsor o monitor), y el cas- muestra que estos perifricos no son fundamenta-
sette o unidad de discos; nada ms lejos de la reali- les para el funcionamiento del ordenador.
dad, pues la fuerza motriz, el corazn y el cerebro de La estructura de un ordenador se sustenta sobre
nuestro aparato estn en su interior, en sus chips, la circuitera interna -sus chips- amalgama de
conglomerado de componentes electrnicos, que componentes electrnicos m1niaturizados.
posibilitan el funcionamiento correcto de los peri- De entre estos componentes el bsico es el llama-
fricos antes mencionados .. do microprocesador que junto con la memoria con-
Lapalabra perifrico significa que est alrede- forman ya un ordenador. Es decir, el microprocesa-
dor, as puesteclado, pantalla, cassette, etc. estn dor posee en su interior todas las caractersticas
alrededor, pero no forman parte integral del orde- bsicas del ordenador, puede ser programado en c-
nador. digo mquina, puede aceptar entradas y controlar
En realidad podramos prescindir de la pantalla y salidas, etc. etc ...Los dems componentes facilitan
comunicarnos con el ordenador slo a travs del te- y potencian su uso y sus prestaciones.
clado como entrada y de la impresora como salida. Sin embargo, en s mismo el microprocesador o
Asimismo muchos usuarios de la m1croinformti- circuito digital programable se encuentra en el
ca no disponen de impresora y cuando juegan por corazn de nuestros vdeos domsticos, estufas,
medio de losjoysticks (mando para juegos) no uti- lavadoras automticas y toda suerte de electrodo-
7
,..
msticos que poseen la etiqueta de programables. cilmente palabra con byte, pues la palabra del Z80
El autor puede comprobar en fecha reciente el fun- es de 8 bits. Sin embargo otros ordenadores utilizan
cionamiento de una caa de pescar asistida por un palabras de 2 o de 4 bytes. Este circuito Z80 naci en
pequeo microprocesador. principio de la mano de unos tcnicos trnsfugos de
Cuando el microprocesador se integra. en un sis- la casa lNTEL que intentaron con este diseo emu-
tema ms complejo para formar un ordenador reci- lar y mej orar el funcionamiento del circuito que es-
bir el nombre de CPU (Central Processing Unit): taba ms en boga en aquella poca, el 8080 de IN-
unidad central de proceso. TEL.
Sepamos algo ms del microprocesador antes de La popularidad del Z80 fue en auge, hasta tal. pun-
entrar en los detalles tcnicos. to que en el ao 1975 se desarroll un sistema de
explotacin por parte de Digital Research que con-
tribuy a aumentar su popularidad. Actualmente,
Microsoft ha salido' al paso de crticas afirmando
HISTOBIA DEL MICROPROCESADOR . que el Z80 no est en absoluto anticuado y que debi-
do a la inteligente organizacin de la memoria que
se utiliz para crear el standard MSX, ste tardar
En la dcada de los 50 los ordenadores no tenan bastante tiempo en quedar desfasado.
el aspecto sco ni la versatilidad que tienen los ac- Sin embargo, se ha utilizado una tctica para des-
tuales personales. Podemos decir que inmensos virtuar el sistema MSX,al acusar que utiliza un mi-
armatostes realizaban las funciones que ahora nos croprocesador de 8 bits, considerado por muchos
solucionan las pequeas calculadoras. Adems, es- . como anticuado. Nosotros puntualizamos algo en
tos aparatos eran poco fiables, caros de mantener y su defensa.
terriblemente incmodos de manejar. La necesidad El microprocesador, tambin conocido como el
de solucionar estos problemas incentiv la investi- C.P.U ..(Central Procestng Unit) busca la primera
gacin y de esta forma se desarroll el circuito inte- instruccin del programa, realiza una serie de ope-
grado primeramente, y poco despus, en el ao 69 raciones que el ordenador ejecuta a una velocidad
de mano de la sociedad lNTEL aparece el primer mi- vertiginosa, realiza miles en un minuto. La combi-
croprocesador que es en suma una CPU completa nacin de varias de estas operaciones, lgicas y el .
integrada en un slo circuito. Este primitivo diseo archivo de datos nos dar una operacin matemt-
se perfeccion y se miniaturiz hasta conseguir en ca, aritmtica o algebraica usual. Las referidas ope-
el ao 1971 el circuito INTEL4004. Desde entonces raciones son realizadas por medio de las puertas l-
hasta ahora la tecnologa ha permitido cada vez mi- gicas.
niaturizar ms y ms los componentes y llegar a Las puertas lgicas son los elementos bsicos de
los modernos microprocesadores en los que pode- todo dispositivo lgico digital, desde el programa-
mos encontrar ms de 20.000 transistores sobre dor del vdeo o de la estufa hasta el IBM 38.
un centmetro cuadrado. Se dice que hemos pasado
de los circuitos MSl (Medium Scale Integraton)
que contenan centenas de componentes, a los cir-
cuitos LSl (Large Scale Integration) que contienen
miles de componentes por centmetro cuadrado y
pronto estarn a la orden del da los circuitos VLSl
(Very Large Scale Integraton.) con una integra-
cin de ms de 100.000 componentes por centme-
tro cuadrado.
La integracin es muy importante para un mi-
croprocesador y condiciona su velocidad de inoo-
namiento, pues cuanto ms cerca estn los compo-
nentes menos tiempo se demora la informacin en
pasar de uno a otro.
El circuito que utiliza el MSX,es el circuito Z80 de
Zilog, microprocesador de 8 bits. Decimos pues que
las palabras que maneja el Z80 son palabras de un
BYTE.
Ya vimos que por palabra entendemos el nme-
ro de bits que puede manejar simultneamente un
ordenador. En nuestro caso se puede confundir f.-
8
JI
Estos son crcutos que tienen dos, o ms entra- Todo esto se puede reunir en la siguiente tabla de
das y una sola salida digital dependiendo de los da- verdad:
tos digitales de la entrada, y cuando decimos digita-
les, recuerda que hablamos de impulsos elctricos AND O 1
(1 o de su ausencia O),es decir, la puerta lgicaAND O O O
sera as; 1 O 1
O O
1
_---L--_)r---- O
O
_--t.._____)r---- O
__.p--
1 1
1
----l O
O 1
DElEIBADELOS8B~
Los ordenadores de 8 bits han llegado a un grado
de perfeccionamiento insospechado debido tanto al
sofisticado desarrollo de gran cantidad de sus com-
ponentes como al alto nivel alcanzado en el diseo
de sus circuitos y a la arquitectura de los equipos.
En el caso de los ordenadores de 16 bits todos es-
tos aspectos anteriormente mencionados estn
an en vas de desarrollo y en consecuencia mu-
chos aspectos que en el campo de los 8 bits estn
perfectamente resueltos, en el de los 16 bits an
plantean problemas debido a la falta de componen-
tes adecuados.
Los ordenadores de 8 bits con relacin a los de 16
bits conllevan la ventaj a de una mayor calidad de
software de base (o de sistema), de una superior
evolucin de los diseos de equipo, resultado de la
experiencia acumulada por parte de los fabricantes
y comercializadores, asimismo el menor costo y la
mejor conveniencia de los equipos de 8 bits, sobre
todo en informtica de gestin.
Ahora bien, en el campo cientfico, donde los cl-
culos son complejos y el volumen de datos es redu-
cido, adquiere primordial importacia la velocidad
de clculo. Pueden resultar ms idneos los proce-
sadores de 16 bits, habida cuenta que el software
utilizado en estos casos no es nunca standard, pues
sus aplicaciones responden a casos especficos.
9
Y.(W~D )(
I HEN'" ~+.3!Z1ANO
96!i1.
420 NEXI W:RETURN
LENGUAJES DE I1TIODUCCION AL
LENGUAJE MAQUIllA
PROGRAMACION Los microdomsticos nos son suministrados con
un lenguaje que se aproxima mucho ms al ingls
que al idioma que habla el propio aparato. Progra-
mamos los aparatos en BASlC,un lenguaje de orde-
Los programas que pueden ser directamente eje- nador diseado para hacer la programacin gene-
cutados por un microprocesador estn almacena- ral bastante simple. El lenguaje Basc es el medio
dos en lenguaje mquina; no obstante, los progr~- para llegar a un nal y el final es la produccin de
mas no se acostumbran a escribir en lenguaje ma- un cdigo que el ordenador entiende y que le hace
quina, sino en un lenguaje de ms fcil uso para el reaccionar de la manera que queramos original-
programador. ._ . mente. Pero el ordenador no sabe nada de Baste,
Los lenguajes de programacon podemos clasifi- nada de variables y muy poco de cualquier cosa que
carlos en cuatro clases o niveles: pudiramos considerar til. Habla un lenguaje,
1.0 NIVEL-Lenguajes mquina (Nmeros bina- completamente diferente, extremadamente simple,
rios) llamado CODIGOMAQUINA.
, 2. NIVEL-Lenguajes simblicos directos (escri- Cuando programamos un .mcro MSX en BASIC,
tos en mnemnicos, correspondencia uno a uno en- sigue necesitando recibir sus nstruccones en su
tre instruccin en mnemnico y nmero binario. propio cdigo de mquina, que es nico para los Z80
(ASSEMBLER) e ininteligible para cualquier otro microprocesa-
3. NIVEL-LenguaJes de alto nivel funcionales o dor.
algoritmos (escritos con mnemnicos, cada ins- Cmo sabe el ordenador cmo reaccionar a las
truccin se convierte en un conjunto de instruccio- instrucciones BASICque le damos?
nes mquina, FORTRAN,ALGOL,PL/I) Dela misma manera que intentaramos entender
4. NIVEL-Lenguajes de alto nivel, conversacio- a otra persona que no hablara nuestro idioma.
'nales o dialgicos (de funcionalidad parecida a la Un intrprete no es muy mtelgente y es de hecho
anterior pero en que son interactivas la ejecucin y incapaz de recordar la mayora de las cosas que ha
la creacin o modificacin de instrucciones (LOGO, examinado anteriormente, tanto es as que tiene
BASIC). que hacer exactamente la misma cosa una y otra
Los niveles de programacin aumentan con el vez. Esto hace que la interpretacin sea muy lenta.
paso de los aos y tienden a ser ms complejos, ms Aunque al escribir programas en cdigo mquina
dialoga:ntes, menos tcnicos. Se dice que son idio- ahorramos a nuestro ordenador el tener que utili-
mas de alto nivelo enfocados al problema, al con- zar el intrprete (pues hablamos directamente su
trario de los ms antiguos, de nivel ms bajo y ms idioma) yen consecuencia ahorramos trabajo.
enfocados u orientados hacia la maquina,
En resumen, a medida que avanza la tcnica de la
construccin fsica de las mquinas, se aumenta el
desarrollo interior del sistema de smbolos que nos
permite utilizar la mquina de una forma apropia-
QUE ES EL LENGUAJE MAQUIllA
da. Una instruccin en BASlC (uno de los idiomas
de ms alto nivel), una vez traducida nos da una lar- Ya hemos visto como el ordenador nicamente es
ga lista de instrucciones mquina. capaz de manipular seales electrnicas binarias,
Un idioma de alto nivel est forzosamente sopor- que representan los estados lgicos l y O,cada ins-
tado por rutinas e instrucciones escritas en un ni- truccin del ordenador est escrita como una serie
vel ms bajo. Todos los idiomas informticos estn . de l y O que especficamente caracterizan a esta
basados en el lenguaje mquina, peculiar del micro- nstruccn y no a otra. A esta representacin bina-
procesador que utiliza. Es muy importante que dis- ria de las instrucciones de un computador se le lla-
tingas desde el principio, la diferencia entre el len- ma lenguaje de mquina o cdigo mquina.
10
PIOITO El TU QUIOSCO
RAMYROM
MEMOBIA
Por memoria entendemos cualquier dispositivo
que sea capaz de almacenar cdigos digitales, bits,
(o sea Oy Ilgicos). Este almacenamiento nos debe
permitir leer y retirar 1 solo bit oun grupo de ellos.
La tecnologa actual determina la creacin de va-
rios tipos de memoria. Nuestro ordenador para su
funcionamiento dispone de dos de estos tipos.
l.-MEMORIA RAM o Bandom.Acces Memory
traducido como memoria de acceso aleatorio y que
en espaol conocemos como memoria de lectura-
escritura. En ella podemos almacenar y retirar in-
formacin codificada digital (series de 1 y O lgi-
cos); su peculiaridad es que la informacin desapa-
rece una vez desconectada la alimentacin elctri-
ca. Por ello es necesario disponer de memorias ex-
teriores o perifricos en los que guardar la informa-
cin que disponemos en la RAM. Por ej. cassette,
diskette o cartucho.
2.o-MEMORIA ROM o llead ODly Memory. Me-
moria de slo lectura que puede ser leda repetida-
mente, pero su contenido no puede ser modificado
(no podemos escribir en ella). Es en este tipo de me-
moria donde el fabricante guarda la informacin
necesaria para el funcionamiento de nuestro orde-
nador. Este tipo de memoria no se pierde cuando
desconectamos nuestra mquina de la corriente
elctrica.
La memoria deun ordenador est organizada por
direcciones. En los ordenadores MSX cada una de -
las direcciones de memoria contiene 8 instruccio- LObyte de direccin baja: los 8 bits menos signifi-
nes elementales: 8 BITS (un BYTE). cativos (o los que estn ms a la derecha). En forma
El chip Z80 puede direccionar, o acceder a 65,536 abreviada L o LO(LOW)
direcciones de memoria (216). Con un sencillo Para especificar una posicin de memoria se debe
clculo podremos apreciar, que son necesarios 16 especificar los dos bytes de direccin HI y LO,que
bits para poder nombrar a estas direcciones. Es juntos expresan una direccin de memoria de 16
por ello,que el bus dedirecciones dispone de 16 hilos. bits. Este concepto de direccin alta y baja es muy
Esto plantea un pequeo problema. Al trabajar con importante, pues constantemente necesitaremos
palabras de 8 bits Y necesitar 16 para direccionar transformar las direcciones de 16 bits en dos pala-
una posicin de memoria, el microprocesador Z-80 bras de 8 bits. Si queremos decirle al mcroprocesa-
trata las direcciones de memoria de 16 bits como dor que vaya a la direccin 64215 (naturalmente si
dos bytes de direccin de memoria, un byte HI de 8 no decimos nada nos referimos a numeracin deci-
bits yun byte LOde 8 bits. Esto se define como sigue: mal), tendremos que separar en dos este valor
HI byte de direccin alta: los 8 bits ms sgnca- cmo?, pues dividiendo entre 256, pues se es el
tivos (o los que est ms a la izquierda). En forma peso del bit alto (HI) por suposicin, pues como ve-
abreviada H o HI (de HIGH). remos en el grfico.
12
formando una palabra de direccin de 16 bytes.
La complicacin del proceso no hace sino demos-
trar una vez ms que el sistema decimal es bastante
improcedente para trabajar' con computadoras, sin
embargo el sistema binario, se vuelve asimismo im-
practicable, pues nadie es capaz de recordar series
de 1 y Oagrupadas de 8 en 8. Por ello se desarrolla-
ron dos sistemas de numeracin que funcionan
tan bien como el sistema binario, y que se conocen
como Octal y Hexadecimal (Hexa). El BABICMSX
dispone de instrucciones que permiten convertir
automticamente de decimal a binario, Octal y
Hexa. De estos dos sistemas, el octal ha. sido total-
mente desalojado por el hexadecimal, que a partir
de aqu denominaremos simplemente Hexa.
Por si tiene inters tanto en la forma con que
MSX BABICreconoce los nmeros biliario hexa y
octales, as como sobre el sistema octal dispone de
sendos apndices con los N.O 1 Y2.
MIDIENDO LA ME.OIlA
ELKILOBYD
En informtica personal, una de las' palabras
mgicas que escuchamos continuamente es el tr-
mino K,abreviatura de Kbytes o Kilobytes, lo cual
tendra que equivaler a 1000 bytes (kilo quiere de-
cir 1000), sin embargo un Kbyte equivale a 1024
bytes. A qu se debe?...
Como ya hemos dicho el sistema decimal resulta
poco operativo para trabejar con el ordenador, por
lo que se busca una unidad superior al byte cercana
a 1000, pero que fuera redonda en hexa, as se for-
ma el acuerdo de conveniencia de hacer el kilo in-
formtico igual a 400 H, o sea 1024 en decimal.
400H = O x (16) + 0(161) + 4 x (1.68) =4 x
2 BYTE 2S6 = 1024
1S 14 13 la 11 10 9 8
De cuntos K dispone nuestro ordenador?
7 6 B 4 '3 8, 1 O Una de las caractersticas no estndar delsiste-
ma MSXes la memoria libre para usuario, es decir
la RAM,en la cual cada marca puede en este aspecto
\8 1. BYTE tomarse sus libertades.
Las especcaconea standard en este sistema
7 B 4 3 8 1 o son: .
(18S)(64) (38) (16) (8) (4) (8) (1) Bam80K 38K Sistema operativo
a9K Usuario
16KVideo
El valor del byte alto, equivale a 256 veces el del
byte bsjo pues, la unidad del byte alto, su bit N.O O,ya Toda memoria de un ordenador est configurada
vale 256 del byte bajo, cuando estos estn unidos y repartida en reas o slots, segn se muestra en el
13
MEMORIA
grfico. La porcin que va desde Basie hasta serie La funcin Peek de alguna manera es la inversa
puede usarse libremente en Basic. Seguidamente de la funcin Poke. Es decir, Peek nos da el conteni-
viene el rea de carga del MSX,en la cual no se pue- do de la direccin de memoria que especifiquemos.
de cargar programas ni variables. Aqu est el rea En esencia es una herramienta que permite ver
de memoria que puede ser empleada por el usuario al contenido de una posicin deseada.
y el valor contenido en FRE (O) es de 28815. Al in- Es evidente que no podemos alterar los conteni-
troducir programas estos son memorizados en el dos de la ROM,pero podemos intentarlo, de acuer-
rea de texto. Si se utiliza la funcin PEEK,se obser- do?
var el contenido de la memoria durante una vein-
tena de bytes a partir de la posicin &H 8000, en-
contrndose que contienen: 0,9, 128, 10. El programa que adjuntamos a continuacin te
ser til para observar zonas de la memoria, me-
diante la utilizacin de estas rdenes BASIe.
SLOTO 0000 SLOT3
0000 r----___'
TextoBABIC
1/
IWW ln.. rp.......BABle Memoria sobrant.e
Variables
C&ntJC1ad.da
10 SCREEN J:COLOR 1.14:KEY OFF
memoria
8obrant.e 2r!~ LlJ1 DTH 35
( md1ca.do.desde
!'RE (O) 312' INF'UT"DIF'ECCION INICH'1L CEi'1 DECI
8taol< MAL''';D
Serie LI2' 1F D< ~2l oR D)~)5~:~! THEI'I F:'OSUB 24
AJea. de t.rabaJo
-: Bloqueo do
oOnLrol de archivos
Aroa do t.rabi\lo
::_:Q! D$:::::STRII'IG$ (4--LEN q"IE~$ <l) "~") ~"H
FFFF EX~(D) ,
612! F'F'1NTD$: 11 " ~
7[:'1 FOF: 1 == QIT07
1
mosporque ... 8121.PR 1I\IT
El segundo valor es el contenido que deseamos in- 9121 D=D+8 .
troducir en esta posicin de la memoria. Hemos de !21121 D$= 1NKEY$
tener presente que esta expresin representa un 21121 1 F DS="" THEN3!2l
nico byte. Un byte puede tomar 256 (28) valores 2212! GOTO 5121
diferentes que constituye la unidad de almacena- 23!21 END
miento de datos ms pequea accesible al usuario. 24!2! PP1NT: F'f:;:INTTAB (8) ".~:"; "HITRODUCC
En caso de que el valor del contenido sea mayor de ION ERRONEA";":q:"
255 tendremos el error Wega! functlon eall. Si
introducimos contenidos en posiciones incorrec- 250 GOSUB 260:RETURN
tas nos podemos encontrar con desagradables sor- 261Z1 PF:INT: F'F:INTTAB (1lZI) "PULSA UNA TE
presas, por ejemplo, que se nos quede bloqueada la CLA"
mquina y no quede ms remedio que pulsar RE- 27!ZI Z$=INKEY$: IF Z$='''' THEN 27121
SET,con lo que se pierde lo introducido hasta el mo- ;28!21 RETURN .
mento. ..
14
HERRAMIENTAS
I NUMERACION HEXADECIMAL
Como se ha podido apreciar no es nada fcil des- Para facilitar an ms las cosas, los bytes suelen
componer un nmero decimal, superior a 255 en representarse con una pequea separacin entre
dos bytes (uno alto y otro bajo). Para solucionar grupos de cuatro, llamndose a cada grupo nibble,
este tipo de inconvenientes, se ha introducido el traducible directamente por una cifra Hexa, inde-
concepto de numeracin hexadecimal, con lo que la pendientemente de la posicin que ocupa dentro del
conversin en un sentido u otro es automtica. byte, algo que nos facilita con mucho la labor. Por
Un nmero binario emplea slo dos cifras (dgi- este motivo trabajaremos siempre con este sistema
tos) y un nmero en notacin decimal emplea 10. de numeracin. .
Para representar los nmeros hexadecimales se Con la notacin decimal el nmero 65535 no nos
utilizan 16 cifras y exactamente: salta a la vista ni se nos presenta como im;portante
0,1,2, ...8, 9,A, B, C,D, E, F dentro de la estructura del microprocesador. Sin
A representa 10,Bvale Lt hasta Eque vale 15;10s embargo, si lo traducimos a hexadecimal nos en-
valores desde Oa 15 se representan con un solo ca- contramos con
rcter o cifra hexadecimal. Los nmeros de dos ci-
fras o sea mayores de 15, son ordenados de la si- &HFFFF = 65535
guiente manera:
que es el tope de memoria que puede direccionar el
10111213141516171819LAIBICIDIEIF microprocesador Z80A La popular K, o kilo infor-
20...2A 2B 2C 2D 2. 2F 30... 3F 40 ...
4F mtico, se convierte en &H400 o lo que es lo mismo
50R 100 1024 en decimal. Mediante el programa inserto po-
El valor decimal de 8F es: demos observar el contenido de las reas de memo-
8 x 161 + F x 16= 8 x 16 + l!' = 128 + F == ria que deseemos introduciendo una. direccin de
128 + 15 =143 inicio en hexadecimal.
En este modo, un nmero binario puede sr con-
vertido fcilmente en nmero hexadecimal.
En tanto que 16 es representado por 24,cuatro ci- Si cuatro bits se pueden representar con un solo
fras binarias pueden ser representadas por una dgto Hexa, un nmero binario de 8 cifras, o sea el
sola cifra hexadecimal, como puede apreciarse en el valor de un byte, (notacin decimal comprendido
siguiente ejemplo de traduccin de hexadecimal a entre Oy 255), puede ser representado con slo dos
binario; los nmeros decimales O;32, 100 Y 234. cifras hexadecimal.
&BOOOO
/~ 0000
/~
&BOOI0 0000
4
5
6
00000100
00000101
00000110
04
05
06
7 ,
00000111 07
234 8 00001000 08
/H6\ . /HEA\
100
9 00001001 09
-1.0 00001010 QA.
11 00001011 OB
12 00001100 OC
13 00001101 OD
1.4 00001110 OE
&BOllO 0100 &Bl110 1010 16 00001111 OJ'
15
El buen programador no es el erudito conocedor
de todas las instrucciones de CMy su utilidad, natu-
ralmente es fundamental conocer el lenguaje que se
utiliza, pero slo con ello, tanto puede realizarse un
programa bueno como uno malo. El resultado de-
pender de la TECNICAutilizada al programar.
En primer lugar el programa debe estar ESTRUC-
TURADO.Un programa donde el curso del proceso
vaya continuamente hacia adelante y hacia atrs
hace muy difcil conocer la funcin de una parte de-
terminada del listado. En un programa desordena-
do, falto de estructuracin, cada mod1f!.cacin y
ajuste en vez de solucionar un error introducen
otros nuevos. ~\\t..
Una de las reglas fundamentales para estructu-
rar un programa es evitar los saltos. Una vez finali-
zado el proceso se debe intentar disponer las ins-
trucciones, si no lo estn ya, en un orden que evite
los saltos, ello no quiere decir que en un programa
no existan partes comunes que se reutilicen saltan-
do desde otros puntos, pero, deben reducirse al m-
ximo, puesto que si no el programa pierde claridad.
Relacionado con la caracterstica anterior, el
programa debe ser MODULAR.Todo aquello que eje-
cuta una tarea comn debe disponerse junto en el
.
listado, es decir, por mdulos que realicen una tarea
--~-
-,
especfica y completa.
Para conseguir una buena modularidad, una de ~-'--
las mejores formas es construir el programa a base
de subrutinas cada una de las cuales realiza una de lizar ms veces y que adems suelen coincidir con
las tareas y cuyo orden de ejecucin se determina los ms complicados; por ejemplo: colocar y despla-
mediante un lazo principal de instrucciones CALL. zar los objetos en la pantalla, las operaciones con
Este sistema tiene la ventaja de que en el momento los datos, etc ..., de esta manera aseguramos que
en que hay que introducir algo nuevo, tan slo hay gran parte de lo que vamos necesitando ya lo tene-
que crear la rutina adecuada e introducir un C.ALL a mos construido. Se dice que en CMcada bit debe ayu-
esta rutina en el lugar preciso del lazo principal. dar a colocar el siguiente.
Otro consejo es empezar siempre por lo ms dif- En CMse dispone de muy pocos registros-varia-
cil. Ello nos permite, por una parte, tomar una idea ble donde realizar el proceso. Es pues imprescindi-
de si lo que nos proponemos se puede llevar a la ble disponer de una serie de bytes que contengan las
prctica, y por otra el programa que supedita a las variables, los cuales iremos cargando en registros
caractersticas de lo ms complejo. Si no se realiza cada vez que haya que consultarlos o mod1f1carlos.
de esta manera corremos el riesgo de encontrarnos Para que estas variables internas del programa
a medio programa y no poder seguir adelante por- sean operativas y eficaces hay que procurar poner
que hay algo que no se adapta a esa estructura del juntas todas aquellas que estn relacionadas, por
programa. Al mismo tiempo debemos procurar por ejemplo: direccin de un objeto en el archivo de la
aquellos procesos del programa que se vayan a ut- pantalla, su velocidad, su cdigo, el sentido de su
16
Cuando empezamos el planteamiento de un pro-
grama es recomendable dividirlo en partes que se
puedan tratar de manera independiente, para pos-
teriormente subdividirlas en otras ms concretas.
y as sucesivamente hasta que lleguemos a un nivel
en que podamos empezar a programar. Este orden
es el inverso al que se sigue para construir las su-
brutina. Con esto conseguimos mantener siempre
controlado el proceso en general, evitando el riesgo
de perdernos en una parte de una subrutina y man-
teniendo una visin global del programa.
COMOUSARLOSBlG~OSBABDroALBS
En parte la eficacia de una rutina depende de que
los registros empleados sean los adecuados. Por
ejemplo, en una rutina que se empleen como pares
de registros BLy HCser menos eficaz que si se em-
pleara BCy HL, sencillamente porque el Z80 est
orientado para dar facilidades a las parejas BCy HL
en lugar de BLy HC.
De igual manera, existen ciertos registros ms
verstiles que otros. Aquellos datos con los que
haya que realizar ms cosas diferentes interesa
cargarlos siempre en los registros ms verstiles.
El registro A (acumulador) es el que mejor se adap-
ta a estas exigencias. En cuanto a parejas de regis-
tros, el par HL se destaca tambin por ser el que tie-
ne ms posibilidades. Esto hace que sea muy til
para emplearlo como puntero, porque es el nico
que puede proporcionar la direccin de memoria
cuyo contenido puede cargarse en cualquier regis-
tro. "LDB, (HL)" existe, mientras que "LDB,(DE)",
no.
Los registros ms verstiles para utilizar como
contadores junto a instrucciones automticas o se-
miautomticas como "DJNZ e" o "LDDR"son el re-
desplazamiento, etc. Podemos optar por poner jun- gistro B utilizado aisladamente y el par BC.
tas todas las variables del programa en una misma Si necesitamos un registro para alguna tarea con
zona de RAM,o bien ponerlas antes de cada subruti- unos datos diferentes a los que contiene, la mejor
na. Para utilizar la primera tcnica tenemos que di- manera ser guardar su contenido en la pila
mensionar una zona, suficientemente, antes de em- ("stack") y recuperarlo luego, o bien guardar su
pezar, con la segunda. El espacio se va reservando a contenido en aquellos registros que en ese momen-
medida que se necesita. Una ventaja de utilizar va- to no se utilicen. Para esto es muy til la instruc-
riables internas es que los parmetros se pueden cin "EXDE,HL"que intercambia los contenidos de
consultar desde cualquier punto del programa. estas dos parejas dando opcin a los datos conteni-
Adems habr que tener variables que se refieran a dos inicialmente en DEa todas las posibilidades que
los estados internos del programa en una situacin ofrece el par HL.
concreta, por ejemplo: un indicador para saber si el Una utilizacin adecuada de la pila o "sta.ck"junto
resultado de una operacin ha de ser sumado a un con la de los registros puede sernos muy til, pero
total parcial o no. Este tipo de variables de uso in- es conveniente no abusar de ella para almacenar
terno posibilitan una mayor versatilidad a las su- datos porque entonces el hecho de que slo es acce-
brutinas, al permitir realizar unas cosas u otras en sible el ltimo dato almacenado se convierte en una
inon del estado de una determinada variable. dificultad ms que en una ventaja.
17
EL ENSAMBLADOR
18
EL ENSAMBLADOR
portante es "A"(de assembly) que se usa para tra- para que el ordenador se desbloquee reinicializn-
ducir cdigo fuente a objeto, ponindolo en la direc- dose. Luego, podras relanzar el ensamblador y se-
cin especificada por el seudonemnico ORG.Natu- guir trabajando con el fichero de texto (cdigo
ralmente no existen las instrucciones como GOTO fuente), para corregir el error con toda comodidad.
10. En su lugar hay que def:l.nirlas direcciones con- Naturalmente si tu ordenador no tiene reset puedes
cretas de memoria con etiquetas (lo cual ocurre instalrselo con un poco de habilidad, aunque par-
en casi todos los lenguajes, menos en el BASIC).Es- ticularmente prefiero introducir dos cables en la
tas pueden colocarse en cualquier momento, escri- ranura del cartucho, lo que tiene el mismo efecto
biendo una serie de caracteres empezada con una (cuidado!). Este pequeo truco basta para solucio-
letra y terminada con dos puntos (:). En el supuesto nar un gran nmero de errores, aunque si el "gusa-
de que olvidemos alguna etiqueta el ensamblador no" es de los que llenan toda la memoria de valores
dar una seal de aviso, al final del ensamblado, del incorrectos no ser suficiente. Para solucionar este
tipo "*WARNINGNOMBREabsent*", que Significa: ltimo caso, lo mejor es grabar previamente en una
CUIDADONOMBREausente. cinta la zona de trabajo que GEN tiene en la parte
Termino con una mencin a otras funciones que superior de la RAM. As podrs cargar las rutinas
efectan tareas como la de grabar cdigo fuente, que conmutan los bancos y que sirven para situar
cargar desde la cinta, verificar una grabacin, lis- correctamente el ensamblador en la memoria, sin
tar por impresora, ejecutar programas desde el en- importar que stas hayan sido deterioradas por el
samblador, informar sobre la situacin y la longi- error. ,
tud del texto, buscar secuencias de caractres y un Restan por considerar los errores que contami-
largo etctera. nan la pila. Estos ya son cuestin de suerte, puesto
que una serie de POPsdesafortunados pueden hacer
CONSEJOS y nucos EN LA que se active la RAM no accesible y que el control
vuelva a GEN, con fatales consecuencias para el
programa y el texto que estaba tratando. En la prc-
UTltIZACION DEL E.,SAJlBLADOB tica, estos errores son los menos, por lo que se pue-
de asegurar que es prcticamente "tncolgable".
En lo tocante a las mltiples opciones de ensam-
Ahora vaya presumir queya tienes un ensambla- blado el manual es bastante claro. Naturalmente t
dor y quieres sacarle un buen rendimiento. De no has de seleccionar la ms til en cada momento. La
ser as, te aconsejo que te hagas con uno rpida- opcin 36 es la ms rpida, por lo que es la que se
mente y te asegures de que sea capaz de ubicarse en emplea con ms frecuencia. Por contra, si deseas
la RAM no accesible al BASIC,de generar macros, hacer un listado por impresora la apropiada es la 9,
de efectuar ensamblados condicionales yensam- que muestra las etiquetas al final del texto. Sin em-
blados desde cinta sin cargar todo el texto en la me- bargo, los programas cuyo cdigo objeto ocupar
moria (para programas muy largos). Obviamente ms de 10K suelen partirse en trozos ms peque-
GEN cumple todos estos requisitos, por lo que te lo os y manejables, a fin de no enlentecer la progra-
sigo recomendado. macin. En este ltimo caso la opcin 45 te listar
Si ya lo pcsees, te sugiero que hagas una copia r- solamente las etiquetas, que debers tener en cuen-
pida del mismo, usando la grabacin a 2400 bau- ta para que las diferentes partes del programa pue-
dios, y que aproveches para reubicarlo en la direc- dan comunicarse entre ellas.
cin 128, que es la :mn.1maposible (slo accesible a
mquinas de 84K). Una vez all, el ensamblador po-
dr disponer de toda la memoria til para la entra-
da del texto, puesto que l mismo se encargar de
CONCLUSIONES
paginar la ROM.Ten presente que el cdigo fuente
de un programa cuyo cdigo objeto ocupe, digamos, -Un lenguaje casi insustituible: el ASAMBLER.
5K puede tener fcilmente una longitud de 30K. Por -Una inversin acertada: un ensamblador.
cierto, el manual, al menos el mo, dice que la longi- Un ensamblador excelente: GEN. '
tud de GEMes de 7800 bytes, cuando en realidad es =Una gran comodidad: situar el ensamblador en
de unos '9800 bytes. Sipasas esto por alto el ordena- la RAMpaginada.
dor se colgar cuando intentes correr la copia. -Un buen invento: el botn de reset.
El hecho de situar el programa en RAMno accesi- Se me olvidaba: el manual de GENasegura que es
ble al BABICtiene, adems, una enorme ventaja: re- posible, gracias al comando "Y", seleccionar el n-
ducir el nmero de veces en las que te ves obligado a mero de lineas para cada pgina de los listados que
desconectar el ordenador ya perder todo el trabaJo. salen por impresora, pero no es cierto. '
Piensa que slo necesitas pulsar el botn de reset El programa perfecto an est por escribir ...
19
-Ia~@~nl:Ji+1II.)I---------------------------
20
-I~~-----------------------~---~-
21
CODlGO DlICI,ABACIO. CODlGO DlICI,ABACIO. CODlGO DlICI,ABACIO. CODlGO D.CI,AB ACIO.
OBJII'1'O PU1IlI'l'JI OB.lll'1'O PU1IlI'l'JI OBJII'1'O PU1IlI'l'JI OBJll'1'O PU1IlI'l'JI
\
CBOE RRC(HL) CB66 BIT2,(HL) CB96 RES 2, CHL) CBD6 SET2,(HL)
CBOF RRCA CB67 BIT2,A CB97 RES2,A CBD7 SET2,A
OBlO RLB CB68 BIT3,B CB98 RES3,B CBD8 SET3,B
OBll RLC CB69 BIT3,C CB99 RES3,C CBD9 SET3,C
CB12 RLD CB6A BIT3,D CB9A RES3,D CBDA SET3,D
CB13 RLE CB6B BIT3,E CB9B RES3,E CBDB SET3,E
CB14 RLH CBBC BIT3,H CB9C RES3,H CBDC SET3,H
CB16 RLL CB5D BIT3,L CB9D RES3,L CBDD SET3,L
CB16 RL(HL) CB6E BIT3,(HL) CB9E RES3,(HL) CBDE SET3,(HL)
CB17 RLA CB5F BIT3,A CB9F RES3,A OBDF SET3,A
CB18 RRB CB60 BIT4,B CBAO RES4,B CBEO SET4,B
CB19 RRC CB6l BIT4,C CBAl RES4,C CBEl SET4,C
CBlA RRD CB62 BIT4,D CBA2 RES4,D CBE2 SET4,D
CBlB RRE CB63 BIT4,E CBA3 RES4,E CBE3 SET4,E
OBlC RRH CB64 BIT4,H CBA4 RES4,H CBE4 SET4,H
CBlD RRL CB66 BIT4,L CBAB RES4,L CBE5 SET4,L
OBlE RR(HL) CB66 BIT4,(HL) CBA6 RES4,(HL) CBE6 SET4,(HL)
CBlF RRA CB67 BIT4,A CBA7 RES4,A CBE7 SET4,A
OB20 SLAB OB68 BIT6,B CBAB RES6,B CBE8 SET6,B
CB2l SLAC CB69 BIT6,C CBA9 RES6,C CBE9 SET6,C
CB22 SLAD CB6A BIT 5,D CBAA RES5,D CBEA SET6,D
CB23 SLAE CB6B BIT'6, E CBAB RES6,E CBEB SET6,E
CB24 SLAH CB6C BIT6,H CBAC RES6,H CBEC SET6,H
OB26 SLAL OB6D BIT5,L CBAD RES6,L CBED SET6,L
OB26 SLA(HL) CB6E BIT6,(HL) CBAE RES 6 (HL) CBEE SET6,(HL)
CB27 SLAA CB6F BIT6,A CBAF RES6,A CBEF SET6,A
22
--lr.i:lr4t
23
Instrucciones de la CPUZ-80 clasificadas
por cdigo de operacin
CODlO Dl!ICLARACIOR CODIGO Dl!ICLARACIO. CODIGO Dl!ICI,AB &010. CODIGO DBCI,ABAOIO. "
OBJETO PUERTl!I OBJETO I'Ul!IRTl!I OBJETO PUERTJ!I OBJETO I'Ul!lRTJ!l
24
U- .--. f
..-!C
tfl rn --
25
CODIGO D.m.ABACIO" CODIGO D_CI ABACIOR CODlGO D.CI.ABACIOR CODIGO D.CI.ABACIOR
OBJll'l'O PUlIJI'I'lI OBnl'l'O PUlIJI'I'lI OBnl'l'O PUlIJI'I'lI OBJll'l'O I'UBJI'I'lI
26
Esta rutina strve para \
27
C3A2 180A 400 JR NOMBRE
C3A4 212CCB 41.0 ASCI I: LD HL,BUFFER+12
C3A7 1805 420 JR NOMBRE
C3A9 1E13 430 ERROR: LD E,19
C3AB C36F40 440 JP #406F
C3AE CDOEC4 450 NOMBRE: CALL LEER
C3Bl FECF 460 CP 207
C3B3 30F9 470 JR NC,NOMBRE
C3B5 0606 480 LV B,6
C3B7 E5 490 PUSH HL
C3B8 2l38C7 500 LD HL,51000
C3BB 77 510 B5: LD (HL),A
C3BC 23 520 INC HL
C3BD CDOEC4 530 CALL LEER
C3CO 10F9 540 DJHZ B5
C3C2 3E20 550 LD A," "
C3C4 DF 560 RST #18
C3C5 3AE7FE 570 LD A, (RELE+l)
C3C8 3C 580 IHC A
C3C9 32E7FE 590 LD (RBLE+l),A
C3CC 3D 600 DEC A
C3CD CD02C4 610 CALL DIV
C3DO C630 620 ADD A,"O"
C3D2 DF 630 RST #18
C3D3 78 640 LD A,B
C3D4 CD02C4 650 CALL DIV
C3D7 78 660 LD A,B
C3D8 C630 670 ADD A,"O"
C3DA DF 680 RST #18
C3DB 0604 690 LD B,4
C3DD 3E20 700 LD A," 11
28
PROGRAMA
29
.'.
<oX'/ tS)
--la'3g~1~------------------------------------~---~~~~~~
v~-O
1\'
El BIOS(Basic Input Output System) se encuen- para cada rutina), ya que sera igual referirse a la
tra en la ROMde tu ordenador. Consiste en Una se- posicin final, en lugar depasar por un salto abso-
rie derutanaa, escritas en cdigomquina, capaces luto. Pues bien, esto es en orden a asegurar total-
de gestionar cosas tan dispares como el teclado,la mente la compatibilidaddelos diferentes ordenado-
pantalla, el interfaz dela impresora y el del casset- res MSX,as comode sus futuras mejoras y versio-
te,los puertos de los joystick y las ranuras de los nes. Microsoft,la rma creadora delstndard, dict
cartuchos. unas normas a seguir por todos losprogramadores,
que deben ser estrictamente respetadas para que
Cualquiera que disponga de un desensamblador cualquier diferencia en el hardware no repercuta
habr comprobadoque las posiciones de memoria en el funcionamiento del solfware.Unos ejemplos
ms bajas de la ROMcontienen una serie de saltos aclararn mejor este punto, Supn que quieres es-
absolutos hacia diferentes direcciones (..JP direc- cribir un dato en el cassette, poner en marcha el
cin). Quiz os hayis preguntado por qu se des- motor, encender el diodode las maysculas o,sim-
perdicia as tal cantidad de memoria (tres bytes plemente, sacar un carcter por la pantalla. En
30
cualquiera de estos casos hay una forma directa de
obtener el resultado de entradaJsalida. No obstante, LASlUmAS DEL BIOS
el mnimo cambio en la asignacin comportara
que el ordenador mostrara unos resultados com-
pletamente inesperados.
Posicin: &BO
Esta rutina no necesita parmetros de entrada ni
tampoco ofreoe ninguno a la salida. Puede ser ejecu-
tada utilizando un restart (RST O). Su funcin es la
de inicializar el ordenador. Por,consiguiente, se lla-
ma cuando se quiere empezar de nuevo, cuando se
pulsa el botn de reset o,'automticamente, al en-
cender el aparato.
Posicin &B8 Y' &B10
Estas rutinas son utilizadas por el intrprete BA-
SIC para analizar los errores de sintaxis, tomar el
siguiente carcter o token del programa, etc. Son de
poca utilidad, aunque una poable aplicacin seria
la de construir un BASICextendido.
Posicin: &BC .
Se usa para leer una direccin de memoria de un
cartucho determinado. El nmero de cartucho ha
de colocarse en el acumulador y la direccin en el
registro HL. Altera AF, BCy DE.
Posicin: &B14
Igual que' la anterior pero para escribir. 1t
Posicin: &B18
Es, sin duda, una rutina muy til. Puede ser lla-
mada con RST 18. Se encargar de sacar el carcter
contenido en el acumulador al perifriCO seleccio-
nado. Si la posicin de memoria &HF416 contiene
un cero, la salida ser a la pantalla. Si &HF416 es
distinto de cero, la salida ser por impresora. Por
ltimo, tienes la posibilidad de escribir en un fiche-
ro de disco, cargando &HF864 .... con la direccin de
memoria de dicho fichero, que sealar el dato a
mandar. RST 18"no modoa ningn registro. Por
otra parte, realiza una llamada al gancho situado
en &HFEE4 despus de guardar el par AF en la pila.
Como puedes intuir, poner un parche en esa direc-
cin te dar la oportunidad de controlar los distin-
tos perifriCOS a tu antojo.
Posicin: &Bl,C
Todo lo anterior conduce a la necesidad de aeee- Esta rutina se emplea para ejecutar una subruti-
der a las rutinas del BIOS en lugar de improvisar na de un cartucho.
soluciones de compromiso. Dicho esto, se aprecia Posicin: &B80
claramente la importancia de contar con un mapa Puedes comparar los registros DEy HL llamando
de la ROMque d informacin de la ubicacin y con- a esta rutina. Aqu tienes su listado:
tenido de las rutinas fundamentales. A continua- LD A,D
cn se detallan, aadiendo, en las ms interesan- CP H
tes, una relacin de los parmetros de entrada ne- RET NZ
cesarios en cada caso, as como de las modcaoo- tn A,E
nes que efectan en los registros y en las posiciones CP L
de memoria. RET
Sin duda encontraris, inestimable la ayuda que Posicin: &B84
os brindan las rutinas del BIOS.Desde aqu, el deseo Esta rutina selecciona una pgina de un cartu-
de una fructfera programacin. cho.
31
-lij':J(I~t WA-
350 PUT SPRITE
$\
32
1:S~ (A+8, B+32) ,8,21
Posici6n: &HaA
Esta rutina te informar del tipo de SPRITE que
ests empleando, o mejor dicho: el nmero de bytes
que emplea cada uno de stos, que pueden ser 8 32.
Por tanto, a la salida tendrs en el acumulador una
de estas dos cantidades. Adems el carry se pondr
a 1 si los SPRITESson del tipo ampliado. Unicamen-
te modifica el par AF.
Posici6n: &H8D
Esta rutina escribe el carcter contenido en el
acumulador en la direccin espec1fJ.ca.dapor el cur-
sor graco (la coordenada X est en &HFCB3y la Y
en &HFCB4), siempre y cuando ests trabaJando en
SCREEN2. Slo mod1fl.calas posiciones de memoria
&HF92A, &HF923 Y &HF92C.
Posici6n: &H90
Esta rutina inicializa el Generador Programable
de Sonido. No modifica ningn registro, pero altera
toda el rea de la cola del sonido, que empieza en
&HF975 y termina en &HFA74.
Posici6n: &H93
Con ella puedes escribir en uno de los registros
del PSG.El nmero de registro ha de colocarse en el
acumulador yen E el dato a mandar (comprendido
entre O y 13). Su equivalente en BASIC sera:
SOUNDA, E. Esta llamada no modifica ningn re-
Posici6n: &H80 gistro.
Esta rutina acta como la instruccin BASIC Posici6n: &H98
SCREENO. Mod1fl.catodos los registros as como las Esta rutina sirve para leer un registro del PSG.El
posiciones de memoria que van desde la &HF3DF a acumulador debe contener el nmero de registro
la&'HF3E5. (comprendido en O y 13). Slo altera el contenido
Posici6n: &H8J' de A.
Funciona igual que la anterior pero para el Posici6n: &H99
SCREEN1. Se llama a esta rutina para ejecutar la escala mu-
Posici6n: &H78 sical (caso de haberla). Si en el buffer de sonido no
. Igual que las anteriores pero para SCREEN2. hay ninguna escala escrita el acumulador se carga-
Posici6n: &H78 r con un cero. Modifica los pares AFy HL,as como
Igual para SCREEN3. las posiciones de memoria &HFB3F y &HFB40.
Posici6n &H78 Posici6n: &H90
Inicializa al VDP para trabaJar en SCREEN O, Comprueba si las teclas de funcin estn activas
pero sin tocar la RAMde vdeo. Modiftca los mismos en la pantalla. En caso afirmativo, analiza las teclas
registros y posiciones de memoria que la rutina si- SHIFT, para mostrar el contenido de las funciones
tuada en &H6C. F6 y'FI0, si estn pulsadas. Esta rutina pondr el
Posici6n: &H7B flag Z a 1 si no hay ninguna tecla apretada. Unca-
TrabaJa igual que la anterior pero para SCREENl. mente modifica AF.
Posici6n &H7lI Posici6n: &H9J'
Igual que las anteriores pero para SCREEN2. Esta rutina es de gran importancia. Su cometido
Posici6n: &H81 es coger un carcter del buffer del teclado. Si este
Lo mismo para SCREEN3. buffer est vaco ensear el cursor. y esperar has-
Posici6n: &H87 ta que se pulse una tecla. A la salida, el acumulador
Con esta rutina slo tendrs que cargar un nme- contendr el cdigo del carcter. Asimismo, realiza
ro de SPRITE en el acumulador para que te devuelva una llamada al gancho situado en &HFDC2despus
la direccin de la VRAMen la que se encuentran los de apilar los p~es HL, DEYBC.No modifica ningn
atributos del SPRITE seleccionado, gracias al regis- registro.
tro HL. Mod1fl.calos pares HL y DE as como los Posici6n: &HAa
ags, Imprime el carcter del acumulador en la post-
33
cin en la que se encuentre el cursor, aunque se tra- Posici6n: &HC3
te de un cdigo de control. Actualiza la pantalla, Su 'cometido es borrar la pantalla, con la condi-
desplazndola o haciendo un cambio de lnea si es cin de que pongas el flag Z a Oantes de llamarla.
preciso. Despus de apilar todos loe registros salta Mod1ficalos pares AF, BCy DE Ylas posiciones de la
al gancho situado en &HFDA4.No ilodifica ningn RAM 'del sistema 'relacionadas con el cursor. El
registro pero s las coordenadas Y y'X del cursor modo de pantalla que se est uttzando es indife-
(almacenadas en &HF3DC y &HF3DD respectiva- rente.
mente) y la direccin &HF66 l. Posici6n: &HC6
Posici6n: &HAB Sita el cursor en la posicin especificada por el
Enva el carcter contenido en el acumulador a la registro HL, para' lo cual es necesario poner la co-
impresora, esperando hasta que sta est prepara- lumna en H yla fila en L.Altera el par AF y las "direc-
da. Si se pulsa CTRL-STOPel flag Cse pondr a l. No ciones de memoria encargadas de guardar las coor-
modifica ningn registro. denadas de cursor (&HF3DC y &F3DD). Su equiva-
Posici6n: &HA8 lente en BASICsera: LOCATEL,H.
Esta rutina es llamada por la anterior. Su finali- . Posici6n: &HC9
dad es comprobar si la impresora est ON-L,INE.De Esta rutina es llamada' por el intrprete BASIC
no ser as el flag Z se pondr a l. Modifica el par AF. para saber si las teclas de funcin estan.actrvas.
Posici6n:' &HAB Posici6n: &HCC
Transforma el cdigo contenido en el acumula- Se llama a esta rutina para desconectar la visua-
dor en un carcter grfico (si es menor que 32), en lizacin de las teclas de funcin. Su equivalente en
la forma que el VDP est preparado' para aceptar. BASICsera: KEYOFF.AlteraAF, BCy DE. '
Prueba con VPOKE 0,1 y entenders perfectamente 'Posici6n: &KCF.
el funcionamiento de esta rutina. Modiflca el par Puede utilizarse para mostrar el contenido de las
AF.' teclas de funcin en la pantalla. Acta como la ins-
Posici6n: &HAE truccin BASle KEYON.Modifica los registros AF,
Acepta una lnea completa del teclado. Puesto que BC y DE, as como la posicin &HF3DE, que ser
una lnea puede contener hasta 255 caracteres, cargada con &HFF.
sta se 'almacena en buffer de entrada que est si- Posici6n: &HD8
tuado entre las posiciones &HF55E y &HF65D. A la . Esta rutina se emplea para cambiar de pantalla y
salida, el par HL apunta al inicio de este buffer me- ponerla en el otro modo de texto.
nos uno. Modifica todos los registros. Posici6n: &HDS
Posici6n: &HBl Esta llamada realiza una funcin idntica a la
Esta rutina es similar a la anterior. Aceptar la instruccin BASICA=STICK(A), por lo .que 'te su-
entrada de caracteres e ir mostrndolos en la pan- giero que leas el manual de tu ordenador para cono-
talla hasta que S pulse RETURNo CTRL-STOP.Mo- cer los detalles. Modifica todos los registros.
difica todos los registros. PosiCi6n: &HD8
. Posici6n: &HB4 Analiza el estado del disparador especificado por
Esta rutina acta de forma idntica a las anterio- un nmero que debe cargarse en el acumulador. A
res, pero visualizando antes el signo de interroga- la 'salida, tendrs un cero en el registro A, si ha ha- .
cin caracterstico de los INPUT. bido algn disparo, o 255, si no se ha pulsado el dis-
Posici6n: &HB7 parador. Mod1ficaAF.
Sirve para comprobar si' se ha pulsado CTRL- Posici6n: &HDB
STOP.Si esto es as, el flag Cse pondr a 1.Mod1fica Esta rutina funciona de forma anloga a la ins-
AF. truccin BASICPADEA).Por consiguiente, te acon-
Posici6n: &BBA sejo que mires all para obtener una informacin
Esta rutina complementa a la anterior, pero ade- completa. Altera todos los registros.
ms analiza si se ha pulsado nicamente la tecla Posici6n: &HDB
STOP,para detener la ejecucin del programa cuan- Esta rutina lee la raqueta de juegos especoada
do as sea. Altera el par AF. por el registro A. Asimismo, devuelve en el acumu-
Posici6n &HBD lador un parmetro comprendido entre Oy 266, re-
Esta rutina hace exactamente lo mismo que la ferido a la posicin actual. Mod1ficatodos los regis-
anterior,pero empleando ms tiempo. tros.
Posici6n: &HCO Posici6n: &HB1
Produce un BEEP e inicializa el PSG,llamando a Con esta llamada pondrs el motor del cassette
la rutina situada en &H90. Modifica todoslos regis- en marcha y podrs leer la cabecera. Si se pulsa
tros. Su equivalente en BASICsera: BEEP. CTRL-STOPel flag C se pondr a 1. Mod1ficatodos
34
ner la en posicin &HF92Cun valor cuyo nico bit
encendido muestre el punto a tratar. Por consi-
guiente si &HF92C contiene un 32 (&BOOOO 1000)
el cursor grfico sealar al tercer punto de la posi-
cin especificada por &HF92A, al volver de la ruti-
na. Modifica el par AF y las tres posiciones de me-
moria antes referidas.
Posicin: V &HFF
Esta rutina hace exactamente lo mismo que la
anterior, slo que el cursor grfico se desplaza un
punto a la izquierda.
Posicin; &HI08
Hace lo mismo que las anteriores pero despla-
zando el cursor hacia arriba.
Posicin: &HI08
Trabaja igual que la rutina anterior pero pone el
carry a 1 si se alcanza la fila superior de la pantalla.
Posicin: &HI08 .
Se comporta como &HFCpero bajando un punto
el cursor grfico.
Posicin: &HI0B
Tambin hace bajar un punto el cursor grfico,
aunque pondr el carry a 1 si se llega a la fila infe-
rior de la pantalla. El resto como &HFC.
Posicin: &HIID
los registros. Esta rutina devuelve en el acumulador el cdigo
. .Posicin: &.HB4 de color del punto sealado por las posiciones de
. Se emplea para leer un byte qe la. cinta, que ser. memoria &HF92A a &HF92C (ver la rutina situada
devuelto' en el acumulador. Al igual que la rutina en.&HFC). .
anterior, el' carry se encender. si la operacin es Posicin: &H183
abortada. Modifica todos los registros. Esta rutina traza una linea hacia la derecha a
Posicin: &HB7 partir de la posicin espsccada por las direccio-
Esta rutina sirve para 'detener 'la operacin de nes &HF92A a &HF92C (ver la rutina situada en
lectura del cassette. No altera ningn registro. &HFC) y la longitud contenida en HL. El color del
Posicin: &BBA trazo ha de colocarse en &HF3F2. Modifica todos
Esta rutina pone el motor del cassette en marcha los registros.
y escribe la cabecera en la cinta. El carry se pondr Posicin: &H138
a 1 si se interrumpe la escritura. Modifica todos los Usando esta rutina actuars directamente sobre
registros. . . el diodo de las maysculas. 'As, si el acumulador
Posicin: &HED contiene un cero lo encenders, con otro valor, lo
Carga el acumulador con un dato y esta rutina te apagars. Modifica el par AF.
lo escribir. en la cinta. Como siempre el carry en- Posi9in: &HI4~
cendido te indicar si la operacin fue abortada por Esta rutina comprueba el- estado de la matriz del
la pulsacin de CTRL-STOP.Modifica todos los re- teclado. Dicha matriz forma un cuadrado de 8 x 8. El
gistros. acumulador deber contener el nmero de la fila a
Posicin: &Hl!'3 explotar. A la salida tendrs que A tiene un 255, si
Esta rutina conectar, el motor del cassette, si el no.ha sido pulsada ninguna tecla de la fila en cues-
acumulador contiene un 1, o lo parar, si contiene tin, o un bit puesto a cero, indicando la tecla que s
un O. Por otra parte, si cargas el registro A con se ha pulsado. Unicamente altera el par AFy no es-
&HFF, antes de llamarla, invertirs el estado del pera hasta que se pulsa una tecla.
motor .. ~osicin:&186
Posicin: &Hl!'C Sirve para borrar completamente el buffer del te-
Esta rutina desplaza al cursor grfico un punto clado. Modifica el registro HL.
hacia la derecha. Al llamarla, la posicin &HF92Ay Nota: Las posiciones de la ROM6 y 7 contienen
siguiente debe contener la direccin de la VRAMen los nmeros de los puertos asignados para las ope-
la que se encuentra el punto. Asimismo, debers po- raciones de entrada/salida al VDP.
35
IIB---:--~__:_____:__--.~
x (W)?;~\\ ~D X
I HEN 96" ~+'':'!d AND
e
420 N~XI W:RETURN
teclado MODIFlCAAF
ENTRADAA: direccin de la.fila 0156 Borra.r buffer de teclado
SALIDA A:. estado de la fila MODIFICAHL
VARIABLES ROM
DELSISTEMA
DIRECCION
FUNCION
003E In1c1&l1za.rteclas funcionales.
MODIFICATodos los registros.
004A Leer datos de la VRAM
ENTRADAHL: direccin VRA.M
SALIDAA: datos
MODIFICAAF
004D Escribir" datos en la.VRA.M
ENTRADAHL: direccin VRA.M
A:. datos
MODIFICAAF
0056 Introducir una constante en la
VRA.M
ENTRADABO:longttud
HL: direccin VRAM
A: datos .
MODIFlCAAF,Be
0059 Transferir un bloque de lamemor1a.
principal a la VRAM
ENTRADABC:longitud
DE: direccin RAMde
destino
HL: direccin VRAMde
origen
MODIFICATodos los datos
005C Transferir un bloque de lamemoria
principal ala. VRAM
ENTRADABC:longitud
DE: direccin VRA.M de
destino
HL: direccin RAMde
origen
MODIFICATodos los registros
0090 In1cial1za.rel generador
programable de sonidos (PSG)
MODIFICATodos los registres
0093 Escribir datos en el PSG
ENTRADAA: n,? del registro
0096 Leer datos del PSG
ENTRADAA:. n.o de registro
SALIDA A: datos
MODIFICAA
0090 Ver1flca.rbuffer de teclado
SALIDACero (flag) si el buffer est.
vaco
009F Espera.r una entrada. de teclado
SALIDA A:. el ca.rcter
MODIFICAAF
OOD6Exarnlna.r estado del joystick
ENTRADAA: stick ID (0-2)
SALIDA A: stick status (0-8)
MODIFICATodos los registros
00D8 Exarnlna.r d1spa.rador
ENTRADAA:. d1spa.rador ID (0-4)
SALIDA A:. 266 si est.pulsado
MODIFICAAF
O141 Obtener el estado de la.matriz del
36
F7B4 flag pa.ra bsqueda depa.rmetros
F7B6 fin de bsqueda
F7B7 = Osinocorrespondefuncln
\H. VARIABLES RAM DEL SISTEMA I F7BAuso temporal en recogida de basura
F7BC parauso de intercambios
F7C4 = Opa.ra rastreo desactivado
F7C6 = zona de trabaJo para rutinas de
paquetes BCD
F83F = zona de datos para manipulacin
DIRECCION F419 funcin val de:fi.cheros
F41C linea cursor F87F contenido de teclas mconales
FUNCION F41F bufferdeprooeso F91F tablas de VRAMBASE
F380 rutina pa.raleer la ranura primaria F66D coma para INPUT F92Apa.raGENGRP
F385 rut1na.pa.ra escribir en la ranura F55E buffer de entrada. de teclado F931 zona de trabaJOy CIRCLE
primaria F680 fin de buffer F949 zona de trabaJo de PAINT
F38C llama.r rutina de la.raaure primaria F661 poson terminal F966 zona de trabaJo de PLAY
F39A direccin inicial para USRO-9 F662 flag de matriz FBBOposible recalentamiento si es
F3AE longitud de linea = 39 F663 tipo de valor distinto de cero
F3AFlont_itudde linea = 31 F664 tipo de operador FBBl distinto de oero si el texto BABIC
F3BOlongitud de linea F665 pa.ra proceso est en ROM
F3B1lineas en pantaJ.la = 24 F666 puntero de texto pare, getohr FBB2tabla de terminadores de lnea
F3B2 espacio de columna = 14 F668 forma interna de la constante FBCAprimera poson de ca.rcter en
F3B3 SCREENO tabla de nombres posterior a getohr INLIN
F3B6 tabla de colores F669 tipo de oonstante FBCCcdigo para cursor
F3B7 forma de ca.rcter F672 parte superior de la memoria FBCDflag para teclas funcionales
F3B9 a~buto F674 pa.rtesuperiordelapila FBCEflags pa.ra nterruptones
F3BB sprite ]1676 pa.rte superior del texto condconales por teclas de funcin
F3BDSCREEN1 tabla de nombres F678 descripoin temporal FBD8flag de oondioin
F3BF tabla de colores F67A a.lmacena.rdescripciones FBD9flag de enganche
F3C1 forma de ca.rcter temporales FBDA.antiguoestado de tecla
F3C3 atributo F696 descripcin de cadena despus de FBE6 nuevo estado de teola
F3C6 sprite operaciones FBFObuffer de cdigo de tecla
F3C7 SCREEN2 tabla de nombres F69B pa.rte superior posble del espacio FC18 operaciones de proceso de pantaJ.la
F3C9 tabla de colores de oadenaa FC40 operacin de pattern oonverter
F3CB forma de ca.rcter F68D pa.ra operaciones de reorganizacin FC48 pa.rte inferior de la RAM
F3CD atributo de datos FC4Aparte superior de la memoria
F3CF sprite FeAl puntero de sentencia FOR FC4C tabla de interrupcin
F3D1 SCREEN3 Tabla de nombres F6A3 puntero de sentencia DATA FC9ARTYCNT
F3D3 tabla de colores F6A6 flag pa.raFORYUSR FC9B INTFLG
F3D6 forma de ca.rcter FeA6 flagpa.ra INPUTY READ FC9C PADX
F3D7 atributo F6A7 pa.rasentenolas FC9DPADY
F3D9 sprite F6A9 = Ocuando no haylinea de FC9E JIFFY
F3DBenganche de teola programa. FCAOintervalo
F3DCcoord. Y cursor F6AA= Oen modo AUTO FCA2contador de intervalo
F3DDcoord. X cursor F6ADincremento en AUTO FCA4leer cassette
F3DE teclas funoionales F6AF puntero de texto pare, RESUME FCA6encabezamiento de carcter gr.:fi.co
F3DF oontenido del regiStro VDP F6B1 graba.r pila para proceso de errores FCA7 contador de secuencia de escape
F3E7 = O F6Ba linea de error FOABflag de insercin
F3E8 = (FF) F6B6 linea de ourso FCA9ON/OFFcursor
F3E9 oolor de primer plano F6B7 puntero de texto para RESUME FCAAcarcter de cursor
F3EA oolor de fondo F6B9 linea de proceso de errores FCABestado de la tecla CAPS
F3EB color de borde F6BB = 1si se est procesando un error FCACoperaciones de la teola desactivada.
F3EC salto O F6BC tareas temporales FCADno ut1l1za.da.
F3EF salto O F6B6 antiguo n,? de linea establecido por FCAE = Omientras se carga,un programa
F3F2 byte a~buto CRTLSTOP,STOPYEND BASIC
F3F3 direocin de tabla de espera F6COantiguo puntero de texto FCAFmodo de pantalla (screen)
F3F6 = (FF) F6C2 direocin inicial de va.riables FCBOantiguo modo screen
F3F6 sincron.1.za.clnde explora.c1nde simples FCB1 carcter pa.ra CA8:
teolas F6C4 direocin inioial de matrices FCB2 color de borde en PAINT
F3F7 = 50 F6C6 fin de la memoria utilizada. FCB3 cursor grfico, coord, X
F3F8 (put) buffer teclado F6C8 puntero DATA FCB5 cursor grfico, ooord. y
F3FA (get) buffer teclado F6CAtipo de va.riable pa.raA-Z FCB7 acumulador grco, X
F3FC pa.rmetros de E/Soa.ssette F6E4 pila usada. en labores de recogida de FCB9 acumulador grfico, y
F40F puntero de RESUMETEXT basura FCBBflag de DRAW
F414odigodeerror F6E610ngituddetabla FCBCesoalaenDRAW
F416 oabeza1mpresora F6E8 tablas de pa.rmetros para FCBDngulo de DRAW
F418 sa.l1daimpresora funciones def1n1da.spara, el usuaro FCBEBLOADIBSA VE
F417 0= pa.raimpresoraMSX F74C puntero de bloqueo de pa.rmetros FCBFinicio de BSAVE
F418 distinto de cero pa.ra sa.l1dade F74E longitud delbloqueo de pa.rmetros FCCI zona de trabaJo de ranura.
caracteres sinprooesa.r F760 direcciones de los pa.rmetros FD9Aenganches
37
J9hl~j:., j\_j JiJ!: JU]r J~
No hay mucha literatura escrita para el MSX so-
bre el cdigo mquina (cinco libros en el momento 8 j\jJ8;~
de cerrar esta edicin). Sin embargo, dado que exis-
ten muchos ordenadores en el mercado que usan el .
Z80 como microprocesador, no resulta dificil en-
contrar libros que faciliten informacin sobre este
lenguaje. De cualquier forma, cono en que esta pe-
quea resea os sea til, a la hora de comprar un
manual:
AfSX
Lenguaje
Mquina
39
----IIiICli!ii~~lIll---------------~~----~~----------------~--~--------------------
a impresa?";
1140 A$~INPUT$(l)
1150 IF A$<>"S" :\NOA$<>"s" ANO A$<
>"N" ANO A$<>"n" THEN 1140
1160 IF A$-"S" oR A$="s" THEN FP=1
1170 CLS:LOCATE 5,10
1180 INPUT "'Oirecci on de comi enzo"
OI$
1190 H$=Rl GHT$ (O 1$. 1)
1200 IF H$="H" oR H$="h" THEN O=VAL
("&h"+LEFT$(Ol$,LEN(OI$)-I ELSE O
=VAL <01$)
U210 LOCATE 5,14, INPUT "Direccion
final";OF$
1220 IF OF$="" THEN FV=I:0F=&HFFFF:
GOTO 12:>0
1230 H$=R~GHT$(OF$,I)
1240 IF H$="H" OR H$="h" THEN OF=VA
L ("&h "+LEFT$ (OF$, LEN (OF$) -1 E;LSE
OF=VAL(OF$)
1250 CLS
1260 A$="Oirec. C. Assembler C. M
aquina"
1270 PRINT A$:PRINT STRiNG$(33,42)
1280 IF FP THEN LPRINT A$:LPRINT ST
RING$ ('33,42)
1290
1300 O$'"'HEX$ (O)
131@ IF LEN m$) <4 THEN 0$=",O"+0'1 eo
To 1310
1320 P=PEEK(O)
1330 P$=HEX$(P)
1340 P'B'=BIN$(P)
1350 GDSUB 1710
1360 6=1
1370 B2$=HEX$(PEEK(0+1
1380 IF LEN(B2$)<2 THEN B2$="0"+B2'
1390 B3$=HEX$(PEEK(0+2
1400 IF LEN(B3$)(2 THEN B3$="0"+B3$
1410 B4$=HEX$(PEEk(o+3
1420 IF LEN(84$)(2 THEN 84$="I~""B4$
1430 IF P$="CEf'"OR P$="OO" oR P$="E
O" OR P$="FD" THEN GoSUB 1790 ELSE
GOSUB 1740
1440 L$=0$+STR1NG$(2,32)+I$+STRING$
(16-LEN (1$) ,32)
1450 FOR J=l TO S
1460 A$=HEX$(PEEK(O+J-l
1470 IF LEN(A$)<2 THEN A$="0"+A$
148@ L$=UHA$+CHR$ (32)
1490 NEXT J
1500 PRINT L$
1510 IF FV THEN A$=lNPUT$(I):GOTo 1
40
(W)-f.
10 A F Y
yO",) '" D4HI 1 (W)
<,,8+30 AND+5>B
l
16~0 RETURN 1780 'COOIGOS DE OPERAeION DE 2 BYT 2330 I$="JP (HU" :RETURN
1660 ES 2340 I$="LO SP,HL".RETURN
1670 1$=1.+" ("+M$+"+"+B3$+")":RETUR 1790 S-2 2350 1'="JP "+e.(B)+","+B3$+B2$,Sz3
N 1800 IF Ps=uCBII THEN GOSUB 2540 :RETURN
1680 1810 IF PSc*'ODII THEN M$="lX":GOSUB 2360 ON B+l GOSUB 2380,2370.2390.24
1690I.=I.+"("+M$+"+"+B4'+")"IRETUR 2630
N 00,2410,2420,2430,2440
1820 lF P,="FO" THEN M$="IY".GOSU8 2370 RETURN
1700
2630 2380 I'="JP "+B3'+B2.,S=3:RETURN
1710 IF LEN(PB.)<8 THEN PB$-"0"+PB$ 1830 lF P.$="EO" THEN GOSUB 3040
IGOTO 1710 2390 1.="OUT ("+B2'+"),A",S-2,RETUR
1840 RETURN N
1720 RETURN
18:50 ON C+ 1 GOSUB 1870,'1940.1960, 20 2400 1'=" IN A, ("+B2.+")": S=2IRETURN
1730 COO'IGOS DE OPERAC 1ON DE 1 BYT 40,2060,2070,2080,2090 2410 I.="EX (SP),HL".RETURN
E
1860 RETURN 2420 1':"EX DE.,HL".RETURN
1740 GOSUB 1620
1870' ON B+l GOSUB 1890,1900,1910,19 2430 1$="OI",RETURN
17~0 ON A+l GOSUB 1850,2190,2220,22 20,1930,1930,1930,1930
3.0 2440 I'="EI".RETURN
1880 RETURN 2450 I$="CALL "+C.(B)+","+83$+B2.:S
1760 RETURN 1890 IS="NOP", RETURN =3:RETURN
1770 JR Z,32803! 1900 1$="EX AF,AF'''IRETURN 2460 IF B/2=INT(B/2) THEN GOSUB 248
1910 l'c"OJNZ "+82$IS=2.RETURN o ELSE I$="CALL "+B3'+B2 S-3
1920 1.-"JR "+82'IS-2IRETURN 2470 RETURN
1930 1$-"JR "+C$(8-4)+","+82 S-2.R 2480 I.="PUSH "+RD$(B/2)
ETURN 2490 IF B=6 THEN 1$="PUSH AF"
1940 IF B/2-INT(8/2) THEN I.-"LO "+ 2500 RETURN
RO.(8/2)+","+83.+82'IS-3 ELSE l$-"A 2510 1'=AL$(B)+B2',S=2:RETURN
DO HL, "+RO' (INT (8/2) ) 2520 I'="RST "+HEX$(B*8):RETURN
19:50 RETURN 2530
1960 ON 8+1 GOSU8 1980,1980,1980,19 2540 PB'=BIN$(VAL("~h"+B2.
80,2000,2010,2020,2030 2550 GOSUB 1710
1970 RETURN 2560 GOSUB 162~'
1980 IF B/2-INT<B/2) THEN 1$-"LO (" 2570 ON A+l GOSUB 2590,2600,2610,26
+RO.(B/2)+")," ELSE I.-"LO A, ("+RD 20
(lNT (8/2) )+") " 2580 RETURN
1990 RETURN 25901.=RT'(S)+CHR.(32)+R.(e):RETUR
2000 I'"LO ("+B3$+B2$+"),HL".S=3.R N
ETURN 2600 1'="BIT"+STR.(B)+","+R$(e):RET
2010 I.="LO HL, ("+B3$+B2$+")":S=3:R URN
ETURN 2610 I'="RES"+STR. (B)+", "+R' (e) :RET
2020 l."'''LO("+B3.+B2$+"),A":S=3,RE URN
TURN 2620 I'="SET~'+STR$ (B)+". "+R' (e):RET
2030 I.-"LO A, ("+B3$+B2$+")":S=3:RE URN
TURN 263121IF B2$="eB" THEN 2950
2040 lF B/2=INT(B/2) THEN lS="lNe " 2640 PBS=BIN$(VAL("'l<h"+B2.
+RO'(B/2) ELSE ISz"DEe "+RO$ <INT (BI 2650 GOSUB 171121
2 2660 GOSUB 1620
20~0 RETURN 2670 ON A+1 GOSUB 269121,2840,286121,28
2060 l$-"INe "+R$(B):RETURN 70
2070 l.="OEe "+R.(B):RETURN 26811'RETURN
2080 I.""LO "+R$(B)+","+B2$:S-2:RET
26911'ON e GOSUB 271121,275121,2780,281121
URN ,2820,2830
2090 ON B+l GOSUB 2110,2120,2130,21 2711'0RETURN
40,2150,2160,2170,2180
2710 I'="AOO "+M$+","+RD'(INT(S/2
2100 RETURN
2720 IF B=5 THEN MID'(I',8,2)=M'
2110 1$="RLeA" 1 RETURN
2730 IF B=4 THEN 1'="LD "+M'+","+B4
2120 IS="RRCA": RETURN $+B3$IS"'4
2130 I$-"RLA":RETURN 2740 RETURN
2140 I.="RRA": RETURN
27:50 1$="LD ("+84'+B3'+")"+M$
21~0 I$="DAA".RETURN
2760 IF B=5 THEN I$="LO "+M'+", ("+B
2160 I$="CPL":RETURN 4$+B3$+")"
2170 I$="SeF",RETURN 2770 S-4:RETURN
2180 I'="CCF".RETURN 278121I.""INe "+M$
2190 I.:"LO "+R' (B)+", "+R'(C) 2790 IF S-5 THEN I'="DEe "+M.
2200 IF B=6 ANO C=6 THEN I$="HALT" 280121RETURN
2210 RETURN 281121I.-"lNC ".GOSUB 167121:S=3:RETUR
2220I.=AL.(B)+R.(C):RETURN N
2230 ON C+l GOSUB 2250,2260,2350,23 2821211'-"OEe ".GOSUB lb70.S=3,RETUR
60,2450,2460,2~10,2:520 N
2240 RETURN 2831211.-"LO ":GOSUB H70: 1'=1'+", "+
2250 I'="RET "+C$(B),RETURN B4'IS-4.RETURN
2260 ON ~+1 GOSUB 2280,2310,2280,23 2840 IF e-,t>THEN 'I'="LD "+RS (B)+","
20, 2280,2330, 2280, 234 IGOSUB 1670 ELSE I'="LO ":GOSUS 167
227filRETURN 0II.-I'+","+R.(e)
2280 1$""POP "+RO$(B/2) 2850 S=3IRETURN
229filIF B=6 THEN 1$-"POP AF" 2861211'~AL'(B),GOSUB 167121:S=3:RETUR
2300 RETURN N
2310 l'c"RET",RETURN 2B7121ON e GOSUB 2890,288121,293121,2880
2320 lSc';EXX"1 RETURN ,2940
41
TE t 2 ~ ~A""l f.:,:, E:-I !. 6) Ll
____,-~---~--~----~--~-------~~
42
DESCUBRE TU ORDENADOR
LOS SECRSTOS
.
DELMSX
UN LIBRO PENSADO
PARA TODOS LOS QUE
QUIEREN INICIARSE
DE VERDAD EN LA
PROGRAMACION BASIC
Construccin de programas. El po-
tente editor todo pantalla. Constan-
tes numricas. Series, tablas y ca-
denas. Grabacin de programas.
Gestin de archivo y grabacin de
datos. Tratamiento de errores. Los
grficos del MSX. Los sonidos del
MSX. Las interrupciones. Introduc-
cin al lenguaje mquina.
y ADEMAS PROCRAMAS
DE EJEMPLO
Alfabtico. Canon a tres voces.
Moon Germs. Bossa Nova. Slue
Sossa. La Sptima de Seethoven.
La Flauta Mgica de Mozart. Scrap-
pie from the apple & Donna Lee. The
entretainer. Teclee un nmero. Ca-
lendario perpetuo. Modificacin Ta-
bla de colores SCREEN 1. Rectn-
gulos en 3-D. Juego de caracteres
alfabticos en todos los modos. Jue-
go Matemtico. Ms grande ms pe-
queo. Pker. Sreackout. Apocalyp-
se Now. El robot saltarin. El archivo
en casa.