alarm - proyecto de implementación de un tsr en ms-dos

3

Click here to load reader

Upload: egdares-futch

Post on 04-Jun-2015

1.162 views

Category:

Education


1 download

DESCRIPTION

Enunciado del proyecto de implementación de un TSR para MS-DOS, curso Sistemas Operativos, UNITEC

TRANSCRIPT

Page 1: Alarm - Proyecto de implementación de un TSR en MS-DOS

Universidad Tecnológica Centroamericana

Ingeniería de Sistemas

Sistemas Operativos I - 1995

Prof. : Egdares Futch H.

Proyecto #1

Alarm - Un utilitario para servicios de alarma

Motivación

El computador personal es una herramienta de trabajo, cuyo papel se ha id o extendiendo cada

vez más en todas las áreas de una oficina moderna. Se utiliza como agenda, máquina de escribir, etc.

Sin embargo, el estar trabajando en una PC por lo general absorbe tanto a quien la utiliza, que

frecuentemente se olvidan citas importantes o eventos interesantes.

Por lo tanto, este proyecto consiste en un programa capaz de estar residente en memoria, para

que quienes lo utilizen puedan trabajar en otras aplicaciones, que maneje hasta cuatro horas de alarma

distintas, y genere un evento que llame la atención del usuario, para recordarle horas importantes.

Descripción

Este proyecto está orientado a manejar el concepto de interrupts e interrupt service routines, en

base al hardware de la PC, la cual posee un sistema de interrupciones prioritizadas, con un reloj que

interrumpe 18.2 veces por segundo al programa principal. Esto hace posible que se pueda comparar

continuamente la hora actual con la hora de las alarmas que el usuario haya pedido. En el momento de

llegar el tiempo de una alarma, el programa debe sacar una ventana en pantalla indicando al usuario que

ya es hora. Debe eliminarse esta alarma de la tabla de alarmas y quitar la ventana de la pantalla, dejando

lo que estaba antes.

El proyecto debe consistir en un programa, alarm.exe, que acepte en su línea de comandos

los siguientes parámetros :

Help

Invocada como -h, esta opción hace que el programa imprima un mensaje detallando el uso de

todos los parámetros que éste tiene. Ejemplo :

C> alarm -h

Add alarm

Invocada como -a, esta opción le dice al programa que debe alertar al usuario en la hora

especificada. Si el programa no está residente, debe quedar residente, mientras que si éste se encuentra

ya residente, debe pasarle los parámetros a la copia residente. Ejemplo :

C> alarm -a 1830

List alarms

Invocada como -l, esta opción imprime en pantalla la lista de alarmas que se encuentran

activadas actualmente. Ejemplo :

C> alarm -l

Page 2: Alarm - Proyecto de implementación de un TSR en MS-DOS

Delete alarm

Invocada como -d, este parámetro indica a alarm que debe buscar dicha alarma y eliminarla de

su tabla. Ejemplo :

C> alarm -d 1830

Requerimientos

El programa a entregar debe cumplir con los siguientes requerimientos:

- Escrito en Turbo Pascal 6.0 ó mayor.

- Debe aceptar parámetros únicamente por la línea de comandos.

- Debe instalarse residente una única vez.

- Debe utilizar una tabla de 4 alarmas máximo.

- Debe alertar al usuario con un mensaje en la pantalla.

- Mensajes de error apropiados.

Fecha de entrega y documentación a entregar

La fecha de entrega será el lunes 6 de febrero de 1995 a las 18:30 horas en el período de clase.

NO habrán prórrogas, ni excusas. La documentación a entregar consistirá en (no folders) :

- Diskette con el proyecto (3.5", sin virus)

- Carátula con nombre, carnet, nombre de proyecto

- Descripción y funcionamiento del proyecto (1 hoja máx.)

- Cómo se usa el proyecto (lo necesario)

- Descripción de rutinas y procedimientos usados

- Comentarios de implementación (opcional, puede mejorar nota)

- Listado del programa

Hints

Para realizar el proyecto final, existen varias formas de obtener la hora actual, incluyendo la

utilización de la función GetTime de MS-DOS. Sin embargo MS-DOS no es reentrante. Esto dará lugar a

complicaciones y además, hace que la rutina de interrupt instalada se vuelva muy lenta.

Sin embargo, existe otra forma de hacerlo, la cual es la recomendada a implementar en este

proyecto : leer directamente el contador de tiempo que el BIOS mantiene.

La forma de realizar esto es la siguiente:

El BIOS mantiene en la dirección 0000:046Ch el número de ticks necesarios para reflejar la hora

actual en un integer de 4 bytes (double word). Cada timer tick (18.2 veces por segundo) se activa INT

08h, quien incrementa este valor en 1. Se recomienda que se intercepte el interrupt 1Ch, para evitar

problemas. Luego de que este valor alcanza la medianoche (el valor de medianoche es 1800B0h), se

pone en 0, y el byte localizado en la dirección 0000:0470h se pone en 1.

Para hacer uso de esto, uds. deben convertir todos los valores de hora que se les pase como

parámetros, a ticks de reloj, y hacer las comparaciones para ver si ya se ha llegado a alguna alarma en

base a estos valores.

Page 3: Alarm - Proyecto de implementación de un TSR en MS-DOS

Deben investigar las funciones Keep(), GetIntVec(), SetIntVec(), y Ptr().

El proyecto requiere de bastante planificación, por lo que espero que esto les ayude a

terminarlo bien, no a empezarlo a última hora.