Skip to content

Commit

Permalink
resuelvo el fucking conflict porque kevin pushio antesgit statusgit s…
Browse files Browse the repository at this point in the history
…tatus
  • Loading branch information
axelnico committed Jul 9, 2016
2 parents 7f7aa64 + 2c17b22 commit a66405d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
Binary file modified entregable/informe/informe.pdf
Binary file not shown.
34 changes: 28 additions & 6 deletions entregable/informe/informe.tex
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@

\fancyhf{}

\fancyhead[LO]{Sección \rightmark} % \thesection\
\fancyhead[LO]{Sección \rightmark} % \thesection\
\fancyfoot[LO]{\small{Luis Enrique Badell Porto, Nicolas Bukovits, Kevin Frachtenberg}}
\fancyfoot[RO]{\thepage}
\renewcommand{\headrulewidth}{0.5pt}
Expand Down Expand Up @@ -138,7 +138,7 @@ \subsection{Ejercicio 1}

c) Se agregó un segmento adicional en la gdt, que describe el área de la pantalla en memoria que va a ser utilizada solamente por el kernel. El segmento que se agregó por lo tanto fue configurado con el dpl en 0 y es de tipo 2. La GDT entonces pasa a tener en este punto 6 segmentos (teniendo en cuenta al primer segmento nulo).

d) El enunciado solicita que se pinte el área del mapa en un fondo de color. Se implementó una macro en el archivo imprimir.mac denominada pintarPantalla la cual se encarga de pintar el fondo del mapa de color gris. El código de la misma es muy simple ya que se trata de un ciclo que copia a memoria en las posiciones del mapa, en los bytes de atributos de cada pixel, el valor correspondiente al color de fondo de gris. El código de la rutina es el siguiente:
d) El enunciado solicita que se pinte el área del mapa en un fondo de color. Se implementó una macro en el archivo imprimir.mac denominada pintarPantalla la cual se encarga de pintar el fondo del mapa de color gris. El código de la misma es muy simple ya que se trata de un ciclo que copia a memoria en las posiciones del mapa, en los bytes de atributos de cada pixel, el valor correspondiente al color de fondo de gris. El código de la rutina es el siguiente:

\begin{verbatim}
%macro pintarPantalla 0
Expand All @@ -149,7 +149,7 @@ \subsection{Ejercicio 1}
mov ecx , 4000
xor edi , edi
%%cicloGris:
mov word [edi*2 + 0x000B8000] , 0x7700 ;
mov word [edi*2 + 0x000B8000] , 0x7700 ;
inc edi
loop %%cicloGris
Expand All @@ -161,7 +161,7 @@ \subsection{Ejercicio 1}

\subsection{Ejercicio 2}

a) En esta parte de la implementación se tuvo que completar las entradas en la IDT (que contiene los descriptores de las interrupciones) para asociar diferentes rutinas a las exepciones del procesador. Los archivos modificados fueron el idt.c y el isr.asm. Se implementó la función idt_inicializar() en idt.c la cual se encarga de inicializar las excepciones. Las excepciones configuradas en este punto fueron las contenidas en el rango 0-19 y para configuraralas se definió una macro llamada IDT_ENTRY(numero) cuya implementación es la siguiente:
a) En esta parte de la implementación se tuvo que completar las entradas en la IDT (que contiene los descriptores de las interrupciones) para asociar diferentes rutinas a las exepciones del procesador. Los archivos modificados fueron el idt.c y el isr.asm. Se implementó la función idt_inicializar() en idt.c la cual se encarga de inicializar las excepciones. Las excepciones configuradas en este punto fueron las contenidas en el rango 0-19 y para configuraralas se definió una macro llamada IDT_ENTRY(numero) cuya implementación es la siguiente:

\begin{verbatim}
#define IDT_ENTRY(numero) \
Expand All @@ -187,7 +187,8 @@ \subsection{Ejercicio 2}
div eax
\end{verbatim}

El mismo produjo una exepción de dividir por cero, con lo que pudimos probar empíricamente que las exepciones estaban siendo manejadas y funcionaban correctamente. Dichas líneas de código fueron comentadas luego de que se corroboró que funcionaba para que no se produzca la exepción y el kernel siga ejecutando normalmente, y si eventualmente en algún momento se deseaba volver a verificar su funcionalidad sólo se tengan que descomentar. Además nos sirvió como documentación y registro de lo que se fue implementando.
El mismo produjo una exepción de dividir por cero, con lo que pudimos probar empíricamente que las exepciones estaban siendo manejadas y funcionaban correctamente. Dichas líneas de código fueron comentadas luego de que se corroboró que funcionaba para que no se produzca la exepción y el kernel siga ejecutando normalmente, y si eventualmente en algún momento se deseaba volver a verificar su funcionalidad sólo se tengan que descomentar. Además nos sirvió como documentación y registro de lo que se fue implementando.




Expand Down Expand Up @@ -230,6 +231,28 @@ \subsection{Interrupciones}
dado que la interrupcion del reloj la genera la CPU cada cierta cantidad tiempo, recien en este momento se habilitan las interrupciones mediante la instruccion STI.
El codigo de las interrupciones se encuentra en isr.asm

\subsection{Ejericio 5}

a) Para este ejericio se agregaron tres entradas en la IDT. Una para la interrupción de reloj, otra para la de teclado y una para la interrupción 0x66, o 102 en decimal (que es con el nombre con el cual quedó configurado).
Esto se realizó en los archivos correspondientes a la idt, es decir, idt.h e idt.c.

b) En la rutina de atención de interrupción de reloj se implementó solamente una base que solamente se encargaba de llamar a la función screen_proximo_reloj la
cual ya estaba implementada por la cátedra y se encargaba de dibujar en pantalla cómo iba avanzando el reloj.

c) En la rutina de atención de interrupción de teclado se implementó en ASM el detector de teclas presionadas en las cuales imprimiría en pantalla en la esquina
superior qué tecla fue y el color representando al jugador que le pertenece esa tecla en los casos de que la misma sea una que deba realizar alguna acción en el juego
(tales como w, a, s, d o Lshift). Además, se agregó que el juego no iniciaría hasta que se presione la barra espaciadora, la cual indica el comienzo del juego una vez presionada
y en la RAI para esa tecla se llaman a las funciones correspondientes que inicializan el juego.

d) Tal como se pedía en el enunciado, la primera versión de la rutina de atención de la interrupción 0x66 lo único que hacía era escribir el valor 0x42 en el registro eax.

%Paginacion y sarasa

\subsection{Ejercicio 6}




\subsection{El retorno de la GDT y la aparicion de la TSS}

\subsection{El Scheduler}
Expand All @@ -251,4 +274,3 @@ \section{Conclusiones y trabajo futuro}
%\end{codesnippet}

\end{document}

0 comments on commit a66405d

Please sign in to comment.