shutdown
Pequeno utilitário para desligar ou reiniciar MS-DOS em máquinas com suporte a APM 1.2.
Utilitário pequeno em C 16-bit que desliga ou reinicia MS-DOS via APM 1.2.
Fiz para usar com DOS rodando no VirtualBox. A VM ficava aberta consumindo CPU porque não havia jeito limpo de mandar a máquina virtual desligar de dentro do sistema convidado. Sem cerimônia: o programa é minúsculo, fala direto com APM e termina.
APM 1.2 (Advanced Power Management) é a interface de gerenciamento de energia disponível em sistemas anteriores ao ACPI, exposta via interrupções da BIOS. Funciona em qualquer máquina, real ou virtual, com APM 1.2.
A implementação combina um pequeno programa em C com rotinas em Assembly x86 (NASM), compilado com Turbo C para 16 bits. O resultado são três arquivos .com – sd.com, quit.com e reboot.com – cada um com uma função específica.
sd -r # reinicia
sd -h # desliga
reboot # reinicia
quit # desliga
O wrapper com nomes alternativos é só para parecer mais natural no prompt do DOS.
Os binários e o código estão no repositório.