Enter shell
Este es el código de la función enter_shell
de DariOS
Explicación de la función enter_shell
La función enter_shell
gestiona el comportamiento del sistema al presionar Enter en el shell. Avanza el cursor, verifica si debe hacer scroll y procesa el comando introducido.
Propósito
Manejar la pulsación de Enter: cambiar de línea, procesar el comando, y volver a mostrar el prompt.
Lógica paso a paso
mov ah, 0x03
mov bh, 0x00
int 0x10
- Obtiene la posición actual del cursor (fila en
DH
, columna enDL
).
inc dh
mov dl, 7
- Baja una línea y fija la columna en 7 (después del prompt).
cmp dh, 24
ja scroll_shell
- Si la nueva fila excede la última línea visible (24), llama a
scroll_shell
.
mov ah, 0x02
mov bh, 0x00
int 0x10
- Mueve el cursor a la nueva posición (DH, DL).
mov ah, 0x03
mov bh, 0x00
int 0x10
- Vuelve a obtener la nueva posición del cursor.
inc dh
mov dl, 0
- Baja otra línea y reinicia la columna a 0.
cmp dh, 24
ja scroll_shell
- Verifica de nuevo si necesita hacer scroll.
call comparar_comando
- Llama a la función que compara el comando ingresado con los disponibles.
mov ah, 0x02
mov bh, 0x00
int 0x10
- Ajusta nuevamente el cursor tras procesar el comando.
mov si, 0
call limpiar_buffer
mov bx, 0
- Limpia el buffer del shell y reinicia el índice
BX
.
mov si, Mensaje_shell
call imprimir_cadena
- Muestra el mensaje del prompt.
jmp shell
- Vuelve al bucle principal del shell.
Requisitos
Mensaje_shell
debe contener el mensaje del prompt.- La función
comparar_comando
debe estar implementada. - El cursor debe estar bien posicionado al ejecutar esta rutina.