Skip to main content

Scroll en shell

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

scroll_shell

Explicación de la función scroll_shell

La función scroll_shell realiza el desplazamiento de la pantalla hacia arriba cuando el cursor llega al final del área visible. Además, se encarga de reiniciar el cursor y volver a mostrar el prompt del shell.


Propósito

Hacer scroll de una línea cuando el cursor alcanza la línea 24 y volver a imprimir el prompt.


Lógica paso a paso

mov ah, 0x06
mov al, 1
mov bh, [color_actual]
mov cx, 0x0000
mov dx, 0x184F
int 0x10
  • Realiza scroll de una línea hacia arriba con el color actual desde la esquina superior izquierda hasta la inferior derecha.
call comparar_comando
cmp al, 1
je segundo_salto
  • Compara el comando ingresado. Si es reconocido, salta a la etiqueta segundo_salto.
mov dh, 24
mov dl, 0
  • Coloca el cursor en la última línea (fila 24, columna 0).
mov ah, 0x02
mov bh, 0x00
int 0x10
  • Actualiza la posición del cursor.
mov ah, 0x06
mov al, 1
mov bh, [color_actual]
mov cx, 0x0000
mov dx, 0x184F
int 0x10
  • Vuelve a hacer scroll una vez más (parece redundante, pero asegura limpieza visual).
mov dh, 24
mov dl, 0
  • Asegura que el cursor quede bien posicionado en la línea 24.
jmp segundo_salto
  • Salta a segundo_salto para continuar con la rutina.
segundo_salto:
  • Marca el punto al que se salta después del scroll.
mov ah, 0x02
mov bh, 0x00
int 0x10
  • Mueve el cursor a la posición indicada (línea 24, columna 0).
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

  • La variable color_actual debe estar definida.
  • Mensaje_shell debe contener el texto del prompt.
  • comparar_comando y limpiar_buffer deben estar implementadas correctamente.