Wake up! 16b
(hellmood.111mb.de)- Wake up! 16b adalah intro DOS mode real x86 16-byte yang diperkenalkan di Outline Demoparty, menciptakan fraktal Sierpinski dan suara secara bersamaan lewat buffer teks
- Dengan
int 10hdan pengaturands=0xb800, pola layar awal pada mode teks 40x25 dipakai sebagai ruang komputasi, sehingga byte spasi dan warna memengaruhi output xor [si], albekerja seperti penjumlahan tanpa carry, membentuk struktur Sierpinski pada bit 1, lalu byte yang sama dikirim ke speaker PC lewatout 61h, al- Loop sebenarnya bergerak -56 byte di setiap iterasi dan di-reset setelah 8.192 langkah; suaranya turun satu oktaf dan di layar muncul pola yang tershear menjadi 10 kolom karakter
- Lingkungan eksekusi seperti patch
0xB000untuk MDA/Hercules dan perbedaan status BIOS·RAM mengubah hasil, sehingga artefak perangkat keras alami menjadi bagian dari sizecoding
Struktur inti intro x86 16-byte
- Wake up! 16b adalah intro assembly DOS mode real x86 16-byte yang diperkenalkan pada Mei 2026 di Outline Demoparty, Ommen, Belanda
- Dengan memakai buffer teks VGA/CGA sebagai ruang komputasi, karya ini membentuk fraktal Sierpinski tak terbatas di layar dan mengirim data yang sama ke port speaker PC untuk menghasilkan suara
- Seluruh kode terdiri dari 16 byte
int 10h ; 2바이트 mov bh, 0xb8 ; 2바이트 mov ds, bx ; 2바이트 L: lodsb ; 1바이트 sub si, byte 57 ; 3바이트 xor [si], al ; 2바이트 out 61h, al ; 2바이트 jmp short L ; 2바이트 - Dalam proses pengembangannya, dieksplorasi penggunaan cellular automata untuk grafik dan suara sekaligus, instruksi assembly polimorfik
add [bx+si],alyang menjadi0x0000, serta teknik sizecoding yang mendaur ulang byte dan opcode dengan melompat ke tengah instruksi - Karya sebelumnya, "M8trix", adalah intro 8-byte dan 7-byte dari 2014 yang membuat karakter pseudorandom menyebar di layar; di Wake up! 16b, suara muncul lebih dulu lalu efek visual menyusul
Layar teks yang telah diinisialisasi
int 10hmengatur video mode 0, sehingga terbentuk kisi mode teks 40x25mov bh, 0xb8danmov ds, bxmenyetel segmen datadske alamat buffer teks VGA/CGA, yaitu0xb800- Saat BIOS membersihkan layar, memori tidak diisi nol, melainkan 2.000 slot karakter diisi dengan byte karakter
0x20(spasi) dan atribut warna0x07(abu-abu terang di atas latar hitam) - Layar tampak kosong, tetapi di memori tertinggal pola seragam, dan keadaan awal ini memengaruhi output suara maupun visual
- Data di depan dan belakang memori video yang terlihat, serta cara inisialisasi setelah “clear screen”, ikut tercampur ke hasil, menghasilkan suara yang lebih kasar dan unik dari perkiraan
Jumlah kumulatif dan struktur binomial
- Jika hanya melihat struktur matematisnya, keadaan awal bisa dianggap 0 alih-alih
0x20, memakaiaddalih-alihxor, bergerak 16 byte per langkah, danaldimulai dari 2 - Segmen DOS berukuran tepat 65.536 byte, dan jika bergerak 16 byte per langkah, diperlukan 4.096 langkah untuk mengelilingi seluruh segmen
- Karena 4.096 adalah kelipatan dari 256, ukuran register 8-bit, carry-over akan tetap selaras saat segmen melakukan wrap, dan di awal setiap sweep
alkembali ke 2 - Jika nilai antar sel terus dijumlahkan, terbentuk partial sum (prefix sum), dan nilainya berkembang seperti deret koefisien binomial yang diskalakan 2x
- Jika beberapa pass pada 16 sel pertama diamati, nilainya terakumulasi per baris, dan karena nilainya 8-bit, bagian yang melebihi 256 akan wrap dan kembali muncul sebagai nilai kecil
XOR dan struktur Sierpinski
- Berdasarkan sifat kombinatorik modulo 2, muncul segitiga Sierpinski, dan bit ini langsung dikeluarkan ke speaker PC
- Pada level bit, penjumlahan tanpa carry adalah XOR, sehingga kode memakai
xor [si], alalih-alihadd - Nilai awal 2 adalah biner
00000010, jadi hanya bit 1 yang toggle antara0x00dan0x02 - Pola ini sesuai dengan rule 60 pada elementary cellular automata
- Menurut teorema Lucas, pola ini cocok dengan bit 1 dari tabel penjumlahan, dan pada tabel posisi dengan bit 1 aktif ditunjukkan sebagai
2
Bagaimana data menjadi suara
out 61h, almengirim byte yang telah dihitung ke port61hyang terhubung ke speaker PC- Bit 1 pada port
61hmenentukan apakah kerucut speaker didorong ke luar atau ditarik ke dalam - Kode menghitung fraktal dengan XOR, menulis hasilnya ke memori, lalu segera mengirim byte yang sama ke port speaker
- Nilai 1 dan 0 yang muncul dari fraktal membentuk gelombang kotak (square wave) dengan lebar pulsa dan frekuensi yang berubah secara alami; ketika diputar linewise, hasilnya menjadi bytebeat yang self-similar dan hampir tidak berubah tempo
- Suara output tidak hanya mencampurkan buffer teks, tetapi juga byte lain di sisa segmen 64KB; karena ada kode shadowed video ROM BIOS di dalamnya, terdengar suara yang lebih kasar dan funky dibanding overlayed rectangle wave bytebeat berbasis garis Sierpinski yang diharapkan
Langkah 56 byte: oktaf dan shear diagonal
- Kode sebenarnya tidak bergerak 16 byte per langkah; kombinasi
lodsbdansub si, byte 57membuatnya bergerak -56 byte mundur di setiap iterasi - Lebar langkah ini membuat layar terisi lebih jarang sambil menjaga agar buffer suara tidak terlalu besar, dan dipakai untuk mereproduksi efek visual seperti M8trix
-
Audio
- 56 tidak membagi 65.536 secara tepat
- Kode hanya mengunjungi offset kelipatan 8, dan baru reset setelah 8.192 langkah dan 7 kali wrap
- Karena panjang siklus menjadi dua kali lipat, frekuensi dasarnya turun setengah sehingga suara turun satu oktaf
-
Visual
- Pada layar selebar 80 byte, perpindahan -56 byte setara dengan maju 24 byte, yaitu berpindah 12 kolom
- Hanya ada 10 kolom berbeda yang benar-benar dikunjungi
- Fraktal tidak tampil sebagai gambar penuh, melainkan tershear secara diagonal menjadi 10 kolom karakter yang bergerak ke bagian atas layar
- Segitiga sebenarnya lebarnya 8.192 “piksel”, tetapi satu baris karakter hanya 80 byte, jadi gerakannya terasa namun struktur keseluruhannya sulit dilihat langsung
- Jika digambar sekaligus tanpa melewati piksel atau memakai layar yang jauh lebih besar, segitiganya bisa terlihat
Menjalankan di perangkat keras nyata
- Scener miragept menjalankannya di perangkat keras nyata dengan mem-patch alamat dari
0xB800ke0xB000yang dipakai MDA, demi teks hijau yang cocok untuk MDA/Hercules - Perangkat yang dipakai bukan komputer IBM yang benar-benar asli, melainkan 286 dengan kartu EGA yang dapat mengemulasikan MDA/Hercules, serta monitor MDA sungguhan
- Audio hasil capture bercampur dengan noise konstan dari mesinnya sendiri, dan monitor IBM 5151 memiliki afterglow fosfor yang panjang, sehingga kurang cocok untuk tampilan yang sangat cepat
- Karena perubahan byte alamat, suaranya sedikit berubah, tetapi tetap bekerja sesuai niat, dan pada bagian akhir struktur Sierpinski terlihat lebih jelas daripada versi aslinya
- Bergantung pada emulator dan versi BIOS, artefak yang tertinggal di RAM bisa berbeda, dan karena kode melakukan XOR pada keadaan memori itu, outputnya sensitif terhadap lingkungan eksekusi
- Memori bisa dibersihkan lebih dulu untuk mendapatkan output yang seragam, tetapi itu memerlukan byte tambahan; pendekatan menerima keadaan perangkat keras yang alami tetap menjadi daya tarik sizecoding
Materi terkait
- Nanogems - daftar kurasi Tiny Intro unggulan dari demoscene
- HellMood's productions on Pouet
- Capture on a 286/MDA/Hercules - capture perangkat keras nyata oleh miragept
- Sizecoding Wiki
- "Rainbow Surf" - intro x86 16-byte karya Plex
- "M8trix" - intro 8-byte karya HellMood
1 komentar
Komentar Hacker News
https://youtu.be/b-Fa6HtvGtQ?si=LpQszgA9_K-m3V3-
Keduanya cerdas dan eksperimental. Parker lebih dekat ke matematika murni, sedangkan Mould melintasi berbagai bidang dan benar-benar memuaskan hasrat eksperimen/DIY
Kalau suka video ini, sangat disarankan untuk menonton kedua kanal itu lebih banyak
https://www.youtube.com/@standupmaths
https://www.youtube.com/@SteveMould
Demo itu bahkan tidak punya suara
Ini benar-benar pekerjaan yang luar biasa, sebuah mahakarya yang layak dijadikan karya pensiun. Atau lebih realistisnya, nanti akan dikejar lagi di arsitektur lain
Bravo
https://www.youtube.com/watch?v=QKLhH_ANwIc
Komunitas size coding kami sempat mengira semua trik cellular automata sudah ditemukan beberapa tahun lalu, lalu Plex muncul dan membuktikan bahwa itu tidak benar ♥
Tidak tahu apakah pernah ada tulisan tentang pendahulunya, m8trix, tapi aku pernah membedahnya sedikit saat baru keluar pada 2014: https://scot.tg/2014/05/31/amazing-code-density/
Semuanya begitu indah, benar-benar seni. Sedihnya, di industri sekarang yang isinya AI dan semacamnya, biasanya tidak banyak kesempatan untuk membuat hal seperti ini