/* *************************************************************** * RUTINA DE ENTRADA DEL DRIVER * *************************************************************** * Esta rutina es la que recibe las llamadas al driver. * * Se encarga de despachar las llamadas. Para seleccionar los * * diferentes servicios se utilizan los registros AH y AL.Para * * invocar al driver produciremos la interrupcion 61H. * *************************************************************** * SERVICIO 1: (AH=1) * * Se encarga de las operaciones de dibujo en pantalla y de * * proporcionar una funcion para verificar que el driver es el * * correcto * *.............................................................* * Subservicio 1: * * Sirve para identificar que el driver es el correcto * * Llamada: AH=1 y AL=1 * * Salidas: AX=2005 * *.............................................................* * Subservicio 2: * * Dibuja el escenario del juego * * Llamada: AH=1 y AL=2 * * Salida : NINGUNA * *.............................................................* * Subservicio 3: * * Dibuja la posicion de las motos. * * Llamada AH=1, AL=3 * * DL=tecla moto1 * * DH=tecla moto2 * * Salida: NINGUNA * *************************************************************** * Servicio 2 (AH=2) * * Selecciona el modo de juego: * * modo 1: Un solo jugador * * modo 2: Dos jugadores y maestro * * modo 3: Dos jugadores y esclavo * * Llamada: AH=2 y AL=modo juego * * Salida : Modo correcto AX=0 * * Modo incorrecto AX=1 * *************************************************************** * Servicio 3 (AH=3) * * Se encarga de empezar y para el juego ademas de ver si la * * partida ha terminado y quien ha sido el ganador * *.............................................................* * Subservicio 1 * * Empieza el juego. Pone en marcha el temporizador que se * * encarga de marcar el ritmo del juego. * * Llamada: AH=3 y AL=1 * * Salida : ninguna * *.............................................................* * Subservicio 2 * * Finaliza el juego. Para el temporizador que se encarga de * * marcar el ritmo del juego. Pasa a modo texto. * * Llamada: AH=3 y AL=2 * * Salida : ninguna * *.............................................................* * Subservicio 3 * * Pregunta por el estado del juego * * Llamada: AH=3 y AL=3 * * Salida : AL=0 partida en marcha * * AL=1 partida terminada * *.............................................................* * Subservicio 4 * * Pregunta por el ganador * * Llamada: AH=3 y AL=4 * * Salida : AL=1 Ganador jugador 1 * * AL=2 Ganador jugador 2 * * AL=3 Empate * * AL=0 Seguimos jugando * *************************************************************** * Servicio 4 (AH=4) * * Se encarga de ver que tecla es la pulsada por cada jugador. * * En el caso de un solo jugador la tecla del jugador 2 se * * genera automaticamente. En caso de multijugador se lee del * * puerto serie. * *.............................................................* * Subservico 1 * * Pide la tecla pulsada por jugador 1 * * Llamada: AH=4 y AL=1 * * Salida : AL = Tecla pulsada por Jug1 * *.............................................................* * Subservico 2 * * Pide la tecla pulsada por jugador 2 * * Llamada: AH=4 y AL=2 * * Salida : AL = Tecla pulsada por Jug2 * *************************************************************** * Servicio 5 (AH=5) * * El servicio 5 se usa para temporizar el juego.Cada 18,2 seg * * el timer se encarga de activar un flag que nosotros * * utlizaremos para preguntar el estado de cada jugador,pintar * * su evolucion y ver si el juego ha terminado. Ademas,de todo * * esto nos tenemos que encargar de poner otra vez a cero ese * * FLAG. * * Esta interrupcion nos da la forma de ver el estado del FLAG * * y de ponerlo a cero. * *.............................................................* * Subservico 1 * * Pide estado de la bandera del timer * * Llamada: AH=5 y AL=1 * * Salida : AL = 0 Senal inactiva * * AL = 1 Senal activa * *.............................................................* * Subservico 2 * * Pon a cero la bandera del timer * * Llamada: AH=5 y AL=2 * * Salida : ninguna * *************************************************************** * Servicio 6 (AH=6) * * Desinstala el driver liberando la memoria ocupada * Llamada: AH=6 * * Salida : ninguna * *************************************************************** */