feat(renaser): Fase 12 — la bocina del PC como capacidad de host
La Fase 11 dio al userspace un reloj; la Fase 12, una voz. Hasta hoy renaser solo sabía dibujar para llamar la atención. - Driver `drivers/altavoz`: el canal 2 del PIT como generador de onda cuadrada + la compuerta del puerto 0x61. El canal 0 —latido del kernel— no se toca. `tono(hz)` es su única vía; un 0 la silencia. - Capacidad `sys_tono(frecuencia_hz)` — la undécima función del host. La bocina es un recurso único: pertenece a la ventana ENFOCADA, como el teclado desde la Fase 8c. Al cambiar el foco, el compositor la calla; la nueva dueña la reclama en su próximo fotograma. - App nueva `tonada` (`apps/tonada/`, wasm32): toca una escala de Do mayor y la dibuja como una escalera de barras. Junta el reloj (`sys_tiempo_mono`) y la bocina (`sys_tono`). - `GENESIS` crece de 6 a 7 apps; `tonada` es la maestra del escritorio. Verificado en QEMU. Visual: la escalera de `tonada` recorre la escala con el tiempo. Sonido: con la bocina enrutada a un WAV, el PCM capturado es una onda cuadrada oscilante de ~375 Hz — la frecuencia media de la escala de Do mayor. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -410,6 +410,9 @@ fn mover_foco(adelante: bool) {
|
||||
}
|
||||
}
|
||||
FOCO.store(nuevo, Ordering::Relaxed);
|
||||
// La bocina pertenece a la ventana enfocada (Fase 12): al cambiar el foco,
|
||||
// callar — la nueva dueña la reclamara en su proximo fotograma si quiere.
|
||||
crate::drivers::altavoz::tono(0);
|
||||
// La ventana recien enfocada, si flota, al frente del orden-Z.
|
||||
alzar_si_flota(&mut escritorio, nuevo);
|
||||
recomponer(&escritorio);
|
||||
@@ -599,6 +602,8 @@ fn cerrar() {
|
||||
})
|
||||
.unwrap_or(foco);
|
||||
FOCO.store(nuevo, Ordering::Relaxed);
|
||||
// El foco cambia: callar la bocina (Fase 12) — ver `mover_foco`.
|
||||
crate::drivers::altavoz::tono(0);
|
||||
alzar_si_flota(&mut escritorio, nuevo);
|
||||
aplicar_teselado(&mut escritorio);
|
||||
recomponer(&escritorio);
|
||||
|
||||
Reference in New Issue
Block a user