חזרה

‏"Wake up! 16b": 16 בייטים של x86 שמציירים פרקטל ומשמיעים אותו
SiTech AI Team2 דק׳ קריאה

‏"Wake up! 16b": 16 בייטים של x86 שמציירים פרקטל ומשמיעים אותו

הדמוסינר HellMood פרסם כתיבה מפורטת על האינטרו "wake up! 16b", שהוצג בפסטיבל הדמו Outline בהולנד. תוכנית DOS בת 16 בייטים מציירת בזיכרון הטקסט פרקטל סיירפינסקי אינסופי, ואותם בייטים בדיוק מפעילים את הרמקול של המחשב.

הדמוסינר HellMood פרסם כתיבה מפורטת על האינטרו "wake up! 16b", שהוצג בפסטיבל הדמו Outline בעיירה אומן שבהולנד במאי 2026. תוכנית DOS זעירה במצב real mode מציירת בזיכרון הטקסט פרקטל סיירפינסקי אינסופי, ואותם בייטים בדיוק מפעילים את הרמקול של המחשב.

שישה־עשר בייטים וקנבס מוכן מראש

התוכנית כולה היא קומץ פקודות: קריאה ל־BIOS שמגדירה מצב וידאו 0, רשת של 40×25 תווים; פקודה שמפנה את סגמנט הנתונים לכתובת 0xb800, מאגר הטקסט של CGA/VGA; ואז לולאה שקוראת בייט, מזיזה את אינדקס המקור 56 בייטים אחורה, מבצעת XOR של אותו בייט אל תוך זיכרון הווידאו וכותבת אותו ליציאה 61h — היציאה של הרמקול. הביט הראשון של הערך דוחף את קרום הרמקול החוצה או פנימה.

הקנבס אינו ריק. כאשר ה־BIOS מנקה את המסך הוא ממלא את כל 2,000 תאי התווים בערך 0x20 (רווח) ובערך 0x07 (אפור בהיר על שחור), כך שהקוד מבצע XOR מול תבנית אחידה קיימת ולא מול אפסים.

סיירפינסקי מתוך סכומי קידומת

אם מצמצמים את הקוד למתמטיקה טהורה, הלולאה מחשבת סדרה בינומית מוכפלת בשתיים: כל תא נעשה לסכום מצטבר של קודמיו. מכיוון ש־XOR הוא חיבור בלי נשא, התבוננות בסדרה הזו מודולו שתיים נותנת את משולש פסקל מודולו שתיים — שטיח סיירפינסקי. הכותב קושר את ההתנהגות הזו לכלל 60 של אוטומטים תאיים אלמנטריים ולמשפט לוקאס, שמבטיח את השקילות.

למה זה נשמע כך

הצעד הוא ‎−56 בייטים ולא ‎−16, ולכן הקוד נוגע רק בהיסטים שהם כפולות של שמונה: 8,192 צעדים שמקיפים את הסגמנט בן 64 הקילובייט שבע פעמים. זה מכפיל את אורך המחזור ומוריד בחצי את התדר היסודי — הצליל יורד באוקטבה. אותו היסט גם גוזר את התמונה באלכסון: במסך בן 80 עמודות, תנועה של 56 בייטים אחורה שקולה לתנועה של 24 קדימה, ולכן נכתבות רק עשר עמודות שונות, והפרקטל נראה כעשרה עמודי תווים שמטפסים על המסך.

לא כל מה שנשלח לרמקול מגיע מהפרקטל. בסגמנט נמצא גם קוד מוצלל של וידאו־BIOS, וה־XOR מול מה שה־firmware השאירה בזיכרון הוא שנותן לאינטרו את הגוון המחוספס והתלוי־במכונה. HellMood מציין שהתוצאה רגישה מאוד לגרסת האמולטור וה־BIOS, ושאפסון מוקדם של הזיכרון היה נותן אחידות מושלמת — במחיר של בייטים שאין לו.

על חומרה אמיתית

הדמוסינר miragept צילם את האינטרו על חומרה מתקופתו, לאחר ששינה את הכתובת מ־0xb800 ל־0xb000 כדי שיוצג על מסך MDA/Hercules: מחשב 286 עם כרטיס EGA ומסך IBM 5151. היצירה הקודמת של HellMood, ‏"M8trix" מ־2014, פיזרה אותיות פסאודו־אקראיות על המסך בשמונה בייטים; הפעם, לדבריו, הצליל בא ראשון.

SiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.