
"Wake up! 16b": fraktal çəkən və onu səsləndirən 16 baytlıq x86 kodu
Demoscene sənətçisi HellMood Outline demopartiyasında təqdim olunan "wake up! 16b" haqqında yazı dərc edib. Real rejimdə işləyən 16 baytlıq DOS proqramı mətn yaddaşında sonsuz Sierpinski fraktalı çəkir və eyni baytlarla kompüterin dinamikini səsləndirir.
Demoscene sənətçisi HellMood, 2026-cı ilin mayında Niderlandın Ommen şəhərində keçirilən Outline demopartiyasında təqdim olunan "wake up! 16b" əsəri haqqında ətraflı yazı dərc edib. Real rejimdə işləyən 16 baytlıq bu kiçik DOS proqramı mətn yaddaşında sonsuz Sierpinski fraktalı çəkir və həmin baytlarla kompüterin dinamikini səsləndirir.
On altı bayt və hazır kanvas
Proqramın hamısı bir neçə təlimətdən ibarətdir: video rejimi 0-a, yəni 40×25 simvolluq şəbəkəyə quran BIOS çağırışı; verilənlər seqmentini CGA/VGA mətn buferi olan 0xb800 ünvanına yönəldən əməliyyat; sonra bir bayt oxuyan, mənbə indeksini 56 bayt geriyə sürüşdürən, həmin baytı XOR ilə video yaddaşına yazan və 61h portuna — dinamikin portuna — ötürən dövr. Dəyərin 1-ci biti dinamikin diafraqmasını çölə və ya içəri itələyir.
Kanvas boş deyil. BIOS ekranı təmizləyərkən bütün 2000 simvol hücrəsini 0x20 (boşluq) və 0x07 (qara üzərində açıq boz) ilə doldurur; yəni kod sıfırlara qarşı deyil, artıq mövcud olan bərabər naxışa qarşı XOR tətbiq edir.
Cəmdən Sierpinski
Kodu təmiz riyaziyyata endirsək, dövr ikiyə vurulmuş binom ardıcıllığı hesablayır: hər hücrə özündən əvvəlkilərin yığılmış cəminə çevrilir. XOR daşımasız toplama olduğu üçün bu ardıcıllığın modul-iki görünüşü Paskal üçbucağının modul-iki halıdır — Sierpinski xalçası. Müəllif bu davranışı elementar hüceyrə avtomatlarının 60-cı qaydasına və bu ekvivalentliyi təmin edən Lukas teoreminə bağlayır.
Niyə bu cür səslənir
Addım −16 deyil, −56 baytdır, ona görə kod yalnız səkkizin qatı olan mövqelərə toxunur: 64 kilobaytlıq seqmenti yeddi dəfə dolanan 8.192 addım. Bu, dövrün uzunluğunu ikiqat artırır və əsas tezliyi yarıya endirir — səs bir oktava düşür. Eyni sürüşmə mənzərəni diaqonal kəsir: 80 sütunlu ekranda 56 bayt geri getmək 24 bayt irəli getməyə bərabərdir, ona görə yalnız on fərqli sütun yazılır və fraktal ekranla qalxan on simvol sütunu kimi görünür.
Dinamikə gedən hər şey fraktaldan gəlmir. Seqmentdə həmçinin kölgələnmiş video-BIOS kodu var; firmware-in yaddaşda qoyduğu məlumata qarşı XOR isə introyа maşından asılı olan o kobud çaları verir. HellMood qeyd edir ki, nəticə emulyator və BIOS versiyasına qarşı çox həssasdır və yaddaşın əvvəlcədən sıfırlanması mükəmməl bərabərlik verərdi — lakin bu, onun malik olmadığı baytların hesabına baş verərdi.
Real avadanlıqda
Demoscene sənətçisi miragept intronu dövrünün avadanlığında yazıb və MDA/Hercules ekranında görünməsi üçün ünvanı 0xb800-dən 0xb000-ə dəyişib: EGA kartlı 286 və IBM 5151 monitor. HellMood-un 2014-cü ildəki "M8trix" işi səkkiz baytla ekrana yalançı-təsadüfi hərflər səpirdi; bu dəfə, müəllifin sözlərinə görə, əvvəlcə səs gəldi.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.