Scroll en shell
Este es el código de la función scroll_shell
de DariOS
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
ylimpiar_buffer
deben estar implementadas correctamente.