Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual MSX88 PDF
Manual MSX88 PDF
(8,77(/(&2081,&$&,1
'(3$57$0(172'(,1*(1,(5$<$548,7(&785$67(/(07,&$6
0$18$/'(868$5,2
2
,1752'8&&,1
El presente documento, no pretende ser ms que una gua que proporcione una visin
general del entorno didctico MSX88, facilitando al usuario, el apoyo necesario tanto en la
primera toma de contacto con el mismo, como en las sucesivas sesiones de trabajo, a travs de
las cuales ir progresando.
La presente documentacin es una documentacin preliminar que est siendo corregida y
actualizada. En la documentacin definitiva se incluirn varios ejemplos de utilizacin y una
gua didctica de utilizacin del MSX88.
El autor desea agradecer a: Ernesto J. Snchez Gil, Jess Dueas Palomino, JoseMoro
Narvaez, Angel Pinardo Anguita, Juan M. Marrn Mariez, Carlos Portasany Snchez, Mario
del Pozo Baselga, Justo Martnez Fernndez, Eloy Rodriguez Villa, Jos Luis del Amo Muoz,
Jorge Ruiz Cazorla , M de la Palma Garca Hernndez y Carlos la Torre Moncayo,
programadores del MSX88 desde sus primeras versiones. El autor tambin desea agradecer
todas las colaboraciones annimas en forma de sugerencias y buenos consejos de todos los
alumnos y profesores usuarios del MSX88 que han permitido pulir los fallos de este programa.
En primer lugar, se presentar brevemente el conjunto de herramientas que conforman el
entorno, para a continuacin pasar a describir el ncleo de la aplicacin, distinguiendo sus
bloques constitutivos.
&21-8172'(+(55$0,(17$6'(/(17251206;
Actualmente, el kit de aprendizaje MSX88, est compuesto por las siguientes
herramientas:
ASM88: Ensamblador para la CPU SX88.
LINK88: Programa montador para el MSX88
$60
La CPU SX88, como cualquier otra, tiene su propio ensamblador, ste es el ASM88.,
que es capaz de ensamblar cualquier programa fuente escrito en lenguaje de ensamble del
SX88, generando dos ficheros a partir del primero; un fichero objeto con extensin .OBJ,
destinado a ser procesado nicamente por el montador LINK88, y un fichero listado con
extensin .LST, cuya generacin es opcional.
El ASM88 es un ensamblador cruzado, es decir, se ejecuta en una mquina distinta - el
PC bajo MS-DOS- , de en la que corrern los programas que ensambla - el MSX88-. El cdigo
que produce es no reubicable, se ha de elegir una ubicacin fija para los programas y datos
dentro del espacio de memoria definido en el MSX88, de esta manera siempre se tiene un
control total sobre lo que se est haciendo.
Su invocacin se realiza desde el DOS, tecleando;
ASM88 [nom_prog _fuente] [nom_prog_lst] <CR>
siendo;
>QRPBSURJPBIXHQWH@, el nombre del fichero fuente a ensamblar , pudindose omitir la
extensin siempre que sta sea .ASM, ya que el ensamblador busca por defecto un
fichero con extensin .ASM. El hecho de colocar nom_prog_fuente entre corchetes ([]),
3
indica que ste es opcional, ya que de no ser suministrado en la invocacin, ser el
propio ensamblador quien lo solicitar.
>QRPBSURJBOVW@; el nombre del fichero listado sin extensin, siendo ste al igual que el
anterior, opcional. Si en la lnea de comando, no se proporcionan ni ste ni el anterior, ambos
sern solicitados por el ensamblador, de proporcionarse slo el primero, el fichero listado no se
generar.
/,1.
LINK88 es el nombre del programa montador de los programas objetos producidos por
el ASM88., que al igual que el ltimo, es un montador cruzado.
No tiene funciones de enlazador, pues el tamao de los programas a ejecutar en el
MSX88, hace que carezca de sentido la realizacin de una programacin modular. Pero an
as, se mantiene esta herramienta dentro del entorno, para mantener la coherencia con el resto
de los entornos de desarrollo software existentes, consiguiendo de esta manera, que el modo
de trabajo con el MSX88 sea lo ms parecido al de con cualquier sistema real.
A pesar de que los ficheros objetos y ejecutables tendrn un aspecto muy similar. el
MSX88, no es capaz de cargar los programas si estos no han sido procesados antes por
LINK88.
Para invocar a este programa montador, se teclear desde el DOS;
/,1.>QRPBSURJBREM@&5!
siendo >QRPBSURJPBREM@ el nombre del fichero objeto, que se quiere montar, sin
extensin., debiendo ser sta .2%- Los corchetes (>@ indican que ste es opcional, ya
que de no ser suministrado en la invocacin, ser el propio ensamblador quien lo
solicitar.
06;
MSX88 es el programa que constituye el ncleo del entorno de herramientas. Es un
emulador de un sistema digital basado en microprocesador, cuya CPU denominada SX88, se
puede ver como un 8088 simplificado.
Desde sus comienzos, en los que tan slo contaba de CPU y memoria, MSX88 ha
sufrido una notable evolucin, pasando actualmente a incorporar un bloque de periferia,
admitiendo diversos conexionados y configuraciones. An as, lo que se ha conservado como
una constante a lo largo de las diversas versiones de este emulador, es la equivalencia, en la
medida de lo posible, de sus elementos con CPUs y perifricos de la familia aadir, nunca
quitar u olvidar, a lo aprendido sobre el MSX88.
Para arrancar el programa, tan slo es necesario teclear desde el DOS;
06;&5!
Tras sto, en la pantalla aparecer una cartula, que desaparecer pasados unos instantes,
para dar paso a la pantalla principal o SDQWDOOD (figura 1). En ella, se muestra la CPU, el
bloque de memoria, una ventana de comunicacin con el usuario, que se comporta como una
pantalla de un ordenador, y un bloque de periferia con el que se pretende hacer referencia al
conjunto de perifricos que forman parte de este sistema microprocesador VRIWZDUH.
4
Figura - 1 : Pantalla principal del MSX88.
5
3. DESCRIPCIN DEL MSX88.
Periferia: Mltiples conexiones son posibles entre sta y los dos bloques anteriores.
6
La pantalla 1 (figuras 2 a 5) se centra en el estudio de los perifricos. sta a diferencia
de la anterior, vara en funcin de la configuracin en la que se encuentre el emulador en un
determinado momento. An as, existen una serie de elementos, situados en la parte superior,
que se mantendrn constantes a lo largo de todas las configuraciones; se trata del conjunto
CPU-Memoria, representado a la izquierda, y de los perifricos PIC y Timer, que se visualizan
en la parte derecha. El resto de los elementos que se visualicen en esta pantalla, vendrn
determinados por la configuracin o modo de conexionado seleccionado por el usuario.
Se establecen cuatro modos de conexionado en MSX88:
Conexionado 0: Es el ms simple de todos ellos (figura 2), pues no contempla los
elementos relacionados con las interrupciones. A los elementos constantes situados en la
parte superior, que sern invariantes para el resto de conexionados, incorpora el PIO
conectado a una barra de Leds y a otra de microconmuta-dores.
Conexionado 1: Este, (figura 3) sustituye la barra de Leds y microconmutadores de la
configuracin anterior por una impresora con un Interfaz Centronics, que habr de ser
implementado por el usuario.
7
Figura 4: Conexionado 2 de la periferia en MSX88.
8
3.3. MODOS DE FUNCIONAMIENTO.
MSX88 ofrece al usuario mltiples formas de analizar la evolucin dinmica de los
distintos elementos que conforman el sistema microprocesador simulado, durante la ejecucin
de un programa, pensado para la CPU SX88,. o parte de ste (instrucciones, ciclos de
instruccin , ciclos de mquina), dando lugar a los diversos modos de funcionamiento que
presenta esta herramienta. Estos son:
Modo Rpido: En este modo no se representarn en pantalla ms que las variaciones que
se produzcan en los perifricos externos (leds, microconmutadores e impresora). El resto
de los elementos permanecern en el estado anterior al comienzo de la ejecucin del
programa, hasta que ste concluya, momento en el que se actualizarn con el estado
alcanzado al finalizar dicha ejecucin.
Modo Lento: En este modo se mostrar la evolucin del estado de todos y cada uno de
los elementos presentes en el sistema microcomputador, incluyendo los flujos de
informacin de los buses y las seales existentes, que se rellenan de forma continua con
colores distintos a los que tienen cuando no estn activados, pudindose variar esta
velocidad de activacin a peticin del usuario.
Modo Registros: Se puede ver como un modo rpido en el que adems se visualizarn
los cambios que experimenten los registros y las posiciones de memoria, durante la
ejecucin de un programa.
Modo Lneas: Se define como un modo registros, al que se une la activacin y
desactivacin de las lneas de protocolo asociadas a la periferia.
Modo Perifricos: Se trata de un modo registros en el que adems se visualizan las
seales relacionadas con la periferia, junto con las escrituras y lecturas de puertos.
Junto a estos cinco modos, existe la posibilidad de omitir o no la representacin del ciclo
de fetch (ciclo de bsqueda del cdigo de operacin) de cada una de las instrucciones que se
ejecutan. En caso de omitirse, dicha representacin se reduce a un nico acceso a memoria.
4. CPU SX88.
4.1. ARQUITECTURA.
La arquitectura de esta CPU pretende ser una simplificacin de la del 8088, siendo sus
rasgos arquitecturales ms destacados los siguientes:
Arquitectura interna de 16 bits y externa de 8 bits.
Bus de direcciones de 16 bits, lo que permite el direccionamiento de 216= 64 Kbytes de
memoria principal.
Bus de control integrado por las lneas: INT, INTA, NMI, RW, RD, IO/M, HOLD,
HLDA.
Mantiene el mismo esquema de interrupciones que el 8086/88: Lneas NMI e INT, y las
interrupciones software INT xx. La lnea NMI no est asociada a evento alguno, y la
lnea INT se conecta a un PIC.
Registros de uso general AX; BX; CX y DX, de 16 bits, pudindose tratar tambin como
registros de 8 bits(AH, AL, BH, BL...).
9
ALU de 16 bits capaz de ejecutar las operaciones: ADC, SUB, AND, OR, XOR, NOT,
INC y DEC.
Registro de indicadores con los flags de: Cero, Paridad, Paridad Auxiliar, Signo,
Overflow, e indicador de interrupciones.
Registros contador de programa (IP) y puntero de pila (SP) de 16 bits.
Soporta los siguientes modos de direccionamiento: Dato Inmediato, Registro, Relativo a
contador de programa , Relativo a pila, Directo e Indirecto basado en el registro BX.
Existen adems dos registros internos de almacenamiento temporal de 16 bits que
aparecen en pantalla nicamente cuando son necesarios.
10
Instrucciones de transferencia de datos: MOV.
Instrucciones aritmtico-lgicas:
- Instrucciones aritmticas: ADD, ADC, SUB, SBB.
- Instrucciones lgicas: AND, OR, XOR, NEG, NOT.
Instrucciones de comparacin: CMP.
A continuacin, se muestra el cdigo mquina de cada una de las instrucciones de la
CPU SX88. En su codificacin, se han utilizado las siguientes abreviaturas:
W: Indica el tamao de los operandos:
W SIGNIFICADO
0 operandos de 8 bits
1 operandos de 16 bits
r r r
R R R W=0 W=1
0 0 0 AL AX
0 0 1 CL CX
0 1 0 DL DX
0 1 1 BL BX
1 0 0 AH SP
1 0 1 CH --
1 1 0 DH --
1 1 1 BH --
11
rrr, RRR: Referencian a los registros (registro, REGISTRO, respectivamente)
implicados en la instruccin, de acuerdo a la siguiente tabla:
INSTRUCCIONES ARITMTICAS.
12
ADD memoria, registro
Direccionamiento directo:
0000000W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:
0000000W 00rrr111
Direccionamiento indirecto:
0001000W 00rrr111
13
0001001W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:
0001001W 00rrr111
14
SUB registro, dato inmediato
1000000W 11101rrr LSB dato MSB dato
15
INSTRUCCIONES LGICAS.
OR memoria, registro
Direccionamiento directo:
0000100W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:
0000100W 00rrr111
16
OR registro, memoria
Direccionamiento directo:
0000101W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:
0000101W 00rrr111
OR registro, REGISTRO
0000101W 11rrrRRR
17
Direccionamiento indirecto:
1000000W 00110111 LSB dato MSB dato
NEG memoria
Direccionamiento directo:
1111011W 00011110 LSB dir MSB dir
Direccionamiento indirecto:
1111011W 00011110 LSB dir MSB dir
NEG registro
1111011W 00011111
NOT memoria
Direccionamiento directo:
1111011W 00010110 LSB dir MSB dir
Direccionamiento indirecto:
1111011W 00010111
NOT registro
1111011W 11010rrr
18
Direccionamiento indirecto:
0011100W 00rrr111
0011101W 00rrr111
INC memoria
Direccionamiento directo:
1111111W 00000110 LSB dir MSB dir
Direccionamiento indirecto:
1111111W 00000111
INC registro
1111111W 11000rrr
19
DEC memoria
Direccionamiento directo:
1111111W 00001110 LSB dir MSB dir
Direccionamiento indirecto:
1111111W 00001111
DEC registro
1111111W 11001rrr
PUSH registro
01010rrr
POP registro
01011rrr
PUSHF
10011100
POPF
10011101
20
JNZ desplazamiento
01110101 desplazam.
JS desplazamiento
01111000 desplazam.
JNS desplazamiento
01111001 desplazam.
JC desplazamiento
01110010 desplazam.
JNC desplazamiento
01110011 desplazam.
JO desplazamiento
01110000 desplazam.
JNO desplazamiento
01110001 desplazam.
CALL direccin
11101000 LSB dir MSB dir
RET
11000011
INT nmero
11001101 nmero
21
IRET
11001111
STI
11111011
CLI
11111010
NOP
10011000
HLT
11110100
IN AL, direccin
11100100 direccin
IN AX, direccin
11100101 direccin
OUT direccin , AL
11100110 direccin
OUT direccin, AX
11100111 direccin
22
IN AL, DX
11101100
IN AX, DX
11101101
OUT DX, AL
11101110
OUT DX, AX
11101111
5. MEMORIA.
La memoria del MSX88 se representa en pantalla como un bloque en cuyo interior existe
una ventana de 9 posiciones. La posicin central de sta, representa el octeto que est siendo
direccionado en cada momento de la ejecucin de un programa.
Adems, en la pantalla principal, es posible visualizar una segunda ventana idntica a la
descrita, concibindose sta ltima como un rea de datos, que a diferencia de la primera,
durante la ejecucin de un programa, permanecer fijada en torno a la posicin especificada
por el usuario.
5.1. ORGANIZACIN.
El MSX88 posee un total de 64 Kbytes direccionados linealmente.El usuario tiene a su
disposicin, un total de 32 Kbytes (desde la posicin 0000H hasta la 7FFFH), estando los 32
Kbytes de memoria alta ocupados por el programa monitor (sistema operativo). Por ello, las
escrituras por encima de la direccin 7FFFH pueden dar lugar a comportamientos anmalos de
la aplicacin.
En el primer Kbyte se encuentra la tabla de vectores de interrupcin, tal como ocurre en
el microprocesador en el que se inspira.
6. LAS INTERRUPCIONES DEL SX88
Las interrupciones de la CPU SX88 son las mismas que las del 8086/88, siendo stas las
siguientes:
Hardware: Lneas INT y NMI. Conectadas a distintos perifricos en funcin de la
configuracin.
Software: Instruccin INT xx.
23
El proceso de atencin de una interrupcin es idntico al usado por la CPU 8086/88,
siendo todas vectorizadas, excepto NMI que es de salto indirecto.
7. PERIFERIA.
Como todo sistema microcomputador, MSX88 posee una serie de perifricos propios,
pudindose establecer una clara distincin entre perifricos internos, y perifricos externos.
24
7.2. PERIFRICOS EXTERNOS.
Conjunto de dispositivos integrado por la pantalla, las unidades de disco y el teclado del
ordenador donde se ejecuta MSX88, y adems por los siguientes:
Barra de LEDS.
Barra de Microconmutadores.
Impresora.
7.3. PIO.
Es una interfaz de entrada/salida de propsito general, que presenta dos puertos paralelo
de 8 bits, denominados A y B, pudindose programar sus bits individualmente como entrada o
salida. Tras un reset, ambos puertos son configurados como entradas.
Posee cuatro registros internos de ocho bits:
Dos de datos: PA y PB, destinados a contener el dato presente en los puertos A y B,
respectivamente.
Dos de control: CA y CB, que permiten programar individualmente los bits de los
puertos A y B, respectivamente. La programacin, consiste en realizar una operacin de
escritura sobre el bit correspondiente al que se programa. Escribiendo un 0 el bit quedar
configurado como salida, mientras que un 1 lo configura como entrada.
!"# $"
El acceso a los registros, tanto en lectura como en escritura, se hace de acuerdo a la
siguiente tabla:
A1 A0 Registro
0 0 PA
0 1 PB
1 0 CA
1 1 CB
Para lograr un acceso se debe activar tambin la seal CS del PIO. El acceso ser de
escritura o de lectura en funcin del estado de las seales IOW e IOR..
25
- A0,, A1: conectadas a los bits menos significativos del bus de direcciones (A0 y A1,,
respectivamente).
- PA0...PA7, PB0...PB7: tienen dos posibles conexiones en funcin de la configuracin
en que se encuentre el PIO:
- Configuracin 0 (figura 2): se conectan a los correspondientes bits de los buses
de los microinterruptores (PA0...PA7), y de los leds (PB0...PB7).
- Configuracin 1 (figura 3): se conectan a un bus Centronics de impresora,
correspondindose con las siguientes lneas del interfaz:
PA0: lnea busy .
PA1: lnea strobe.
PB0...PB7: lneas de datos.
7.4. HAND.
Interfaz de periferia que cumple la temporizacin especificada en el interfaz Centronics,
no admitiendo modo de programacin alguno. Se comunica con la CPU por consulta de estado
o a travs de interrupciones, en funcin del BIT 7 de su registro de estado.
Internamente posee dos registros de 8 bits:
- DATO: Registro de datos. Una operacin de escritura sobre ste permite sacar un dato
a las lneas D0...D7, mientras que una lectura del mismo proporciona el ltimo dato
sacado por las lneas D0...D7.
- EST: Registro de estado. Su formato es el que se muestra a continuacin:
26
!"# $"
El acceso a los registros, tanto en lectura como en escritura, se hace de acuerdo a la
siguiente tabla:
A0 DATO
0 Registro
1 EST
Para lograr un acceso se debe activar tambin al seal CS del HAND. El acceso ser de
escritura o de lectura en funcin del estado de las seales IOW e IOR..
7.5. TIMER.
Contador de eventos, que realiza una cuenta ascendente los pulsos de la seal aplicada a
su entrada INT, restaurndose el valor inicial de cuenta al final de la misma.
Posee dos registros internos de ocho bits
- COMP: Registro de comparacin, que determina el mdulo de la cuenta del TIMER.
- CONT: Registro contador, que muestra la cuenta de los pulsos de la seal aplicada a la
entrada INT del perifrico. La coincidencia de su valor con el del registro anterior
provoca la activacin de la salida OUT.
( !"# $"
El acceso a los registros, tanto en lectura como en escritura, se hace de acuerdo a la
siguiente tabla:
27
A0 Registro
0 CONT
1 COMP
Para lograr un acceso, se debe activar tambin la seal CS del TIMER El tipo de acceso
(escritura o lectura) lo determina el estado de las seales IOW e IOR..
(
$% ""#&'
En el sistema, los registros de este dispositivo se sitan a partir de la direccin 10H. Su
conexin tiene lugar en todas y cada una de las configuraciones, en el modo que a continuacin
se expone:
- CS: esta lnea se conecta a la salida CS1 de la lgica de seleccin de la periferia.
- IOR , IOW: conectadas a las lneas del mismo nombre de la lgica de generacin de
las seales de lectura/escritura.
- D0...D7: conectados a los bits correspondientes del bus de datos del sistema.
- A0: lnea de seleccin que se conecta al bit menos significativo del bus de direcciones
(A0).
- IN: a esta entrada se le aplica un reloj de frecuencia 1 Hz.
- OUT: se conecta a la entrada de interrupcin INT1 del PIC, por lo que provocar una
interrupcin al activarse cuando los valores de los dos registros internos del
dispositivo coincidan.
28
- IRR: Registro de peticin de interrupcin. Almacena las interrupciones demandadas
hasta el momento. As, al activarse una entrada de interrupcin el bit correspondiente se
pone a 1, tornndose a 0 cuando sta pasa a ser atendida (bits 0..7 se asocian a las
entradas INT0...INT7, respectivamente).
- IMR: Registro de Mscara de Interrupciones. Permite el enmascaramiento selectivo de
cada una de las entradas de interrupcin mediante la puesta a 1 de su bit asociado (bit 0
se asocia a INT0,... bit 7 se asocia a INT7). Tras un reset (los bits de este registro
quedarn establecidos a cero) todas las entradas de interrupcin quedarn
desenmascaradas.
- INT0, ...,INT7: Cada uno de estos registros contiene el valor del vector de interrupcin
correspondiente a la entrada del mismo nombre.
- EOI: Registro de comandos de slo escritura, donde la CPU deber mandar el comando
de final de interrupcin (EOI), representado por el valor 20H, al final de la rutina de
tratamiento de la interrupcin. El efecto de est escritura es la puesta a cero del bit del
registro ISR correspondiente a la interrupcin.
) !"# $"
El acceso, tanto de lectura como de escritura, a los registros del Controlador de
Interrupciones, se hace en funcin de la siguiente combinacin de seales de direccin:
A3 A2 A1 A0 Registro
0 0 0 0 EOI
0 0 0 1 IMR
0 0 1 0 IRR
0 0 1 1 ISR
0 1 0 0 INT0
0 1 0 1 INT1
0 1 1 0 INT2
0 1 1 1 INT3
1 0 0 0 INT4
1 0 0 1 INT5
1 0 1 0 INT6
1 0 1 1 INT7
Para lograr un acceso se debe activar tambin al seal CS del controlador. El acceso ser
de escritura o de lectura en funcin del estado de las seales IOW e IOR.
.
29
)
$% ""#&'
En el sistema, los registros del PIC se sitan a partir de la direccin 20H. Se halla
presente en todas y cada una de las configuraciones, siendo la conexin de sus lneas, la
siguiente:
- CS: conectada a la salida CS3 de la lgica de seleccin de la periferia.
- IOR , IOW: se conectan a las lneas del mismo nombre de la lgica de generacin de
las seales de lectura/escritura.
- DO...D7 conectados a los bits correspondientes del bus de datos del sistema.
- A0, A1, A2, A3: conectadas a los bits menos significativos del bus de direcciones (A0,
A1, A2, A3, respectivamente).
- INT, INTA: se conectan a las lneas de la CPU del mismo nombre.
- INT0: se conecta a la tecla F10 que produce una interrupcin al ser pulsada.
- INT1: se conecta a la lnea OUT del TIMER.
- INT2: en la configuracin 2 (figura 4) se conecta a la lnea INT del HAND.
- INT3: en la configuracin 3 (figura 5) se conecta a la salida TC del CDMA, que se
activa para indicar el fin de transferencia.
- INT4...INT7: estas entradas no se utilizan en el sistema.
TC : : : MT ST TT STOP
El significado de sus bits vara en funcin de la operacin (lectura o escritura)
que sobre l se realice. As:
- En escritura:
- C0:
0: No tiene sentido
1: Al escribirlo la CPU detiene momentneamente la
transferencia en curso.
- C1 (TT=Tipo Transferencia):
30
0: Transferencia Perifrico -Memoria, o a la inversa.
1: Transferencia Memoria-Memoria.
- C2 (ST = Sentido Transferencia): Slo tiene sentido si C1=0. Entonces:
0: Sentido transferencia Perifrico-Memoria.
1: Sentido transferencia Memoria-Perifrico.
- C3 (MT = Modo Transferencia):
0: Transferencia por demanda.
1: Transferencia en modo bloque.
- C4...C7: No usados. No importa su contenido.
- En lectura:
En general se lee el ltimo valor que se ha escrito en cada uno de los bits
salvo para los siguientes:
- C0:
0: Transferencia en curso.
1: Transferencia detenida por la CPU temporalmente.
- C7(TC = Terminal Count):
0: Transferencia no finalizada.
1: Transferencia ya finalizada.
- RF: Registro de direcciones Fuente. En transferencias memoria-perifrico o a la inversa,
se carga en l la direccin del bloque de memoria a transferir o recibir. En transferencias
memoria-memoria acta tal como su nombre indica.
- RD: Registro de direcciones Destino. Slo tiene sentido su utilizacin en transferencias
memoria-memoria, actuando tal como su nombre indica.
- CONT: Registro Contador. Indica el nmero de octetos a transferir.
Adems de stos, dispone de ms registros ocultos, necesarios para su funcionamiento.
Una vez cargados los valores adecuados en los registros, para lograr el arranque de la
transferencia programada, es necesario forzar los bits A3, A2 y A1 del controlador a 1 a la vez
que se activa CS, sin importar el valor de las lneas IOR e IOW, accin que, adems pondr a 0
el bit C0. Si se desea detener momentneamente la transferencia, ser necesario poner C0 a 1,
pero su rearranque no se lograr poniendo C0 a 0, sino a travs de la condicin
CS=A0=A1=A2.
7.7.1. Seleccin de registros.
El acceso, tanto de lectura como de escritura, a los registros del Controlador de
DMA, se ha ce en funcin de la siguiente combinacin de seales de direcciones:
31
A2 A1 A0 Registro
0 0 0 RFL
0 0 1 RFH
0 1 0 CONTL
0 1 1 CONTH
1 0 0 RDL
1 0 1 RDH
1 1 0 CTRL
1 1 1 ARRANQUE
Para lograr un acceso se debe activar tambin al seal CS del controlador. El acceso ser
de escritura o de lectura en funcin del estado de las seales IOW e IOR..
7.7.2. Conexin en el sistema.
En el sistema, los registros del CDMA se sitan a partir de la direccin 50H.
nicamente se halla presente en la configuracin 3 (figura 5), siendo la conexin de sus lneas
la que sigue:
- CS: conectada a la salida CS3 de la lgica de seleccin de la periferia.
- IOR , IOW: se conectan a las lneas del mismo nombre de la lgica de generacin de
las seales de lectura/escritura.
- MRD, MWR: se conectan a las lneas de lectura y escritura de la memoria.
- AEN: se aplica a la lgica de seleccin de la periferia y de generacin de las seales de
lectura/escritura.
- TC: su activacin se realiza cuando el registro contador alcanza el valor cero,
momento en el que provocar una interrupcin por hallarse conectada a la entrada de
interrupcin INT3 del Controlador de Interrupciones (PIC).
- DREQ: esta entrada es puesta por la lnea INT del HAND, para solicitar una
transferencia.
- DACK: se conecta a la lnea CS del HAND para indicarle que su peticin de DMA se
est completando.
- HRQ: se aplica a la entrada HOLD de la CPU para realizar la peticin de Bus.
- HLDA: est entrada es puesta por la lnea HLDA de la CPU, a travs de la cual el
Controlador recibe el reconocimiento a la peticin de Bus
- DO...D7 conectados a los bits correspondientes del bus de datos del sistema.
- A0, A1, A2: conectadas a los bits menos significativos del bus de direcciones (A0, A1,
A2, respectivamente).
32
7.7.3. BARRA DE LEDS.
Matriz formada por ocho diodos luminiscentes, que se mantienen encendidos o apagados
en funcin del valor de su entrada, activndose al tomar sta el valor 1, y desactivndose
cuando sta a 0.
7.7.4. Conexin en el sistema.
La conexin de este dispositivo al sistema se lleva a cabo nicamente en la configuracin
0 (figura 2) a travs de un bus de datos; que agrupa ocho lneas, correspondindose cada una
de ellas con la entrada de un LED concreto, conectado al puerto PB del PIO.
7.9. IMPRESORA.
Impresora ASCII de 20 columnas, que posee un buffer de tamao cinco caracteres.
Su interfaz de conexin se corresponde con un Interfaz Centronics gestionado
nicamente por las lneas strobe y busy.
7.9.1. Interfaz Centronics simplificado.
Descripcin de seales.
- STROBE: Seal de validacin de dato en las lneas de datos, indicndole a la impresora
que la informacin en las lneas de datos es estable.
- DATA1...DATA8: Lineas de datos. Estas seales mantienen los bits del dato en paralelo
desde el primero o menos significativo (DATA1) hasta el octavo o ms significativo
(DATA8).
- BUSY: Indica que la impresora no puede recibir datos por una de las siguientes causas:
Est entrando informacin.
La impresora est imprimiendo.
El buffer est lleno.
Ha ocurrido un error.
7.9.2. Conexin en el sistema.
La conexin de la impresora en el sistema, vara en funcin de la configuracin. As:
33
- Configuracin 1 (figura 3): En esta configuracin la impresora se encuentra conectada
al PIO en el siguiente modo:
- BUSY, STROBE: conectadas a los dos bits menos significativos (bit 0, bit 1,
respectivamente) del puerto PA:
- DATA1...DATA8: conectadas a los bits del correspondiente peso del puerto
PB.
- Configuraciones 2 y 3 (figuras 4 y 5): En este caso la conexin se lleva a cabo con el
HAND:
- BUSY, STROBE: se conectan a los dos bits menos significativos (bit 0, bit 1,
respectivamente) del registro de estado del HAND.
- DATA1...DATA8: conectadas a los bits del correspondiente peso del registro
de datos del HAND.
8. PROGRAMA MONITOR.
Como cualquier ordenador real, el MSX88 tiene un sistema operativo (S.O.), cargado en
la parte alta de la memoria, que se encarga de realizar diversas tareas. Obviamente, este
sistema operativo es mnimo y por ello adopta la denominacin de monitor.
Ofrece la posibilidad de ejecutar diversos comandos y funciones, e incluso soporta
algunas utilidades, equivalentes a las llamadas al sistema presentes en cualquier S.O., que
permiten a un programa de usuario realizar operaciones de entrada/salida sobre el teclado y la
pantalla de usuario.
Los comandos del monitor son los equivalentes a los de cualquier programa depurador,
adaptados a la filosofa MSX88. Las funciones, en esencia, son comandos asociados a teclas de
funcin, o a combinaciones de stas.
En todo momento facilita al usuario el uso del simulador, proporcionndole informacin
de estado y de ayuda.
La informacin de estado la muestra a travs de la ventana de estado que se encuentra
presente en todas y cada una de las pantallas de la aplicacin, dando informacin de la pantalla
y conexionado seleccionados, as como de la velocidad y modo de ejecucin.
En cuanto a la informacin de ayuda, sta se manifiesta mediante dos vas; una barra de
informacin situada en la parte inferior de cada pantalla, y un help a varios niveles.
La barra presente en la parte baja de cada pantalla muestra las teclas o secuencias de
funcin. Su contenido variar para mostrar las funcionalidades ms tiles en cada momento
(bajo control del monitor, bajo control de un programa de usuario, en la ejecucin de ciertos
comandos ...).
El help que ofrece el monitor consta de varios niveles de ayuda presentados a travs de
una serie de ventanas desencadenadas en cascada. La informacin de cada nivel se recoge en
una ventana que da acceso al nivel de ayuda inmediatamente ms interno por el mero hecho de
realizar una seleccin en ella. En la figura 6 se muestra el aspecto de la pantalla principal al
mostrar uno de los niveles del help.
34
8.1. COMANDOS DEL MONITOR.
LISTA DE COMANDOS POR ORDEN ALFABTICO.
+ : Modo Rpido.
- : Modo Lento.
B : Borrar.
C : Configuracin.
D : Dump (Visualizar).
E : Enter.
F7 : Ciclo a ciclo.
G : Go.
H : Help.
I : Input.
L : Load.
M : Microswitch.
O : Output.
P : Pantalla.
Q : Quit.
R : Register.
RESET.
+ : Rpido.
- Descripcin:
Activa el modo de ejecucin rpido.
35
- Formatos:
+<CR> : Selecciona el Modo Rpido.
+R<CR> : Selecciona el Modo Registros.
+L<CR> : Selecciona el Modo Lneas.
+P<CR> : Selecciona el Modo Perifricos.
+F<CR> : Restaura la visualizacin del ciclo de fetch, o la reduce
a un nico acceso a memoria.
- : Lento.
- Descripcin:
Selecciona el modo de ejecucin lento.
- Formato:
-<CR>
B : Borrar.
- Descripcin:
Borra la pantalla de comandos o la hoja de la impresora.
- Formatos:
B<CR> : Borra la pantalla de comandos.
B I<CR> : Borra la hoja de la impresora.
C : Configuracin.
- Descripcin:
Establece la configuracin .
- Formato:
C <n configuracin><CR>
donde:
<n configuracin> debe ser ; 0,1,2,3.
D : Dump.
- Descripcin:
Permite visualizar el contenido de la memoria.
- Formatos:
D<direccin><CR> : Visualiza <direccin > en la posicin central
de la memoria.
DD <direccin><CR> :Visualiza <direccin> en la posicin central
del bloque derecho de la memoria de la
pantalla 0.
D D-<CR> : Borra el bloque derecho de memoria de la
pantalla 0.
36
E : Enter.
- Descripcin:
Permite modificar el contenido de la memoria almacenando los bytes que se
le indican a partir de <direccin>.
- Formato:
E <direccin> <byte1> [<byte2>[...[<byteN>]]]1
F6 : Ciclo instruccin a ciclo instruccin.
- Descripcin:
Determina la informacin que se presentar en la pantalla de comandos en
la prxima ejecucin "ciclo instruccin a ciclo instruccin".
- Formatos:
F6+<CR> : Slo se presenta el nmero del ciclo de instruccin que
se ejecuta.
F6-<CR> : Se presentar el nmero y nombre del ciclo de
instruccin en ejecucin.
F7 : Ciclo a ciclo.
- Descripcin:
Establece la informacin que se suministrar a travs de la pantalla de
comandos en la prxima ejecucin "ciclo a ciclo".
- Formatos:
F7+<CR> : Se presentar el nmero de ciclo mquina que se
ejecuta.
F7-<CR> : Adems del nmero, se mostrar un mnemnico que
indica la accin que realiza la CPU en el ciclo
mquina.
G : Go.
- Descripcin:
Lanza la ejecucin de un programa cargado en memoria a partir de la
direccin apuntada por el registro IP y coloca un punto de ruptura en cada
direccin de memoria especificada en los parmetros.
- Formato:
G [<direccin1>[<direccin2>]]<CR>
37
H : Help.
- Descripcin:
Proporciona un help de varios niveles de ayuda presentados
sucesivamente a travs de ventanas desencadenadas en cascada, cada una de las
cuales se abandona pulsando la tecla <ESC>.
- Formatos:
H<CR>
HELP<CR>
I : Input.
- Descripcin:
Lee y visualiza el contenido de un puerto de entrada.
- Formato:
I <puerto><CR>
donde:
<puerto> es la direccin del puerto expresada como un
nmero hexadecimal comprendido entre 00H y FFH.
L : Load.
- Descripcin:
Almacena el contenido de un fichero en la memoria.
- Formato:
L <nom_fich><CR>
donde:
<nom_fich> es el nombre del fichero cuya extensin puede
ser:
- ".EJE": fichero ejecutable obtenido a partir de las
herramientas ASM88 y LINK88.
- ".MEM": fichero obtenido a partir del comando
S"(save).
- sin extensin: se entiende que es un fichero
ejecutable(".EJE").
M : Microswitch.
- Descripcin:
Permite modificar y obtener el valor de los microinterruptores.
- Formato:
M [<nmero>]<CR>
donde:
38
<nmero> puede ser:
- un dgito de 0 a 7 indicando el nmero de microinte-
rruptor a conmutar.
- un dato hexadecimal de dos cifras indicando el dato
que ser representado en los microinterruptores.
- inexistente: en este caso el comando proporciona el
valor representado por los microconmutadores.
O : Output.
- Descripcin:
Enva un byte a un puerto de salida.
- Formato:
O <puerto> <byte><CR>
donde:
<puerto>: especifica la direccin del puerto expresada como un
nmero hexadecimal comprendido entre 00H y FFH.
<byte>: valor del byte a ser enviado al puerto.
P : Pantalla.
- Descripcin:
Establece la pantalla de trabajo.
- Formato:
P <n pantalla><CR>
donde:
<n pantalla> debe ser 0,, 1.
Q : Quit.
- Descripcin:
Permite abandonar la sesin de trabajo devolviendo el control al S.O.
- Formato:
Q<CR>
R : Register.
- Descripcin:
Permite modificar el contenido de los registros.
- Formato:
R <registro> <dato>
donde:
39
<registro>: es el registro cuyo contenido se modifica, siendo
uno de los siguientes:
AL, AH, AX, BL, BH, BX, CL, CH, CX, DL, DH, DX, IP,
SP, RF.
<dato>: valor que adoptar el registro.
RESET.
- Descripcin:
Inicializa todos los perifricos.
- Formato:
RESET<CR>
9. TECLAS O SECUENCIAS DE FUNCIN.
Con este nombre se conocen a una serie de teclas o combinacin de stas, cuya
pulsacin lleva asociada la ejecucin de determinados comandos.
Dependiendo de si se est bajo control del monitor (modo edicin) o de un
programa de usuario(modo ejecucin), la definicin de stas variar. As:
En modo edicin se tienen definidas las siguientes:
- F1: Es una alternativa al comando "H"(help), que provoca la presentacin
de ventanas de ayuda a varios niveles.
- F3: Presenta el contenido del buffer de comandos en la pantalla de usuario.
- F5: Muestra y oculta el papel de la impresora.
- F6: Se realiza una ejecucin ciclo de instruccin a ciclo de instruccin, al
ritmo de pulsacin de esta tecla, a partir de la direccin especificada
por el registro IP (contador de programa)
- F7: Provoca una ejecucin paso a paso a partir de la direccin apuntada por
el registro IP.
- ESC: Borra la lnea actual de la pantalla de comandos.
- Secuencias de teclas Alt: Todas ellas tienen en comn el proporcionar un
acceso directo a ciertos elementos del sistema microprocesador. Una vez que
se logra acceder a los mismos, el movimiento a su travs se consigue del
mismo modo que en un editor de texto.
- Alt-D: Es una alternativa al comando "D" (dump), que permite
explorar el contenido de todas y cada una de las posiciones de
memoria, proporcionando acceso directo a la misma.
- Alt-E: Se puede ver como una alternativa al comando "E" (enter), ya
que ofrece acceso directo a la memoria para realizar funciones
de edicin.
- Alt-R: Se presenta alternativamente al comando "R"(register),
permitiendo alterar el contenido de los registros a travs de
acceso directo a los mismos.
40
Cuando se est ejecutando un programa, se ofrecen las siguientes
funcionalidades:
- +: Aumenta progresivamente la velocidad a la que se ejecuta un programa
de usuario.
- -: Disminuye progresivamente la velocidad a la que se ejecuta un programa
de usuario.
- F5: Muestra y oculta el papel de la impresora.
- F9: Realiza un cambio de pantalla.
- F10: Provoca una interrupcin al PIC.
- ESC: Da fin a la ejecucin de un programa de usuario.
- 0...7: Conmutan el microinterruptor correspondiente
Direccionamiento directo:
41
Direccionamiento indirecto:
Direccionamiento directo:
Direccionamiento indirecto:
Direccionamiento directo:
42
3er Ciclo de instruccin: Bsqueda del operando en memoria (1 2
ciclos de lectura en memoria, dependiendo de si es de tipo "byte" o
"word", respectivamente).
Direccionamiento indirecto:
43
OP memoria, registro
Direccionamiento directo:
Direccionamiento indirecto:
44
OP registro, memoria
Direccionamiento directo:
Direccionamiento indirecto:
Direccionamiento directo:
45
3er Ciclo de instruccin: Bsqueda del operando inmediato en memoria
(1 2 ciclos de lectura en memoria, dependiendo de si es de tipo "byte"
o "word", respectivamente).
Direccionamiento indirecto:
46
OP registro, REGISTRO
OP memoria
Direccionamiento directo:
47
5 Ciclo de instruccin: Almacenamiento del resultado en memoria (1 2
ciclos de escritura en memoria, dependiendo de si es de tipo "byte"
"word", respectivamente).
Direccionamiento indirecto:
OP registro
PUSH registro
POP registro
48
2 Ciclo de instruccin: Bsqueda del operando en memoria (1 2 ciclos de
lectura en memoria, dependiendo de si es de tipo "byte" "word",
respectivamente).
PUSHF
POPF
JMP direccin
Jx desplazamiento
49
3er Ciclo de instruccin: Actualizacin del registro IP (slo si se cumple la
condicin que denota la instruccin).
CALL direccin
RET
INT nmero
50
5 Ciclo de instruccin: Actualizacin del registro IP (2 ciclos de lectura en
memoria).
IRET
STI
CLI
IN AL, direccin
IN AX, direccin
51
1er Ciclo de instruccin: Bsqueda del cdigo de operacin y decodificacin (1
ciclo de fetch).
OUT direccin, AL
OUT direccin, AX
IN AL, DX
IN AX, DX
OUT DX, AL
52
1er Ciclo de instruccin: Bsqueda del cdigo de operacin y decodificacin (1
ciclo de fetch).
OUT DX, AX
NOP
HLT
1er Ciclo de instruccin: Bsqueda del cdigo de operacin y decodificacin (1
ciclo de fetch).
53