Geri Dön

"Wake up! 16b": fraktal çizen ve onu seslendiren 16 baytlık x86 kodu
SiTech AI Team2 dk okuma

"Wake up! 16b": fraktal çizen ve onu seslendiren 16 baytlık x86 kodu

Demoscene sanatçısı HellMood, Outline demopartisinde yayınlanan "wake up! 16b" için ayrıntılı bir yazı yayımladı. Gerçek modda çalışan 16 baytlık DOS programı metin belleğine sonsuz bir Sierpinski fraktalı çiziyor ve aynı baytlarla PC hoparlörünü sürüyor.

Demoscene sanatçısı HellMood, Mayıs 2026'da Hollanda'nın Ommen kentindeki Outline demopartisinde yayınlanan "wake up! 16b" adlı çalışması için ayrıntılı bir yazı yayımladı. Gerçek modda çalışan 16 baytlık bu küçük DOS programı, metin belleğine sonsuz bir Sierpinski fraktalı çiziyor ve aynı baytlarla bilgisayarın hoparlörünü sürüyor.

On altı bayt ve hazır bir tuval

Programın tamamı birkaç komuttan oluşuyor: video modunu 0'a, yani 40×25 karakterlik bir ızgaraya ayarlayan bir BIOS çağrısı; veri segmentini CGA/VGA metin tamponu olan 0xb800 adresine yönelten bir komut; ardından bir bayt okuyan, kaynak indeksini 56 bayt geriye kaydıran, bu baytı XOR ile video belleğine işleyen ve hoparlör portu olan 61h'e yazan bir döngü. Değerin 1. biti hoparlör diyaframını dışarı ya da içeri itiyor.

Tuval boş değil. BIOS ekranı temizlerken 2.000 karakter hücresinin tamamını 0x20 (boşluk) ve 0x07 (siyah üzerine açık gri) ile dolduruyor; yani kod sıfırlara karşı değil, hâlihazırda var olan tekdüze bir desene karşı XOR uyguluyor.

Toplamdan Sierpinski

Kod saf matematiğe indirgendiğinde döngü, ikiyle ölçeklenmiş bir binom dizisi hesaplıyor: her hücre kendinden öncekilerin kümülatif toplamı hâline geliyor. XOR eldesiz toplama olduğu için bu dizinin mod 2 görünümü, Pascal üçgeninin mod 2 hâli, yani Sierpinski halısı. Yazar bu davranışı temel hücresel otomatların 60. kuralına ve bu denkliği garanti eden Lucas teoremine bağlıyor.

Neden böyle kulağa geliyor

Adım −16 değil −56 bayt olduğu için kod yalnızca sekizin katı olan konumlara dokunuyor: 64 kilobaytlık segmenti yedi kez dolaşan 8.192 adım. Bu, döngü uzunluğunu ikiye katlıyor ve temel frekansı yarıya indiriyor; ses bir oktav düşüyor. Aynı kayma görüntüyü çapraz olarak kesiyor: 80 sütunlu bir ekranda 56 bayt geriye gitmek 24 bayt ileri gitmekle aynı olduğundan yalnızca on farklı sütun yazılıyor ve fraktal, ekranda yükselen on karakter sütunu olarak görünüyor.

Hoparlöre giden her şey fraktaldan gelmiyor. Segmentte ayrıca gölgelenmiş video BIOS kodu var; firmware'in bellekte bıraktığı veriye karşı XOR uygulanması, introya makineden makineye değişen o pürüzlü tınıyı veriyor. HellMood çıktının emülatör ve BIOS sürümüne karşı çok hassas olduğunu, belleğin önceden sıfırlanmasının kusursuz bir tekdüzelik sağlayacağını ancak bunun sahip olmadığı baytlara mal olacağını belirtiyor.

Gerçek donanımda

Demoscene sanatçısı miragept, introyu dönemin donanımında kaydetti ve MDA/Hercules ekranda görünmesi için adresi 0xb800'den 0xb000'e değiştirdi: EGA kartlı bir 286 ve IBM 5151 monitör. HellMood'un 2014 tarihli "M8trix" çalışması sekiz baytta ekrana sözde rastgele harfler saçıyordu; bu kez, yazarın ifadesiyle, önce ses geldi.

SiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.