მაისში, ნიდერლანდების ქალაქ ომენში გამართულ Outline Demoparty-ზე დეველოპერმა საზოგადოებას წარუდგინა უნიკალური ნამუშევარი სახელწოდებით „Wake up! 16b“. ეს არის x86 ასემბლერის ენაზე დაწერილი პროგრამა, რომელიც სულ რაღაც 16 ბაიტს იკავებს და ახერხებს ვიზუალური ფრაქტალის გენერირებასა და ხმის სინთეზს.
მათემატიკა 16 ბაიტში
პროგრამის ავტორი, რომელიც 30 წელზე მეტია პროგრამირებით არის დაკავებული, აღნიშნავს, რომ შთაგონება Plex-ის ნამუშევარმა „Rainbow Surf“-მა მისცა. „Wake up!“-ის შექმნის პროცესი დაფუძნებულია უჯრედულ ავტომატებსა და ასემბლერის ენის სპეციფიკურ ხრიკებზე, როგორიცაა ინსტრუქციების ხელახალი გამოყენება და მეხსიერების მისამართების მანიპულაცია.
პროგრამა DOS-ის რეალურ რეჟიმში მუშაობს. გაშვებისას ის ვიდეო მეხსიერებას იყენებს გამოთვლებისთვის, სადაც იხატება Sierpinski-ს უსასრულო ფრაქტალი. პარალელურად, ეს მონაცემები იგზავნება კომპიუტერის დინამიკის პორტზე, რაც ქმნის უნიკალურ, მათემატიკურად ზუსტ ხმოვან ეფექტს.
როგორ მუშაობს ტექნოლოგია
კოდი იყენებს BIOS-ის 10h შეწყვეტას 40x25 ტექსტური რეჟიმის გასააქტიურებლად. მეხსიერების სეგმენტი მიემართება 0xb800 მისამართზე, სადაც VGA/CGA ტექსტური ბუფერია განთავსებული. საინტერესოა, რომ პროგრამა არ ასუფთავებს მეხსიერებას ნულებით, არამედ ეყრდნობა სისტემის არსებულ მდგომარეობას, რაც ყოველ ჯერზე ოდნავ განსხვავებულ შედეგს იძლევა.
- სინესთეზია: პროგრამა ხედავს იმას, რასაც ისმენს. ფრაქტალის გენერირებისას მიღებული ბიტები პირდაპირ გარდაიქმნება ხმოვან სიგნალებად.
- ციკლური სტრუქტურა: 16-ბაიტიანი ნაბიჯებით მოძრაობისას, პროგრამა 4096 ნაბიჯში ასრულებს სრულ ციკლს, რაც მათემატიკურად სრულყოფილად ერგება 8-ბიტიან რეგისტრებს.
- ხმის ტემბრი: ხმა იქმნება არა მხოლოდ ფრაქტალის ალგორითმით, არამედ BIOS-ის მეხსიერებაში არსებული „დაფარული“ კოდის მეშვეობით, რაც ხმას განსაკუთრებულ, „გრეიტ“ ტემბრს სძენს.
ავტორის თქმით, ეს პროექტი მეტს გვასწავლის მათემატიკურ კავშირებზე, ვიდრე ნებისმიერი რანდომიზებული გენერატორი. კოდი იყენებს „XOR“ ოპერაციას „ADD“-ის ნაცვლად, რათა თავიდან აიცილოს არასასურველი არითმეტიკული გადავსებები და შეინარჩუნოს ფრაქტალის სტრუქტურა.
ჰარდვერის ხიბლი
პროგრამა მაღალი მგრძნობელობით გამოირჩევა გარემოს მიმართ. სხვადასხვა ემულატორები და BIOS-ის ვერსიები მეხსიერებაში განსხვავებულ ნარჩენ მონაცემებს ტოვებენ, რაც ნიშნავს, რომ პროგრამის „შესრულება“ თითოეულ კომპიუტერზე უნიკალურია. ავტორი ამას „sizecoding“-ის მთავარ ხიბლად მიიჩნევს.





დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.