Skip to main content

Enter shell

Este es el código de la función enter_shell de DariOS

enter_shell

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 en DL).
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.