Juego de "TRON", parte 3. (Control del hardware. Recursos avanzados)

                                    (Este enunciado será explicado en la primera clase que corresponda a cada grupo)

Objetivos

Programas residentes
Programación de puertos de E/S
Control de puertos definidos en el PC (ratón, impresora, RTC, etc)
Control de periféricos hardware externos al PC

Trabajo a realizar en esta práctica.

  1. Desarrollo de dos drivers.
  2. Modificación del programa de usuario (práctica 2) para el funcionamiento del juego.

1 Desarrollo del driver.

En esta práctica se van a desarrollar dos drivers, dos programas residentes.

Las especificaciones de cada driver se definieron en la práctica anterior (rtc.h y serie.h). Se trata de unos programas residentes que, básicamente, servirá de puente entre la aplicación de usuario y el hardware externo (RTC o reloj de tiempo real y la UART o controladora de la comunicación serie). Dentro del diseño de cada driver están involucradas una serie de interrupciones cuyas rutinas de atención son las que componen dicho driver:

Driver de temporización:

Driver del puerto serie:


2 Se pide

Sustituir las librerías rtc.lib y serie.lib de la práctica anterior por dos programas residentes que realicen las mismas funciones, respectivamente. Para ello habrá que modificar el código en lo referente a las llamadas a dichas funciones. Ya no serán funciones externas, sino que serán atendidas como servicios asociados a dos interrupciones software: la 62h para el RTC y la 63h para el serie. Se deja a la elección del alumno el asociar cada servicio con un valor del registro AX, así como el tratamiento de las variables de entrada y de salida.

En la librería rtc.lib el control del tiempo estaba fijado en 18.2 milisegundos. Dado que el RTC permite programar intervalos distintos de tiempo, añadir una nueva función al driver que permita modificar dicho intervalo entre unos 10 msg y 500 msg. Esta función puede tener el siguiente prototipo:

int rtc_periodo (int periodo);

Lógicamente también se modificará el programa de usuario (TRON) de manera que permita modificar la temporización, pidiendo al usuario la velocidad a la que quiere jugar. Este dato se debe introducir antes de empezar el juego, seleccionándolo de una lista.



3 Metodología de diseño

Desarrollar cada driver de forma independiente. Desarrollar cada uno de ellos utilizando la librería del otro proporcionado en la práctica anterior.

Para el desarrollo de un driver es aconsejable la siguiente secuencia:

1. Desarrollar un programa en ensamblador sin utilizar las interrupciones que pida los datos del dispositivo y se los proporcione al usuario.
2. Desarrollar un nivel falso de la interfaz del usuario (int 6xh) que pide directamente del dispositivo un dato con polling.
3. Desarrollar el manejo del tiempo utilizando la interrupción 70h (el tick mínimo será de 10 ms), sin instalarlo como residente.
4. En este punto tendremos suficiente experiencia para desarrollar el driver entero.

Plazo de entrega : La presentación y evaluación de esta práctica será según el calendario propuesto. El nombre del fichero o ficheros a entregar será de la siguiente forma:

Si hay más ficheros, nombrarlos con números sucesivos y añadir un .txt que explique su contenido


Página editada y mantenida por Guillermo Glez. de Rivera
  Volver atrás