рдкрд░рд┐рдЪрдп
рдирдорд╕реНрдХрд╛рд░! рдореЗрд░рд╛ рдирд╛рдо рд╣реЗрд▓рдореВрдб рд╣реИ, рдФрд░ рдпрд╣ рд▓реЗрдЦ рдПрдХ рдЫреЛрдЯреЗ рдПрдордПрд╕ рдбреЙрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬрд┐рд╕реЗ рдпрд╛рджреЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ 256 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ, рдпрд╣ 2020 рдореЗрдВ ┬лрдкреАрд╕реА 256 рдмрд╛рдЗрдЯ┬╗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдбреЗрдореЛрд╕рд┐рди ┬лрд╕рдВрд╢реЛрдзрди┬╗ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдЬреАрддрд╛ , рдФрд░ рдСрдбрд┐рдпрдВрд╕ рдЕрд╡рд╛рд░реНрдб рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдЖрдк рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░ рдСрдирд▓рд╛рдЗрди рджрд░реНрд╢рдХреЛрдВ рдФрд░ рдордзреНрдпрд╕реНрдереЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред рд░рд┐рд▓реАрдЬ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЫреЛрдбрд╝реЗрдВред рдпрд╣ рд▓реЗрдЦ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛, рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рдВрджрд░реНрднреЛрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛ред рд▓реЗрдЦ рд╕рд┐рдЬрд╝рдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдХреА рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдпрд╛рджреЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░реЗрдВ! рдпрджрд┐ рдЖрдк рд╕рд┐рдЬрд╝рдХреЛрдбрд┐рдВрдЧ (рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рднреАрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛) рдпрд╛ x86 рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рдирдП рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рдХреА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ ред рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИредрд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо DosBox (256 рдмрд╛рдЗрдЯреНрд╕) рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднреЗрдЬреЗ рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдлреНрд░реАрдбреЛрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдбреЙрд╕ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╣реИрдВ, рдЬреЛ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп рд╕рднреА рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред рдЗрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдкреНрд░рдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗрд╡рд▓ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред 2020 рдХреЗ "рд╕рдВрд╢реЛрдзрди" рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА "рдкреАрд╕реА 256 рдмрд╛рдЗрдЯреНрд╕" рд╢реНрд░реЗрдгреА рдореЗрдВ, "рдлреНрд░реАрдбреЛрд╕" рдпрд╛ "рдбреЙрд╕рдмреЙрдХреНрд╕" рдХреЛ рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз)ред рдЬреИрд╕рд╛ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдмрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк DosBox рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ FreeDos, MS DOS, WinXP рдФрд░ Win98 рдореЗрдВ рдХрд╛рдо рдХрд░реЗ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛редрдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИрдВред рдЖрдЧреЗ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд╕реНрдерд╛рди рдорд┐рд▓ рдЧрдП рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдЫреЛрдЯреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╣реИ, рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдХреЛрдб рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдФрд░ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рднреНрд░рдорд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛редрдЫреЛрдЯреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕
Http://www.pouet.net рдкрд░ рдЖрдпрд╛рдо рд╢реНрд░реЗрдгрд┐рдпрд╛рдВрд╣рдо, рд╕рд╛рдЗрдЬрд╝рдХреЛрдбрд░реНрд╕, рдЖрдХрд╛рд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рд░рдгред рдПрдордПрд╕ рдбреЙрд╕ рдХреЗ рд▓рд┐рдП, рдпреЗ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ 256 рдмреА, 128 рдмреА, 64 рдмреА рдФрд░ 32 рдмреА рд╣реИрдВред рдпреЗ рдбреЗрдореЛ рджреГрд╢реНрдп www.pouet.net рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдорд╛рдирдХ рд╣реИрдВред рдХреЛрдИ 16 рдмреА рд╢реНрд░реЗрдгреА рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рдЫреЛрдЯреЗ рдкреНрд░рднрд╛рд╡ 16 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред "рдпрд╛рджреЗрдВ" рд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рднрд╛рд╡ рдкрд╣рд▓реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рднрд╛рд╡ рдХреЗ рдореМрдЬреВрджрд╛ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ, рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛, рд▓реЗрдХрд┐рди рдЫреЛрдЯрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рдерд╛ред рдЖрдХрд╛рд░ рдореЗрдВ рдХрдореА рд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╢реНрд░реЗрдгреА рдореЗрдВ рдХрдореА рдХрд░рдирд╛ рд╣реИ 2 ^ Nред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рднрд╛рд╡ 33-64 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ 32 рдмрд╛рдЗрдЯреНрд╕ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдЧрднрдЧ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рдирд┐рдЪрд▓реА рд╢реНрд░реЗрдгреА рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ "рдХрдо" рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рддреЛ рдореИрдВрдиреЗ рдкрд░рд┐рдгрд╛рдореА рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбреЗрдореЛрд╕рд┐рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рджреВрд░рджрд░рд╛рдЬ рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рд╢реНрд░реЗрдгреА 256 рдмреА рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ, рдФрд░ www.pouet.net рдкрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛редред рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдкреНрд░рднрд╛рд╡реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдКрдВрдЧрд╛, рд╕рд╛рде рд╣реА рдЙрдирдХреЗ рдореВрд▓ рдФрд░ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛редрд╢рддрд░рдВрдЬ рдХреА рдмрд┐рд╕рд╛рдд
kasparov, 16 рдмрд╛рдЗрдЯреНрд╕редрдЗрд╕ рдЖрд╢рдп рдХрд╛ рд╕реНрд░реЛрдд 2018 рдХрд╛ рдореЗрд░рд╛ рдЦреБрдж рдХрд╛ "Kasparov 16b" ( рд▓рд┐рдВрдХ ) рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ (рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рд╕реЗ рдЙрджреНрдзрд░рдг), рдореИрдВрдиреЗ "рдмрд╕ рдЗрд╕ рдмреЛрд░реНрдб рдХреЛ рдмрдирд╛рдпрд╛, рдЗрд╕реЗ 17 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдлрд┐рдЯ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдПрдХ рдЪрд╛рд▓ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ ..."ред рдкрд╣рд▓реЗ, 32 рдмрд╛рдЗрдЯреНрд╕: 2003 рдИрд╡ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рд╣реЗрдбрдХреНрд░реИрд╢ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдерд╛ред ( рд▓рд┐рдВрдХ ) рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ 8x8 рд╡рд░реНрдЧ рдФрд░ рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде "рдЕрд╕рд▓реА" рд╢рддрд░рдВрдЬ рдХреЗ рдмреЛрд░реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕рд╛рде рд╣реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢рддрд░рдВрдЬ рдХреЗ рд╕рд╣реА рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕, рдпрд╛рдиреА рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ (рдПрдЪ 1) рдХреЛ рд╕рдлреЗрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредред рдЗрд╕ рдЖрд╢рдп рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рд╕реНрдореГрддрд┐рдпреЛрдВ" рдореЗрдВ рдЗрд╕реЗ рджреВрд╕рд░реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝рд╛: рд╕реНрдХреНрд░реАрди рдкрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреА рджрд┐рд╢рд╛ рдмрджрд▓ рджреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ "рд╕реНрдХреНрд░реЙрд▓ рдЭреБрдХрд╛ рд╣реБрдЖ рд╡рд┐рдорд╛рди" рдкреНрд░рднрд╛рд╡ рд╕реЗ рдЕрд▓рдЧ рд╣реЛредрдЬреВрдорд┐рдВрдЧ рд╕рд░реНрдХрд▓
рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рд░реНрдХрд▓ (рдЬрд╝реВрдорд┐рдВрдЧ рд╕рд░реНрдХрд▓) 32 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЗрдВрдЯреНрд░реЛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдореЛрдкрд╛рддреА рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдереЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдореЗрдВ 64 рдмрд╛рдЗрдЯ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 64 рдмреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рднрд╛рд╡ рд╕рдВрднрд╡ рд╣реИред рдЬрд╝реВрдорд┐рдВрдЧ рд╕рд░реНрдХрд▓ рдПрдХ рдЧреЛрд▓ "рд╕реБрд░рдВрдЧ" рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рд╢реНрд░реЗрдгреА 32 рдмреА рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╣рддрд╛рд╢ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдереЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд┐рдХреЙрд░реНрдб рдЕрднреА рднреА 52 рдмрд╛рдЗрдЯреНрд╕ ("рдиреЙрдирдЯреНрдпреВрдм" - 2016) ( рд▓рд┐рдВрдХ ) рдерд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдХреНрд▓рд╛рд╕рд┐рдХ 64 рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдмрди рдЧрдпрд╛ред -рдмреЗрдЯреЗ рдкреНрд░рднрд╛рд╡ "рдирд┐рд░рдВрддрд░ рд╡рд┐рдХрд╛рд╕" рдбреЗрд╡рд▓рдкрд░реНрд╕ ryg / Farbrausch (2003) ( рд▓рд┐рдВрдХ )ред рдЬреВрдорд┐рдВрдЧ рд╕рд░реНрдХрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рджреВрд░реА рдФрд░ рдХреЛрдг рдХреЛ рд╕рдорд╛рдкреНрдд / рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╢реНрд░реЗрдгреА 32 рдмреА рдореЗрдВ рдЧрд┐рд░рдирд╛ рд╕рдВрднрд╡ рдерд╛редрдЭреБрдХрд╛ рд╣реБрдЖ рд╡рд┐рдорд╛рди рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛
рдлрд╝реНрд▓реЛрд░рдХрд╛рд╕реНрдЯ, рдПрдХ 32-рдмрд╛рдЗрдЯ рд╕рдВрд╕реНрдХрд░рдг,рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЭреБрдХреЗ рд╣реБрдП рд╡рд┐рдорд╛рди рдХреА рднрд┐рдиреНрдирддрд╛ , рдореЗрд░реА рдЕрдкрдиреА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, 2018 рдлрд╝реНрд▓реЛрд░рдХрд╛рд╕реНрдЯ 32 рдмреАред "рдлрд╝реНрд▓реЛрд░рд┐рдВрдЧ" рдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рд╕рд┐рдЬрд╝рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдЕрдкрдирд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╣реИ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ 256 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдШрдЯрдХрд░ 32 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдХреБрдЫ рджреЛ рд╡рд┐рдорд╛рдиреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдореЗрдВ - рдХреЗрд╡рд▓ рдПрдХред "рдлрд╝реНрд▓реЛрд░рдХрд╛рд╕реНрдЯ 32 рдмреА" рд░рд┐рд▓реАрдЬ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдПрдХреНрд╕рдУрдЖрд░" рдмрдирд╛рд╡рдЯ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ "рдпрд╛рджреЗрдВ" рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЗрд╕реЗ "рдПрдВрдб" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдХреЗ рд╕рд╛рде рдорд╛рд╕реНрдХрд┐рдВрдЧ рдХрд┐рдпрд╛ред- 2008 рдмрд╛рд░рд┐рд╢_рд╕реНрдЯреЙрд░реНрдо рд╕рдВрд╕реНрдХрд░рдг - 256 рдмрд╛рдЗрдЯреНрд╕ - рд▓рд┐рдВрдХ
- 2008 рдХрд╛ org_100h рд╕рдВрд╕реНрдХрд░рдг - 128 рдмрд╛рдЗрдЯреНрд╕ - рд▓рд┐рдВрдХ
- 2013 рдмреЙрдбреНрд╕рдлрд░ рд╕рдВрд╕реНрдХрд░рдг - 86 рдмрд╛рдЗрдЯреНрд╕ - рд▓рд┐рдВрдХ
- 2014 рдмреЙрдбреНрд╕рдлрд░ рд╕рдВрд╕реНрдХрд░рдг - 64 рдмрд╛рдЗрдЯреНрд╕ - рд▓рд┐рдВрдХ
- 2018 рд╣реЗрд▓рдореВрдб рд╕рдВрд╕реНрдХрд░рдг - 32 рдмрд╛рдЗрдЯреНрд╕ - рд▓рд┐рдВрдХ
рд▓рдВрдмрди рдмрд┐рд╕рд╛рдд
Projektbeschreibung, 32 рдмрд╛рдЗрдЯреНрд╕рдореИрдВрдиреЗ 2018 рдореЗрдВ 32-рдмрд╛рдЗрдЯ Projektbeschreibung рдкреНрд░рднрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдВрдмрди рдЪреЗрд╕рдмреЛрд░реНрдб рдЬрд╛рд░реА рдХрд┐рдПред рдЗрд╕рдореЗрдВ, рдореИрдВрдиреЗ "рдбрд┐рдЧрд┐рдорд╛рдЗрдВрдб" (2006) рдпрд╛ "рдореЗрд░реА" рд▓реБрд╕реА "(2014) ( рд▓рд┐рдВрдХ ) рд╕реЗ 32 рдмрд╛рдЗрдЯреНрд╕ рддрдХ" рдлреЙрд▓реЛ рдж рд▓рд╛рдЗрдЯ "( рд▓рд┐рдВрдХ ) рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ред рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╕реНрд░реЛрдд рд░рд╛рд░рд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рдкреИрд░рд╛рд▓реИрдХреНрд╕рд╛ (32 рдмрд╛рдЗрдЯреНрд╕, 2007, рд▓рд┐рдВрдХ ) рдФрд░ рд╕реЗрдВрд╕реЗрдВрд╕реНрдЯрд╣рд▓ (2013) рджреНрд╡рд╛рд░рд╛ рдмрд╛рдЗрдЯрд░реЛрдкреЛрд▓рд┐рд╕ ( рд▓рд┐рдВрдХ ) рдереЗред) Rrrolas рд░реЗрдВрдбрд░рд┐рдВрдЧ рддрдХрдиреАрдХ рдореЗрд░реЗ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рдереА, рд╡рд┐рдорд╛рдиреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреЛ рдЪреЗрд╕рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдореГрддрд┐рдпреЛрдВ рдиреЗ Digimind рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдХреГрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡ рдХреЛ рдЕрдзрд┐рдХрддрдо рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редSierpinski rotozoomer
colpinski, 16 рдмрд╛рдЗрдЯреНрд╕рд░реЛрдЯрд╕реНрдЯрд┐рдХ, 32 рдмрд╛рдЗрдЯреНрд╕рдЗрд╕рдореЗрдВ рджреЛ рдкреНрд░рднрд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рдмрдирд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЛрдЯреЛрдЬрд╝реВрдорд░ рдФрд░ рд╕реАрд░рдкрд┐рдиреНрд╕реНрдХреА рдкреНрд░рднрд╛рд╡ред Sierpinski рдкреНрд░рднрд╛рд╡ рдореЗрд░реЗ рдЕрдкрдиреЗ 2013 рдХреЗ Colpinski 16b рдкреНрд░рднрд╛рд╡ ( рд▓рд┐рдВрдХ ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ , рдЬрд╣рд╛рдВ рдореИрдВ рдлрдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди fsqrt рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕ рдЖрд╢рдп рдХрд╛ рдХреЛрдИ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ Iterated рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдСрдЯреЛрдореЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп X рдФрд░ Y рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "рд░реЛрдЯреЗрд╢рди рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ" (рд░реЛрдЯреЛрдЬрд╝реВрдорд░) 2017 рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ 32 рдмреА рдЗрдВрдЯреНрд░реЛ "рд░реЛрдЯрд╛рд╕реНрдЯрд┐рдХ" ( рд▓рд┐рдВрдХ ) рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдлрд░рдмреНрд░реБрд╢ (51 рдмрд╛рдЗрдЯреНрд╕, 2002, рд▓рд┐рдВрдХ ) рдФрд░ рд╕рдореВрд╣ рдХреЗ "рдЧрд░реНрдЧрд╛рдЬ" рджреНрд╡рд╛рд░рд╛ "рд░реЗрд╕реНрдкрд┐рд░реЗрд╕реА" рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред "(49 рдмрд╛рдЗрдЯреНрд╕, 2002, рд▓рд┐рдВрдХ )редрд░реЗрд╕реНрдЯрдХрд╛рд╕реНрдЯ рдЯрдирд▓
рдПрдХ рдирдП рдпреБрдЧ рдореЗрдВ, 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдгрд░реЗрдХрд╛рд╕реНрдЯ рдмреЗрдВрдЯ рдЯрдирд▓ рдореЗрд░реЗ рдЕрдкрдиреЗ 64-рдмрд╛рдЗрдЯ рд░рд┐рд▓реАрдЬрд╝, "рдЗрдирдЯреВ рдП рдиреНрдпреВ рдПрд░рд╛" (2018, рд▓рд┐рдВрдХ ) рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ ред рдореВрд▓ рд░рдВрдЧреЛрдВ рдХреЛ рдорд╛рдирдХ рдкреИрд▓реЗрдЯ рдХреЗ рд░рдВрдЧреЛрдВ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЧрдгрдирд╛рдУрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдмрдирд╛рд╡рдЯ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рдЖрд╢рдп рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдЖрдХрд╛рд░ рдореЗрдВ 50 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред 64-рдмрд╛рдЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рджреЛ 128-рдмрд╛рдЗрдЯ рдЗрдВрдЯреНрд░реЛ рдереЗ: рдЯреАрдмреАрд╕реА (2009, рд▓рд┐рдВрдХ ) рджреНрд╡рд╛рд░рд╛ рд╕реНрдкреЙрдиреНрдЬреА рдФрд░ рдмреЙрдбреНрд╕рдлрд░ (2014, рд▓рд┐рдВрдХ ) рджреНрд╡рд╛рд░рд╛ рд╡реБрд▓реНрдл128 , рдФрд░ рдореИрдВрдиреЗ рдЦреБрдж рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛редрд╕рд╛рдЧрд░ рд░рд╛рдд рджрд┐рди
рдорд╣рд╛рд╕рд╛рдЧрд░, рд╕рдВрд╕реНрдХрд░рдг 64bрдорд╣рд╛рд╕рд╛рдЧрд░ рдкреНрд░рднрд╛рд╡ "рдорд╣рд╛рд╕рд╛рдЧрд░" 2016 ( рд▓рд┐рдВрдХ ) рдХреА рдореЗрд░реА 64-рдмрд╛рдЗрдЯ рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ ред рдореВрд▓ рдХреЗ рд░рдВрдЧреЛрдВ рдФрд░ рд╕рдВрдЧреАрдд рдХреА рдПрдХ рдЕрд▓рдЧ рдкреАрдврд╝реА рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреЛрдиреЛрдВ рдЬрдирд░реЗрдЯрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдвреЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдореБрдЦреНрдп рдпрд╛рджреЗрдВ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рдереЗред "рднреЛрд░" рдХрд╛ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рднрд╛рд╡ рд░реВрдкрд░реЗрдЦрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдордЧреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛редрд▓реБрдкреНрдд рд╣реЛрддреА рдкреНрд░рднрд╛рд╡
рджреЛ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдкреНрд░рднрд╛рд╡ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдирд╣реАрдВ рд╣реИред рдмрд▓реНрдХрд┐, рдпрд╣ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реА рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдлреНрд░реЗрдо рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬреЛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЗрд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрд░рдг рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдХрдо рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдорд╛рдирдХ рд╡реАрдЬреАрдП рдкреИрд▓реЗрдЯ (рдЫрд╡рд┐, рд╕реНрд░реЛрдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЪрд┐рдХрдиреА рдорд┐рд╢реНрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд░рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдмрдЪрд╛рддрд╛ рд╣реИредрдореЗрд░реЗ "рдЫреЛрдЯреЗ рдореЗрдХреЛрдбреЗрдореЛ" рдХреА рд░реВрдкрд░реЗрдЦрд╛
рдХрдИ рдЫреЛрдЯреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдПрдХ "рдореЗрдЧрд╛рдбреЗрдореЛ" рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрдо рд╕реЗ рдХрдо рдЙрдиреНрд╣реЗрдВ рдорд╛рдиреНрдпрддрд╛рдУрдВ (рд╕реНрдореГрддрд┐ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рди рд╕рдордп рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдХреБрд▓ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдкрд╣рд▓реЗ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрд╛, рдФрд░ рдкрд╣рд▓реЗ рддреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рдиред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдкреНрд░рднрд╛рд╡реЛрдВ (рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рджрд░реНрд╢рдХреЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП) рдХреЛ рд╣реНрдпреВрдЧ рдЕрддреНрдпрдзрд┐рдХ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдбреЗрдореЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рддрдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдмрд╛рд░-рдмрд╛рд░ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЧрдгрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдмреНрд░реИрдХреЗрдЯрд┐рдВрдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЬреЛ рдХреБрдЫ рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛редрдлреНрд░реЗрдорд╡рд░реНрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддрд╛ рд╣реИ:org 100h
s:
mov al,0x13 ; set AL to mode 320*200 in 256 colors
int 0x10 ; call BIOS to set mode
xchg bp,ax ; set timing value to 0x13
push 0xa000-10 ; write the screen adress to register ES
pop es ; works in conjunction with Rrrola trick
mov ax,0x251c ; parameter for changing timer interrupt
mov dl,timer ; adress of timer routine, assume DH=1
int 0x21 ; install timer routine
top:
mov ax,0xcccd ; load magic Rrrola constant
mul di ; transform screen pointer to X, Y
add al,ah ; use transformation garbage as
xor ah,ah ; pseudorandom value and clear AH
add ax,bp ; add time value to random value
shr ax,9 ; divide by 512 (basically the speed)
and al,15 ; filter effect number
xchg bx,ax ; move effect number to BX
mov bh,1 ; reset BH to align with start of code
mov bl,[byte bx+table] ; read the effect address from the table
call bx ; call the effect
stosb ; write the return value and advance
inc di ; triple interlace trick for after
inc di ; effect and smoothing the animation
jnz top ; repeat until the frame is complete
mov al,tempo ; set AL to divider for timer
out 40h,al ; set timing (dual pass)
in al,0x60 ; read keyboard
dec al ; quit on ESC
jnz top ; otherwise repeat loop
sounds: db 0xc3, 11, 0x93; 0xc3 is MIDI/RET; fx2-s is used as volume
table: db fx2-s,fx1-s,fx0-s,fx3-s,fx4-s,fx5-s,fx6-s,sounds-s,stop-s
рд╢рддрд░рдВрдЬ рдХреА рдмрд┐рд╕рд╛рдд
рд╢рддрд░рдВрдЬрдХреА рд╕рд░рдгреА рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдкреНрд░рднрд╛рд╡ рд╣реИред рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рд╕рд┐рдХ XOR рдкреИрдЯрд░реНрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╢рддрд░рдВрдЬ рдХреА рдмрд┐рд╕рд╛рдд рдХреА рдЫрд╛рдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рджреЛ рдмрд┐рдЯреНрд╕ рд░рдВрдЧ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЕрд╕рд▓реА рдЪрд╛рд▓ рдкреИрд▓реЗрдЯ рдХреЗ "рдЕрдЪреНрдЫреЗ" рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдлрд╝реНрд░реЗрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд┐рд╕реЗ рдХрд╛рд▓рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рд╡реАрдЬреАрдП рдкреИрд▓реЗрдЯ рдХрд╛ рдХрд╛рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ ред рдпрд╣ рдкрд╛рд░реА рдЖрдкрдХреЛ рдЕрдВрдзреЗрд░реЗ рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдПрдХ рдкреНрд░рд╛рдЪреАрди рдмрд┐рд╕рд╛рдд рдХрд╛ рдПрд╣рд╕рд╛рд╕ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред xchg dx,ax ; get XY into AX
sub ax,bp ; subtract time from row
xor al,ah ; XOR pattern (x xor y)
or al,0xDB ; pattern for array of boards
add al,13h ; shift to good palette spot
рдЬреВрдорд┐рдВрдЧ рд╕рд░реНрдХрд▓
рдЬрд╝реВрдорд┐рдВрдЧ рд╕рд░реНрдХрд▓рдмрд┐рдВрджреБ (X, Y) рд╕реЗ рдХреЗрдВрджреНрд░ (0,0) рдХреА рджреВрд░реА D рд╣реИ sqrt (X┬▓ + Y D)ред рдкреВрд░реНрд╡ рдореЗрдВ рдХрд┐рдП рдЧрдП рдврд╛рдБрдЪреЗ рдореЗрдВ рдбреАрдПрд▓ рдХреЗрдиреНрджреНрд░рд┐рдд рд╕рдордиреНрд╡рдп X рд╣реЛрддрд╛ рд╣реИ, рдФрд░ DH = Y рдХреЛ рдХреЛрдб рдореЗрдВ рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред X86 рдореЗрдВ рд╡рд░реНрдЧрдореВрд▓ рдЧрдгрдирд╛ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рдлреА рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рдВрдЧреЛрдВ рдХреА рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде, рдПрдХ рд╡рд░реНрдЧрдореВрд▓ рдХреЗ рдмрд┐рдирд╛ рд╣рд▓рдХреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рднрд╛рд╡рдирд╛ рдХрд╛рдлреА рдареЛрд╕ рд╣реИред mov al,dh ; get Y in AL
sub al,100 ; align Y vertically
imul al ; AL = Y┬▓
xchg dx,ax ; Y┬▓/256 in DH, X in AL
imul al ; AL = X┬▓
add dh,ah ; DH = (X┬▓ + Y┬▓)/256
mov al,dh ; AL = (X┬▓ + Y┬▓)/256
add ax,bp ; offset color by time
and al,8+16 ; select special rings
рдЭреБрдХрд╛ рд╣реБрдЖ рд╡рд┐рдорд╛рди рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛
рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдЧрдП рд╡рд┐рдорд╛рди рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛рдпрд╣ рдкреНрд░рднрд╛рд╡ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреВрд░реА рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдбрд╝реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд▓рд╛рдЗрди рдирдВрдмрд░ Y рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХрд╛ рджреЛ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдП) рдФрд░ рдмреА рдХреЗ рдХреЗрдВрджреНрд░рд┐рдд рдореВрд▓реНрдп рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВред рдлрд┐рд░ рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХреНрд╕рдУрдЖрд░ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрдЯрд░реНрди рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред mov ax,0x1329 ; initialize with constant
add dh,al ; preventing divide overflow
div dh ; reverse divide AL = C/Y'
xchg dx,ax ; DL = C/Y', AL = X
imul dl ; AH = CX/Y'
sub dx,bp ; DL = C/Y'-T
xor ah,dl ; AH = (CX/Y') ^ (C/Y'-T)
mov al,ah ; move to AL
and al,4+8+16 ; select special pattern
рд▓рдВрдмрди рдмрд┐рд╕рд╛рдд
рд▓рдВрдмрди рдЪреЗрдХрд░ рдмреЛрд░реНрдбрдпрд╣ рдЧрддрд┐рд╢реАрд▓ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░реЗрдХрд┐рдВрдЧ (рдЙрддреНрд╕рд░реНрдЬрдХ рдХрд┐рд░рдгреЗрдВ) рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдорд╛рди рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде 16-рдмрд┐рдЯ рдЧреБрдгрд╛ рдФрд░ рд╕реНрддрдВрдн рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реНрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░рдг рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рдХреГрддрд┐ рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЗрд╖ (4 "рдареЛрд╕" рдХреНрд╖реЗрддреНрд░реЛрдВ, 4 "рдкрд╛рд░рджрд░реНрд╢реА" рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ) рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдмреАрдо рдареЛрд╕ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд░рдВрдЧ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ (+ рдзреВрд╕рд░ рд░рдВрдЧреЛрдВ рдореЗрдВ рдСрдлрд╕реЗрдЯ), рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╡рд┐рдорд╛рди рд╕реНрдХреНрд░реАрди рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреАред mov cx,bp ; set inital point to time
mov bx,-16 ; limit to 16 iterations
fx3L:
add cx,di ; offset point by screenpointer
mov ax,819 ; magic, related to Rrrola constant
imul cx ; get X',Y' in DX
ror dx,1 ; set carry flag on "hit"
inc bx ; increment iteration count
ja fx3L ; loop until "hit" or "iter=max"
lea ax,[bx+31] ; map value to standard gray scale
Sierpinski rotozoomer
Sierpinski rotozoomerрдЧреНрд░рд╛рдл 1 / cos (atan (x)), www.google.com рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рддреНрд░рд┐рдХреЛрдгрдорд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдЙрдирдХреЗ рдЕрдЪреНрдЫреЗ рдЕрдиреБрдорд╛рдирд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдШреВрдордиреЗ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред рдЖрдЗрдП рд╕рд╛рдорд╛рдиреНрдп 2D рд░реЛрдЯреЗрд╢рди рд╕рдореАрдХрд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдЧрдгрдирд╛ рдореЗрдВ рддреНрд░рд┐рдХреЛрдгрдорд┐рддрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ:x' = x*cos(a) - y*sin(a)
y' = x*sin(a) + y*cos(a)
рдпрджрд┐ рд╣рдо рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:x' = z * (x*cos(a) - y*sin(a))
y' = z * (x*sin(a) + y*cos(a))
рдЕрдм рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо z рдХреЛ рд╕реНрд╡рдпрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрд╖реНрдардХ рд╕реЗ 1 / cos (a) рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:x' = 1/cos(a) * (x - y*tan(a))
y' = 1/cos(a) * (x*tan(a) + y)
рдЕрдм рд╣рдо рдЯреИрди (рдП) рдХреЛ рдЯрд╛рдЗрдо рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдлрд╝рдВрдХреНрд╢рди рдЕрдирдВрдд рддрдХ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 180 ┬░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ:x' = 1/cos(atan(T)) * (x - y*T)
y' = 1/cos(atan(T)) * (x*T + y)
рдпрджрд┐ рд╣рдо рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛рд░рдХ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╕реАрдзреЗ рдХреЛрдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдм рд╣рдо рддреНрд░рд┐рдХреЛрдгрдорд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ -180 ┬░ рд╕реЗ + 180 ┬░ рддрдХ рдШреВрдо рд╕рдХрддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛рд░рдХ рд╕рдордп рдЯреА рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЧреБрдгрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдЫрд╡рд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдПрдХ рдЕрд╕реАрдо рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдПрдХ (рдореВрд▓ рдЖрдХрд╛рд░) рддрдХ рд╣реЛрддреА рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ infitesitesimal рд╣реЛрддреА рд╣реИред рдЗрд╕ рдЖрд╢рдп рдХреЛ рд╕рдЬрд╛рдиреЗ, рд╕рдордп рдХреЛ рдареАрдХ рдХрд░рдиреЗ, рдПрдирд┐рдореЗрд╢рди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ, рд╕рд╛рдЗрд░рдкрд┐рдиреНрд╕реНрдХреА рдХреЗ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдкрд┐рдХреНрд╕рд▓ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рд╕реБрдВрджрд░ рд░рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдерд╛ред lea cx,[bp-2048]; center time to pass zero
sal cx,3 ; speed up by factor 8!
movzx ax,dh ; get X into AL
movsx dx,dl ; get Y int DL
mov bx,ax ; save X in BX
imul bx,cx ; BX = X*T
add bh,dl ; BH = X*T/256+Y
imul dx,cx ; DX = Y*T
sub al,dh ; AL = X-Y*T/256
and al,bh ; AL = (X-Y*T/256)&(X*T/256+Y)
and al,252 ; thicker sierpinski
salc ; set pixel value to black
jnz fx4q ; leave black if not sierpinski
mov al,0x2A ; otherwise: a nice orange
fx4q:
рд░реЗрд╕реНрдЯрдХрд╛рд╕реНрдЯ рдЯрдирд▓
рд░реЗрдХрд╛рд╕реНрдЯ рдмреЗрдВрдЯ рдЯрдирд▓рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдВрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ "рдирдП рдпреБрдЧ рдореЗрдВ" (рдКрдкрд░ рджреЗрдЦреЗрдВ) рд╕реЗ рд░реИрд╕реНрдЯрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ ред рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЖрд╢рдп рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд░реЗрдбрд┐рдЯ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдиреВрдареЗ рд░рдВрдЧреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛, рдЭреБрдХрд╛рд╡ рдХреА рджрд┐рд╢рд╛ рдмрджрд▓ рджреА, рдФрд░ рдкреБрд░рд╛рдиреЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдФрд░ рдбреЙрд╕рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рдорд┐рддрд┐ рдЕрдзрд┐рдХ рдмрдВрдж рд╣реЛ рдЧрдИред mov cl,-9 ; start with depth 9 (moves backwards)
fx5L:
push dx ; save DX, destroyed inside the loop
mov al,dh ; Get Y into AL
sub al,100 ; Centering Y has to be done "manually".
imul cl ; Multiply AL=Y by the current distance, to get a projection(1)
xchg ax,dx ; Get X into AL, while saving the result in DX (DH)
add al,cl ; add distance to projection, (bend to the right)
imul cl ; Multiply AL=X by the current distance, to get a projection(2)
mov al,dh ; Get projection(1) in AL
xor al,ah ; combine with projection(2)
add al,4 ; center the walls around 0
test al,-8 ; check if the wall is hit
pop dx ; restore DX
loopz fx5L ; repeat until "hit" or "iter=max"
sub cx,bp ; offset depth by time
xor al,cl ; XOR pattern for texture
aam 6 ; irregular pattern with MOD 6
add al,20 ; offset into grayscale palette
рд╕рд╛рдЧрд░ рд░рд╛рдд рджрд┐рди
oceannightрдорд╣рд╛рд╕рд╛рдЧрд░реАрдпрдорд╣рд╛рд╕рд╛рдЧрд░ рдкреНрд░рднрд╛рд╡ " рд╕рдирдХ " рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдлрдкреАрдпреВ рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╡реНрдпреБрддреНрдХреНрд░рдо рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕реБрдВрджрд░ рддрд░рдВрдЧ рдкреНрд░рднрд╛рд╡ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдбреАрдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдПрдХ рд╕рдВрдХреЗрдд рдЙрд▓рдЯ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдХрд╛рд╢ рдХреЛ рд╕рдореБрджреНрд░ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рд░рдВрдЧ рд╣реИред рд╡реИрд╢реНрд╡рд┐рдХ рдврд╛рдВрдЪреЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдПрд▓ рдХрд╛ рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдкреНрд░рднрд╛рд╡ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдлреЗрд░рдмрджрд▓ рдХрд░рдХреЗ, рдЖрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдХрд╛рд╢ рд░рдВрдЧ рдХреЛ "рдореБрдлреНрдд рдореЗрдВ" рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ "рд╕рдВрдХреНрд░рдордг рдХреЗ рджрд┐рди" рдХрд╛ рд░рдВрдЧ, рдЬреЛ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдкрддрд╛ рднреА рд╣реИред рдФрд░ рдпрд╣ рдПрдХ рдЦреБрд╢ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред DosBox рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ,рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдЖрдХрд╛рд╢ рдХрд╛ рд░рдВрдЧ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред sub dh,120 ; check if pixel is in the sky
js fx6q ; quit if that's the case
mov [bx+si],dx ; move XY to a memory location
fild word [bx+si] ; read memory location as integer
fidivr dword [bx+si]; reverse divide by constant
fstp dword [bx+si-1]; store result as floating point
mov ax,[bx+si] ; get the result into AX
add ax,bp ; modify color by time
and al,128 ; threshold into two bands
dec ax ; beautify colors to blue/black
рд▓реБрдкреНрдд рд╣реЛрддреА рдкреНрд░рднрд╛рд╡
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░рднрд╛рд╡ рд╡реИрд╢реНрд╡рд┐рдХ рдврд╛рдВрдЪреЗ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕реНрдХреНрд░реАрди рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдПрдХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рд╕реНрдХреЗрд▓ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдп рд╕реЗ рдПрдХ рд╕рдордп рдСрдлрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред mov ax,0xcccd ; load magic Rrrola constant
mul di ; transform screen pointer to X, Y
add al,ah ; use transformation garbage as
xor ah,ah ; pseudorandom value and clear AH
add ax,bp ; add time value to random value
shr ax,9 ; divide by 512 (basically the speed)
and al,15 ; filter effect number
xchg bx,ax ; move effect number to BX
mov bh,1 ; reset BH to align with start of code
mov bl,[byte bx+table] ; read the effect address from the table
рдорд┐рдбреА рд╕рдВрдЧреАрдд
рдХреЛрдб рдХрд╛ рдпрд╣ рдЦрдВрдб рд╕рдордп рдорд╛рди рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдзреНрд╡рдирд┐ рдмрдирд╛рддрд╛ рд╣реИред рдЪреИрдирд▓ 3 рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ, рд╣рдо "RET" рдХреЗ рд░реВрдк рдореЗрдВ "рдкрд░рд┐рд╡рд░реНрддрди рдЙрдкрдХрд░рдг рдЪреИрдирд▓" рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рднрд╛рд╡ рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ, рдЖрдк рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдорд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдФрд░ рдмрд╛рдЗрдЯ рдмрдЪрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм MIDI рдбрд┐рд╡рд╛рдЗрд╕ рдкрд╣рд▓реЗ рд╕реЗ UART рдореЛрдб рдореЗрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдЕрдиреНрдп рддреАрди рдмрд╛рдЗрдЯреНрд╕ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХрдИ рджрд░реНрд╢рдХреЛрдВ рдФрд░ рдЖрдпреЛрдЬрдХреЛрдВ рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдЯреНрдпреВрди рдорд╛рдЗрдХ рдУрд▓реНрдбрдлреАрд▓реНрдб рдХреЗ рдЕрд╡рддрд╛рд░реЛрдВ рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред Hypnoteye 2015 рдХреЗ рдмрд╛рдж рд╕реЗ , рдореИрдВрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ MIDI рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЕрдВрддрддрдГ рдПрдХ рдЫреЛрдЯрд╛ MIDI рдлреНрд░реЗрдорд╡рд░реНрдХ (64 рдмрд╛рдЗрдЯреНрд╕) рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд╛ рдореБрдЦреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдЯреЛрди рд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд┐рдЪ рдХреЗ рд╕рд╛рде рдХреВрджрдирд╛ рдФрд░ рдЙрдЪреНрдЪ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рдЪрд▓реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИ (рдбрд┐рд╡реАрдЬрди рдореЛрдбреБрд▓реЛ рджреНрд╡рд╛рд░рд╛)ред рдЪрд░рдгрдмрджреНрдзрддрд╛ рдФрд░ рдиреНрдпреВрдирд╛рдзрд┐рдХрддрд╛ рдХреЗ рд╕рд░рд▓ рд╕рдВрдпреЛрдЬрди рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реМрддреЗрд▓рд╛рдкрди = 3 рдЖрдкрдХреЛ рдПрдХ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрдо рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЫреЛрдЯреА рд░рд╛рдЧ рдФрд░ рдЪрд░рдгрд╛рд╡рдзрд┐ = 4 рдпрд╛ рдЪрд░рдгрдмрджреНрдзрддрд╛ = 6 - рддреНрд░рд┐рдХреЛрдгреАрдп рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рдЕрднреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдпреЗ рдкреИрдЯрд░реНрди рдЕрдиреБрдХреНрд░рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдПрдХ рдЙрдЪрд┐рдд рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕реНрд╡рд░ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдзреНрд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛редsounds: db 0xc3, 11, 0x93, fx2-s
...
inc bp ; increment timing value
test bp, 7 ; play a note every 8th step
jnz nomuse ; quit if in between
mov dx,0x330 ; port number for MIDI
mov si,sounds ; adress for sound data
outsb ; change instrument of channel 3
outsb ; to vibraphone
outsb ; play a note on channel 3
imul ax,bp,-19*32*4 ; the magic melody constant
shr ax,10 ; scale down and implicit "and 63"
add al,22 ; pitch base is 22
out dx,al ; play THIS note on channel 3
outsb ; play it with THIS volume
рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬ рдХреЛрдб
; "memories" by HellMood/DESiRE
; the tiny megademo, 256 byte msdos intro
; shown in April 2020 @ REVISION
;
; (= WILL BE COMMENTED IN DETAIL LATER =)
;
; create : nasm.exe memories.asm -fbin -o memories.com
; CHOOSE YOUR TARGET PLATFORM (compo version is dosbox)
; be sure to use the dosbox.conf from this archive!
; only ONE of the defines should be active!
%define dosbox ; size : 256 bytes
;%define freedos ; size : 230 bytes
;%define winxpdos ; size : 263 bytes
; DON'T TOUCH THESE UNLESS YOU KNOW WHAT YOU'RE DOING
%ifdef winxpdos
%define music
%define switch_uart
%define safe_dx
%define safe_segment
%endif
%ifdef freedos
%define safe_dx
%endif
%ifdef dosbox
%define music
;%define safe_dx ; sometimes needed
%endif
; GLOBAL PARAMETERS, TUNE WITH CARE!
%define volume 127 ; not used on dosbox (optimization)
%define instrument 11
%define scale_mod -19*32*4;
%define time_mask 7
%define targetFPS 35
%define tempo 1193182/256/targetFPS
%define sierp_color 0x2A
%define tunnel_base_color 20
%define tunnel_pattern 6
%define tilt_plate_pattern 4+8+16
%define circles_pattern 8+16
org 100h
s:
%ifdef freedos
mov fs,ax
mov [fs:0x46c],ax
%endif
mov al,0x13
int 0x10
xchg bp,ax
push 0xa000-10
pop es
%ifndef freedos
mov ax,0x251c
%ifdef safe_dx
mov dx,timer
%else ; assume DH=1, mostly true on DosBox
mov dl,timer
%endif
int 0x21
%endif
top:
%ifdef freedos
mov bp,[fs:0x46c]
%endif
mov ax,0xcccd
mul di
add al,ah
xor ah,ah
add ax,bp
shr ax,9
and al,15
xchg bx,ax
mov bh,1
mov bl,[byte bx+table]
call bx
stosb
inc di
inc di
jnz top
mov al,tempo
out 40h,al
in al,0x60
dec al
jnz top
sounds:
db 0xc3 ; is MIDI/RET
%ifdef music
db instrument,0x93
%ifdef switch_uart
db volume ; without switch, volume is in table
db 0x3f
%endif
%endif
table: ; first index is volume, change order with care!
db fx2-s,fx1-s,fx0-s,fx3-s,fx4-s,fx5-s,fx6-s,sounds-s,stop-s
stop:
pop ax
ret
timer:
%ifndef freedos
%ifdef safe_segment
push cs
pop ds
%endif
inc bp
%ifdef music
test bp, time_mask
jnz nomuse
mov dx,0x330
mov si,sounds
outsb
outsb
outsb
imul ax,bp,scale_mod
shr ax,10
add al,22
out dx,al
outsb
%ifdef switch_uart
inc dx
outsb
%endif
%endif
nomuse:
iret
%endif
fx0: ; tilted plane, scrolling
mov ax,0x1329
add dh,al
div dh
xchg dx,ax
imul dl
sub dx,bp
xor ah,dl
mov al,ah
and al,tilt_plate_pattern
ret
fx2: ; board of chessboards
xchg dx,ax
sub ax,bp
xor al,ah
or al,0xDB
add al,13h
ret
fx1: ; circles, zooming
mov al,dh
sub al,100
imul al
xchg dx,ax
imul al
add dh,ah
mov al,dh
add ax,bp
and al,circles_pattern
ret
fx3: ; parallax checkerboards
mov cx,bp
mov bx,-16
fx3L:
add cx,di
mov ax,819
imul cx
ror dx,1
inc bx
ja fx3L
lea ax,[bx+31]
ret
fx4: ; sierpinski rotozoomer
lea cx,[bp-2048]
sal cx,3
movzx ax,dh
movsx dx,dl
mov bx,ax
imul bx,cx
add bh,dl
imul dx,cx
sub al,dh
and al,bh
and al,0b11111100
salc ; VERY slow on dosbox, but ok
jnz fx4q
mov al,sierp_color
fx4q:
ret
fx5: ; raycast bent tunnel
mov cl,-9
fx5L:
push dx
mov al,dh
sub al,100
imul cl
xchg ax,dx
add al,cl
imul cl
mov al,dh
xor al,ah
add al,4
test al,-8
pop dx
loopz fx5L
sub cx,bp
xor al,cl
aam tunnel_pattern; VERY slow on dosbox, but ok
add al,tunnel_base_color
ret
fx6: ; ocean night / to day sky
sub dh,120
js fx6q
mov [bx+si],dx
fild word [bx+si]
fidivr dword [bx+si]
fstp dword [bx+si-1]
mov ax,[bx+si]
add ax,bp
and al,128
dec ax
fx6q:
ret
рдмреЛрдирд╕ - NFO / ASCII art : hammerfist
тИВ#MW%e _d$Ng,
'B, тИВb _jM@$QZb,cQ" )@
,edRB$b,l@ Wk,yGR$KM&$b, ,dP" Wl ]bsd%UR8BG6&$@DSyG#ZKM&$b,
,dP "T%L 'MGF "*тИВR_ Tg "*4Zk,#I YP W" 7P "*тИВR
4M gd@ ^ тИВ@ d@b dQ$#@Z@R3L_ "*GMj 'W ,gd$ d@b 9Q$#%b
W#, `M Wb `* _4P `Qk *#N8L `H5 @b 'QR7YK `* _4F" Qk
`6@L dML '@ ,BK 'M тИВB *b, '#L
^QBb,_ _,4&MтИЮтИВ@=,_ _dGL _gQKM GL @k 'Mg,_ _dG,
"*BN5W$2#MNP" "*G3WRM8&B5P"`Y@QNW3Z5P" тИВ#$W8BRM3XZN87 "*GW38M%EBDW5P"`
p r e s e n t s
4
d@,
_& `Wl
_,aP "#baedM$#@@K JP*"?ML
,ad@$#P" ,d@NEWVB" X,aQPYb,_
V@Mm,_ ,d@MW#BW' EMP" '┬╢R ,ngBP^fML
┬╢M@N@y Y#BNW#M" J9" `MQ9" "MgRBq ,QBMg,
VN#P` ,d@@ `WM@^ 7f ┬╢F` 7kY" ^G _.eQNE1.
]B _G@MWN$, `P ' 4b QP ┬╢w@F*^ ^Qb
]O@NRM#W@MNB, ; ^` j JP^ Yl
J#NRNWM@#BcT"^ ,A _J _q@ `X
'┬╢WM#B@WdY`,7 _G#YN#PM _,gG" M,
*BN#WP" dK ,Q@NRMB"]9 , _,M@Q* #A
"U^ V@h, iNBW#NT J' J9 s@QN" _; 'D,
┬╢RMBv&NMQR@9 .W .K' "9` ,6BA _JL ]l
Y#NE@W#NRP #[ `┬╢8 _d@MW#B_jW#W BN
"GQ@MR#W QL_ *B _,p#NBW#NQMG@WY 3Q
"Y@F ,XW@M%im,_Yb_ _,g5@#MW@QMNE@E@NRMB ,WM
` _,gP*"#REM#GB@N#MQbnd@N#M@MW#R8QSB^'WQERM@ ;4NB,
,GYKL ┬╢E#B8R8QSB@M@#BM#W@MNB"`_ , "^` N ,dW@Ql
_Q`'W`*t '┬╢@GS#MBQ#E@W#NQBW[ 'LvQ_ ,K _dNABGM#N
,F ' `^WAB@QGE9*"9^*@L jP7FY, ┬╢h,_.jWM#BR#GBM,
J; , _ ' ' "LL YxE#B8R8QSBNW@W;
AP _,Ag6^ _ J ┬╢A `"Q#M@MW#R8E#P
j@ `"XQW[ 'LvK,_ 'L_,/ @t Y#NE@WNR"
:M/ 9^*@L jP7F" _PYKL _,A; ┬╢RSNQ"
dKL ' ` ' "L "`'W`*t `"XQb `W^
Q`8t 'L_,/ , _ ' 9^Q
,W _PYKL _,Ag6^ ' W, _ ,#N&
!N _ J "`'W`*t `"XQW[ _ J N!_JG9^RwQ' *t
`W, 'LvK,_ ' _gGB8@L _ 'LvK,_ ,WgB' V 7L
_.,gm&@B&wBZF" j@'` "WL _gML jZd7Yb lN" dBWl
,g&QB*"^` `"*G@g, .gR&k,_ ,N" '@QF ┬╢k;gMF *QvQ jQ, ,@N@B#,
.eQF*` `Yb@" "*6Qg,gF , 7 XMN" 'MNB, ^┬╢QWSER@N;
,gP" qy, W' ^Q' &L ,g@W' `QMEL `"WBNWP
g7 ┬╢9 ,X M? 9" _q8MSK ┬╢EMt *@K
Vh _,m#L _AH le ,GBDNE9^A, *@F NMg
┬╢L,qQ@ND _.m@Bl We ,gM@B8#Q' ┬╢h_ lWE,
W9NHW@` JWM#B@] @e 4WR@NGF^ 'QL dRWl
VMd* "@BE@PM 'N *UP" VW, JRSB;
,@F j `┬╢WK W, ┬╢t XNt _A@E#N
_JP ,6& "GLdM XD, _.g8NMA@k,_ _,gG#NMGR;
"Z .JRER 'VMi _jNB#W&_ _,j@E@W#Nl ┬╢MBGMNQGNQMG@QBW9
┬╢h ,G@NRMBl `" ,d#R@M$F ┬╢Mg,_.gp&@@NEWVBWBMG *QMN8R8SBN$E@WF
Vb dW#R8QSRb, *YM@EQ,_ 'MENBW#NQMG#B@R@MW#l "BM@QNENRQG'
*WGS#MBMNEYL `^"*8M@Q@NRM#W@BWSNW@QBF"` `^*@QBF^ [HFT]
^M@MW#Q9 ^Wt `^┬╢RQ@W8NQGP*`
┬╢Q#@P Vk lA `"^`
Y" `MA J#,
*R@, ,MQl
Y#Wk, GWM8L
W8RQSt,_ AQ@MR#,
`@M@#SB@Mbm.,_ QNBW#NW
┬╢QB8R8SBN$WNRM@#GNtwg@NMQR@B'
*MBQ#8R8QS@NE@WNBW#NQMG@NR;
`WGS#MBQ#R8QSB@NE@W#NQBW9
*OMW@QMNE@E@NRMW@QMB@*
`^"YQW@Q#SB#NE@EGP
`^"*8R@GBQF`