____ _ ____ ___ ____
| _ \ ___| |_ _ __ ___ / ___| _ __ __ _ ___ ___/ _ \/ ___|
| |_) / _ \ __| '__/ _ \\___ \| '_ \ / _` |/ __/ _ \ | | \___ \
| _ < __/ |_| | | (_) |___) | |_) | (_| | (_| __/ |_| |___) |
|_| \_\___|\___|_| \___/|____/| .__/ \___,_|\___\___|\___|____/
|_| v1.0
Un sistema operativo educativo de 32 bits desarrollado desde cero
- Características
- Requisitos
- Instalación Rápida
- Uso
- Comandos del Shell
- Estructura del Proyecto
- Documentación
- Desarrollo
- ✅ Bootloader Multiboot - Compatible con GRUB2
- ✅ Kernel de 32 bits - Modo protegido x86
- ✅ Terminal VGA - 80x25, 16 colores, scroll automático
- ✅ IDT Completa - 256 entradas de interrupciones
- ✅ Timer PIT - 100 Hz con soporte para sleep()
- ✅ Teclado PS/2 - Layout US, Shift, Caps Lock, Ctrl
- ✅ 12 comandos disponibles
- ✅ Prompt personalizado con colores
- ✅ Atajos de teclado (Ctrl+C, Ctrl+L)
- ✅ Efecto Matrix y animaciones
# Ubuntu/Debian
sudo apt update
sudo apt install build-essential nasm grub-pc-bin xorriso mtools
# Arch Linux
sudo pacman -S base-devel nasm grub libisoburn mtools# QEMU (recomendado)
sudo apt install qemu-system-x86 # Ubuntu/Debian
sudo pacman -S qemu-system-x86 # Arch Linux# 1. Clonar el repositorio (si no lo tienes)
git clone https://github.com/tu-usuario/RetroSpaceOS.git
cd RetroSpaceOS
# 2. Compilar
./build.sh
# 3. Ejecutar
./run.sh./build.shEsto generará:
RetroSpaceOS.bin- Kernel binario (~28 KB)RetroSpaceOS.iso- ISO booteable (~12 MB)
# Modo normal
./run.sh
# Con más memoria
./run.sh -m 1G
# Modo debug (GDB)
./run.sh -d
# Sin display (solo serial)
./run.sh -n| Comando | Descripción |
|---|---|
help |
Muestra la ayuda con todos los comandos |
clear |
Limpia la pantalla |
echo <texto> |
Imprime texto en la terminal |
time |
Muestra el tiempo desde el arranque |
info |
Información del sistema |
about |
Información sobre RetroSpaceOS |
reboot |
Reinicia el sistema |
color <0-15> |
Cambia el color del texto |
rainbow |
Muestra todos los colores disponibles |
matrix |
Efecto Matrix (presiona tecla para salir) |
calc <n1> <op> <n2> |
Calculadora simple (+, -, *, /) |
Ctrl+C- Cancelar línea actualCtrl+L- Limpiar pantalla (mantiene prompt)
RetroSpaceOS/
├── bootloader/
│ ├── boot.asm # Bootloader Multiboot
│ ├── interrupts.asm # ISRs e IRQs en Assembly
│ └── grub.cfg # Configuración de GRUB
├── src/
│ └── kernel.c # Código principal del kernel
├── docs/
│ ├── PROGRESS.md # Progreso del desarrollo
│ ├── ROADMAP.md # Guía paso a paso
│ ├── QUICK_REFERENCE.md # Referencia rápida
│ └── RESUMEN.md # Resumen del proyecto
├── linker.ld # Script del enlazador
├── build.sh # Script de compilación
├── run.sh # Script para ejecutar en QEMU
└── README.md # Este archivo
| Documento | Descripción |
|---|---|
| PROGRESS.md | Estado actual y tareas completadas |
| ROADMAP.md | Guía de desarrollo paso a paso |
| QUICK_REFERENCE.md | Referencia rápida de código |
| INDEX.md | Índice general del proyecto |
terminal_initialize() // Inicializa el terminal
terminal_putchar() // Escribe un carácter
terminal_writestring() // Escribe una cadena
terminal_clear() // Limpia la pantalla
terminal_scroll() // Scroll de la pantallaidt_init() // Inicializa la IDT
idt_set_gate() // Configura una entrada
isr_handler() // Maneja excepciones CPU
irq_handler() // Maneja interrupciones HW
pic_remap() // Remapea los PICstimer_init(100) // Configura a 100 Hz
timer_handler() // Incrementa ticks
sleep(1000) // Espera 1 segundo
get_ticks() // Obtiene ticks del sistemakeyboard_handler() // Maneja IRQ del teclado
keyboard_getchar() // Lee carácter (bloqueante)
keyboard_getchar_nonblocking() // Lee carácter (no bloqueante)
keyboard_has_char() // Verifica buffer| Código | Color |
|---|---|
| 0 | Negro |
| 1 | Azul |
| 2 | Verde |
| 3 | Cyan |
| 4 | Rojo |
| 5 | Magenta |
| 6 | Marrón |
| 7 | Gris claro |
| 8 | Gris oscuro |
| 9 | Azul claro |
| 10 | Verde claro |
| 11 | Cyan claro |
| 12 | Rojo claro |
| 13 | Magenta claro |
| 14 | Amarillo |
| 15 | Blanco |
- Líneas de código: ~1300
- Tamaño del kernel: 28 KB
- Comandos del shell: 12
- Interrupciones manejadas: 48
Las siguientes características están planificadas para versiones futuras:
- Gestión de memoria - kmalloc/kfree
- Paginación - Memoria virtual
- Multitarea - Múltiples procesos
- Sistema de archivos - FAT16 o similar
- Modo gráfico VBE - Interfaz gráfica
- OSDev Wiki - Documentación de desarrollo de OS
- Intel Software Developer Manuals
- James Molloy's Kernel Tutorial
Este proyecto es software libre y puede ser utilizado con fines educativos.
Desarrollado con ❤️ para aprender sobre sistemas operativos
RetroSpaceOS v1.0 - Un paso hacia entender cómo funciona un OS desde cero