рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдПрдВ

рд╕рдВрднрд╡рддрдГ, рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдЕрдЧрд░ рд╡реЗ рд╕рдкрдиреЗ рдореЗрдВ рдирд╣реАрдВ рдЖрдП рдереЗ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЕрдкрдиреЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛ред рд╢рд╛рдпрдж рдХреБрдЫ рдиреЗ Z80 рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХрдИ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗред







рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ 70 рдХреЗ рджрд╢рдХ рд╕реЗ CHIP-8 рдЧреЗрдорд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдПрдХ рд╕рд░рд▓ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЕрдкрдиреА рд╕рд╛рджрдЧреА рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдордВрдЪ рдиреМрд╕рд┐рдЦрд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рднреА рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛ред





рдЕрдВрдд



рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЬреАрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред рдпрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ



рд╡рд┐рдХрд▓реНрдк рдмрд╛рдпрдиреЗрд░реА ; рд╣рдо рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдПрдЪрдкреА 48 рдПрдХ рдирд╣реАрдВред

рдбрд┐рдЬрд╛рдЗрди рдмрдВрдж ; рдФрд░ рд╣рдо рдХреБрдЫ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдЯреЛ рд╕рдВрд░реЗрдЦрдг рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

; рдбреЗрдЯрд╛ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдмрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



LD V0 , 0

LD V1,0



LOOP :

LD I , LEFT ; рд╣рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рдИрдВ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ

; рд╣реИ 0 рдпрд╛ 1. рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ 1 рд╣реЛрдЧрд╛, рддреЛ рд╣рдо рд░рдЦрддреЗ рд╣реИрдВ

; рдмрд╛рдИрдВ рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдирд╛ред рдпрджрд┐ рдпрд╣ 0 рд╣реИ, рддреЛ рд╣рдо рд░рдЬрд┐рд╕реНрдЯрд░ рдмрджрд▓рддреЗ рд╣реИрдВ

; рдореБрдЭреЗ рдПрдХ рд╕рд╣реА рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдиреА рд╣реИред



рдЖрд░рдПрдирдбреА рд╡реА 2 , 1 ; V2 рдореЗрдВ рд▓реЛрдб рдПрдХ 0 ... 1 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛



рдПрд╕рдИ рд╡реА 2 , 1 ; рдпрд╣ 1 рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдореИрдВ рдЕрднреА рднреА рдмрд╛рдИрдВ рдкрдВрдХреНрддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ

; рдмрд┐рдЯрдореИрдкред



LD I , рд░рд╛рдЗрдЯ ; рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕рд╣реА рд▓рд╛рдЗрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ

; рдмрд┐рдЯрдореИрдкред



DRW V0 , V1 , 4 ; рдФрд░ рд╣рдо V0, V1 рдкрд░ рдмрд┐рдЯрдореИрдк рдмрдирд╛рддреЗ рд╣реИрдВред



ADD V0 , 4 ; рдЕрдЧрд▓рд╛ рдмрд┐рдЯрдореИрдк 4 рдкрд┐рдХреНрд╕рд▓ рд╕рд╣реА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ

; рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП V0ред



рдПрд╕рдИ рд╡реА 0 , 64 ; рдпрджрд┐ V0 == 64, рд╣рдордиреЗ рдПрдХ рдкреВрд░реНрдг рд░реЗрдЦрд╛ рдЦреАрдВрдЪрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо

; рдХреВрдж рдХреЛ LOOP рдкрд░ рдЫреЛрдбрд╝ рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ V1 рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИред



рдЬреЗрдкреА LOOP ; рд╣рдордиреЗ рдкреВрд░реА рд▓рд╛рдЗрди рдирд╣реАрдВ рдЦреАрдВрдЪреА? рддреЛ рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ!



LD V0 , 0 ; рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдкрд╣рд▓рд╛ рдмрд┐рдЯрдореИрдк 0, V1 рд╣реИред



ADD V1 , 4 ; рд╣рдо V1 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ 4 рдкрд┐рдХреНрд╕реЗрд▓ рдбреИрди рд╕реНрдерд┐рдд рд╣реИред



рдПрд╕рдИ рд╡реА 1 , 32 ; рдХреНрдпрд╛ рд╣рдордиреЗ рд╕рднреА рд░реЗрдЦрд╛рдПрдБ рдЦреАрдВрдЪ рджреА рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдБ, V1 == 32

рдЬреЗрдкреА LOOP ; рдирд╣реАрдВ? рддреЛ рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ!



рдлрд┐рди : рдЬреЗрдкреА рдлрд╛рдЗрдирд▓ ; рдЕрдирдВрдд рд▓реВрдк ...



рд╕рд╣реА :; рдмрд╛рдИрдВ рд░реЗрдЦрд╛ рдХреЗ 4 * 4 рдмрд┐рдЯрдореИрдк



DB $ 1 тАжтАжред

рдбрдм $ ред 1 ......

рдбреАрдмреА $ .. 1 .....

DB $ ... 1 ....



рд╡рд╛рдо :; рд╕рд╣реА рд░реЗрдЦрд╛ рдХреЗ 4 * 4 рдмрд┐рдЯрдореИрдк

; рдФрд░ рд╣рд╛рдБ, рдпрд╣ рдРрд╕рд╛ рд╣реИ ...

рдбреАрдмреА $ .. 1 .....

рдбрдм $ ред 1 ......

DB $ 1 тАжтАжред

DB $ ... 1 ....



38 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ





рдЕрдВрддрддрдГ рд╣рдорд╛рд░реЗ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:







рд╣рдо рдЕрдВрдд рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдереЛрдбрд╝рд╛ рдердХрд╛рдК рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред



рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░



рддреЛ CHIP-8 рдЧреЗрдорд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреНрдпрд╛ рд╣реИ? рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред



CHIP-8 рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ 70 рдХреЗ рджрд╢рдХ рдореЗрдВ COSMAC VIP рдФрд░ рдЯреЗрд▓реНрдореИрдХ 1800 рдЧреЗрдо рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереАред CHIP-8 рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рд╕реНрд╡рдпрдВ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЦреИрд░, рдЖрдзреБрдирд┐рдХ рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдпрд╣ рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдХрд╛ рдПрдХ рд╕рд╛ рд╣реИред рдореИрдВ рдЖрдо рддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд╕рдордп рдкрд░ рднреВрд▓ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рд╣реИ, рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рд▓реЛрд╣реЗ рдХреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕реЗрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ "рдЙрдкрд╕рд░реНрдЧ," рдореЗрд░рд╛ рдорддрд▓рдм CHIP-8 рд╣реЛрдЧрд╛ред







рд╣рдорд╛рд░реЗ рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА, рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░, рдПрдХ рд╡реАрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕, рдзреНрд╡рдирд┐ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИред рд╕рднреА рдШрдЯрдХреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



рд╕реНрдореГрддрд┐



рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ 4Kb рдореБрдЦреНрдп рдореЗрдореЛрд░реА (RAM) рд╣реИред рдореЗрдореЛрд░реА рдХреНрд░рдорд╢рдГ рдСрдлрд╕реЗрдЯ 200h рдкрд░ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рдСрдлрд╕реЗрдЯ FFFh рдкрд░ рдХреНрд░рдорд╢рдГ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА 200h рдкрд░ рдХреНрдпреЛрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ? рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдореВрд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЗ рдкрд╣рд▓реЗ 512 рдмрд╛рдЗрдЯреНрд╕ рд╕рд┐рд░реНрдл рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕реАрдПрдЪрдЖрдИрдкреА -8 рднрд╛рд╖рд╛ рдХреЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЙрдкрд╕рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ



CHIP-8 рдореЗрдВ V0 ... VF рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕реЛрд▓рд╣ 8-рдмрд┐рдЯ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИрдВред VF рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрддрд┐рд░рд┐рдХреНрдд / рдШрдЯрд╛рд╡ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдХреИрд░реА рдлреНрд▓реИрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рдПрдХ 16-рдмрд┐рдЯ рдкрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ I рднреА рд╣реИред



рдЕрдиреЗрдХрддрд╛



рдЬрдм рд░реВрдЯ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЗрдЯ-рдЯреЙрдк рдмреЙрдХреНрд╕ рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ 48 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ рд╣реИ, рдЬреЛ рдмрд╛рд░рд╣ рд╕рдмрд░реВрдЯреАрди рд▓рдЧрд╛рд╡ рд╕реНрддрд░реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рд╡реЗрд╢ рдХреЗ 16 рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рддреЛ рд╕рдмрд╕реЗ CHIP-8 рдПрдореБрд▓реЗрдЯрд░ рдХрд░рддрд╛ рд╣реИред



рдЯрд╛рдЗрдорд░



рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рджреЛ 8-рдмрд┐рдЯ рдЯрд╛рдЗрдорд░ рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рджреЛрдиреЛрдВ рд╢реВрдиреНрдп рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рддрдХ 60 рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд╡рд┐рд▓рдВрдм рдЯрд╛рдЗрдорд░: рдЗрд╕ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдХрдорд╛рдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдврд╝рд╛ / рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдзреНрд╡рдирд┐ рдЯрд╛рдЗрдорд░: рдЬрдм рдЯрд╛рдЗрдорд░ рдореВрд▓реНрдп рдЧреИрд░-рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдмреАрдк рдзреНрд╡рдирд┐ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред



рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕



16 рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ, рдХреБрдВрдЬреА рдореЗрдВ 0h рд╕реЗ Fh рддрдХ рдХреЗ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рд╣реА NumPad рднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд╡рд╣ рдирдВрдмрд░ рдЬрд╣рд╛рдВ 0-9 рдФрд░ NumLock рд╕реНрдерд┐рдд рд╣реИрдВред рдХреБрдВрдЬреА '8', '4', '6' рдФрд░ '2' рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЦреЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред



рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдзреНрд╡рдирд┐



рд╣рдорд╛рд░реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ, рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 64x32 рдкрд┐рдХреНрд╕реЗрд▓, рдПрдХ рд░рдВрдЧ (рдореЛрдиреЛрдХреНрд░реЛрдо) рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрд╢рд╛ 8 рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ 1 рд╕реЗ 15 рдкрд┐рдХреНрд╕реЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкрд░ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдУрд╡рд░рд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рд░рдВрдЧ рдЙрд▓реНрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ VF (рдХреИрд░реА рдлреНрд▓реИрдЧ) рд░рдЬрд┐рд╕реНрдЯрд░ 1 рдорд╛рди рд▓реЗрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ рдорд╛рди 0 рд▓реЗрддрд╛ рд╣реИред



рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдзреНрд╡рдирд┐ рдЯрд╛рдЗрдорд░ рдХрд╛ рдореВрд▓реНрдп рдЧреИрд░-рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдПрдХ рдЧрдВрджрд╛ рдЪреАрдЦрд╝рддреА рдзреНрд╡рдирд┐ рдмрдЬрд╛рдИ рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдзреНрд╡рдирд┐ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЗрди рдмреАрдкреНрд╕ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реВрдВред



рдЖрджреЗрд╢реЛрдВ



рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ CHIP-8) рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ 35 рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╣рдореЗрд╢рд╛ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд▓рдВрдмрд╛рдИ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рдЖрджреЗрд╢реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдпрд╣ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╣реИ ред рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣рд╛рдВ рд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

00E0 рд╕реНрдХреНрд░реАрди рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИред - рдЬрдм рд╣рдо 00E0 рдХреЛрдб рдореЗрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░реАрди рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВред

6XNN NX рдХреЛ VX рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред - VX рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ NN рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк 635A рдХрдорд╛рдВрдб рд╕реЗ рдорд┐рд▓реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ V3 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдорд╛рди 5Ah рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред



рдЕрднреНрдпрд╛рд╕



рдКрдкрд░ рд╕реЗ, рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдордВрдЪ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреНрд░рд┐рдХреА рдирдХрд╛рдмрдкреЛрд╢ рдФрд░ рдЧреИрд░-рдирдХрд╛рдмрдкреЛрд╢ рд╡реНрдпрд╡рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдЖрдИ / рдУ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдХреЛрдИ рдвреЗрд░ рдирд╣реАрдВ рд╣реИ, рдХреЛрдИ рдЬрдЯрд┐рд▓ рдЯрд╛рдЗрдорд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдкрддрд╛ рд╣реИ, рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рдкрдврд╝реЗрдВ, рдЙрдирдХреА рддреБрд▓рдирд╛ рдСрдкреНрд╕реЛрдбреНрд╕ рд╣рд╛рдБ рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ рдФрд░ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╡рд╣ рдХрд░реЗрдВред рд╣рд╛рдВ, рдФрд░ рдЯреАрдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИрдВ - 35 рдЯреБрдХрдбрд╝реЗред рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛рдБ? рдЦреИрд░, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЪрд▓реЛ рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдореБрд▓реЗрдЯрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдЕрдкрдиреА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рдореЗрдореЛрд░реА, рд╕реНрдЯреИрдХ, рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реАред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдЬрд┐рд╕ рдСрдлрд╕реЗрдЯ рдкрд░ рд╣рдо рдЕрдкрдирд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ 200 h рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдСрдлрд╕реЗрдЯ 000h рд╕реЗ 1FFh рддрдХ, рдореВрд▓ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдореЗрдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЫреЛрдЯрд╛ рдлрд╝реЙрдиреНрдЯ рд╣реИ рдЬреЛ рдСрдлрд╕реЗрдЯ 000h рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ 050h рддрдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ 80 рдмрд╛рдЗрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдореЗрд░реЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдореИрдВ рдЕрдкрдиреЗ рдлреНрд░рд╛рдВрд╕реАрд╕реА рдбреЗрд▓реНрдлреА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рджреЛрд╖ рдордд рджреЗрдирд╛ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдИ:



рдкреНрд░рджрд░реНрд╢рди : рдРрд░реЗ [ 0..64 * 32-1 ] рдмрд╛рдЗрдЯ ; // рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА

рдореЗрдореЛрд░реА : рдмрд╛рдЗрдЯ рдХрд╛ рдРрд░реЗ [ 0..4095 ] ; // рд░реИрдо рдореЗрдореЛрд░реА

рд╕реНрдЯреИрдХ : рдПрд░реЗ [ 0..15 ] рд╡рд░реНрдб рдХрд╛ ; // рдвреЗрд░

рд░рдЬрд┐рд╕реНрдЯрд░ : рдмрд╛рдЗрдЯ рдХрд╛ [ 0..15 ] рдПрд░реЗ ; // рд░рдЬрд┐рд╕реНрдЯрд░

rI : рд╢рдмреНрдж = $ 200 ; // рдореИрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реВрдВ

рдПрд╕рдкреА : рдмрд╛рдЗрдЯ = 0 ; // рд╕реНрдЯреИрдХ рдХрд╛рдЙрдВрдЯрд░

рдкреАрд╕реА : рд╢рдмреНрдж = $ 200 ; // рдореЗрдо рдСрдлрд╕реЗрдЯ рдХрд╛рдЙрдВрдЯрд░

delay_timer : рдмрд╛рдЗрдЯ = 255 ; // рджреЗрд░реА рдЯрд╛рдЗрдорд░;

sound_timer : рдмрд╛рдЗрдЯ = 255 ; // рд╕рд╛рдЙрдВрдб рдЯрд╛рдЗрдорд░;





рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рд╕рднреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рднрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЬреАрд░реЛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореЗрдореЛрд░реА рдПрд░реЗ рдореЗрдВ рдлрд╝реЙрдиреНрдЯ (рдлрд╝реЙрдиреНрдЯ: рд╕рд░рдгреА [1..80]) рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:



рдлрд┐рд▓реНрдЪрд░ ( рдореЗрдореЛрд░реА , 4096 , 0 ) ; // рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

рдЪрд╛рд▓ ( рдлрд╝реЙрдиреНрдЯ , рдореЗрдореЛрд░реА , 80 ) ; // рдСрдлрд╝рд╕реЗрдЯ рдореЗрдВ рдлреЙрдиреНрдЯ рдХреЙрдкреА рдХрд░реЗрдВ 000h

рдлрд┐рд▓реНрдЪрд░ ( рд╕реНрдЯреИрдХ , 16 , 0 ) ; // рд╕реНрдЯреИрдХ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

рдлрд┐рд▓реНрдЪрд░ ( рд░рдЬрд┐рд╕реНрдЯрд░ , 16 , 0 ) ; // рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ



рдЖрд░рдЖрдИ : = $ 200 ; // рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ I

рдкреАрд╕реА : = $ 200 ; // рд╕рд░рдгреА рдСрдлрд╕реЗрдЯ



рдПрд╕рдкреА : = 0 ; // рд╕реНрдЯреИрдХ рдХрд╛рдЙрдВрдЯрд░

delay_timer : = 0 ; // рдЯрд╛рдЗрдорд░ рд╕реЗ рд╢реВрдиреНрдп рддрдХ

sound_timer : = 0 ;





рдЕрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк 200h рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдбреНрд╕ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдмрд┐рдЯреНрд╕ рдХреМрди рд╣реИрдВ, рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рд╢рдмреНрдж (рд╢рдмреНрдж) рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ ExecuteOpcode (opcode: word) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рджреЛ-рдмрд╛рдЗрдЯ opcode рдкрд╛рд░рд┐рдд, рд╡реНрдпрд╛рдЦреНрдпрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реНрде рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдЖрджреЗрд╢реЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред



рдкреНрд░рдХреНрд░рд┐рдпрд╛ ExecuteOpcode ( opcode : рд╢рдмреНрдж ) ;

рд╢реБрд░реВ рдХрд░рдирд╛

рдорд╛рдорд▓рд╛ ( op_code рдФрд░ $ F000 ) 12 рдХреА // рд╕рд╛рдЗрдЯ opcode рд╕реЗ рдкрд╣рд▓реЗ 4 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

$ 00 : рдкреНрд░рд╛рд░рдВрдн // opcode рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ

рдХреЗрд╕ op_code рдФрд░ $ 00FF рдХрд╛

// рдпрд╣ рд╣рдорд╛рд░рд╛ opcode 00E0 рд╣реИ - рд╕реНрдХреНрд░реАрди рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

$ E0 : рд╢реБрд░реВ рдХрд░реЗрдВ

// рдХрд╛рдо рдХрд░реЛ, рдЕрд░реНрдерд╛рддреН, рд╕реНрдХреНрд░реАрди рдХреЛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ;

// рдФрд░ рдпрд╣ 00EE рд╣реИ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ

$ EE : рдЖрд░рдВрдн рдХрд░реЗрдВ

// рд╕реНрдЯреИрдХ рд╕реЗ рдкрддреЗ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдЗрд╕реЗ рдХреВрджреЗрдВ

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ;

рдЕрдВрдд ;

// рдФрд░ рдпрд╣рд╛рдБ рдЬрд╛рдУ рдЕрдЧрд░ opcode рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рди рддреЛ E0 рдФрд░ рди рд╣реА EE рд╕рдорд╛рдкреНрдд рд╣реБрдЖ

// рдЗрд╕рд▓рд┐рдП, рдпрд╛ рддреЛ рдЕрдорд╛рдиреНрдп рдУрдкрдХреЛрдб рд╕рдВрджреЗрд╢ рдХреЛ рдкрдХрдбрд╝реЛ рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЛ

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ; // null opcode рдХреЗ рд▓рд┐рдП рдПрдВрдб рдЪреЗрдХ

$ 01 : рд╢реБрд░реВ // opcode рдХреЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдмрд┐рдЯреНрд╕ рд╣реИрдВ 1 (opcode рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ)

// рдпрд╣ JMP рд╣реИ, рдХреВрджреЛред рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ

рдкреАрд╕реА : = op_code рдФрд░ $ 0FFF;

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ;

$ 02 : рдкреНрд░рд╛рд░рдВрдн // рдУрдкрдХреЛрдб рдХреЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рдмрд┐рдЯреНрд╕ 2 рд╣реИрдВ (рдУрдкрдХреЛрдб рдПрдХ рджреЛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ)

// рд╕рдмрд░реВрдЯрд┐рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред

// рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдПрдВ

// рд╕реНрдЯреИрдХ рдкрд░ рд╡рд░реНрддрдорд╛рди рдкрддреЗ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдВ

// рдФрд░ рд╕рдмрд░реВрдЯреАрди рдкрд░ рдкреНрд░рд╣рд╛рд░

рдЕрдВрдд ;

//

// рдпрд╣ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдУрдкрдХреЛрдб 7 рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

//



$ 08 : рд╢реБрд░реВ // opcode 8 рдкрд░ рд╢реБрд░реВ рд╣реБрдЖред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо 4 рдмрд┐рдЯреНрд╕ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдорд╛рдорд▓рд╛ op_code рдФрд░ $ 000F // рдкрд┐рдЫрд▓реЗ 4 рдмрд┐рдЯреНрд╕ opcode рдХрд╛

// mov vx, vy

$ 00 : рд╢реБрд░реВ рдХрд░реЗрдВ

// рдорд╛рди VY рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ VX рдореЗрдВ рд░рдЦреЗрдВ

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ;

// рдпрд╛ vx, vy

$ 01 : рд╢реБрд░реВ рдХрд░реЗрдВ

// VX = VX рдпрд╛ VY

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ;

//

// рдпрд╣ 0 рдИ рдкрд░ рдЬрд╛рд░реА рд╣реИ

//



рдЕрдВрдд ; // рдУрдкрдХреЛрдб рдХреЗ рдЕрдВрддрд┐рдо 4 рдмрд┐рдЯреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд╛ рдЕрдВрдд

// рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрджрд┐ рдЕрдорд╛рдиреНрдп рдУрдкрдХреЛрдб

рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;

рдЕрдВрдд ; // рдЪреЗрдХ рдХрд╛ рдЕрдВрдд рдпрджрд┐ рдУрдкрдХреЛрдб 8 рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ



рдФрд░ рдЗрд╕реА рддрд░рд╣, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдк рдХреБрдЫ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм, рдЬрдм рд╣рдо рдореВрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрдирдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП DXYN рдХрдорд╛рдВрдб рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ VX рдХрд╛ рд╕рдордиреНрд╡рдп X рд╣реИ, рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ VY рдХрд╛ рд╕рдордиреНрд╡рдп Y рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдирд┐рдХрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕рдордп рдкрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ I рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рдмрд┐рдЯрдореИрдк рдЫрд╡рд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдбреНрд░рд╛рдЗрдВрдЧ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЖрдк рд╣рдореЗрд╢рд╛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдХреАрдмреЛрд░реНрдб рд╣реИред



рдирд┐рд╖реНрдХрд░реНрд╖





рдмреЗрд╢рдХ, рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд▓рдХреНрд╖реНрдп рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИ рдФрд░ рдСрдкрдХреЛрдб рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЖрдк рдбреЗрд▓реНрдлреА рдкрд░ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреИрд╕реЗ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрд╢рдиреЗрдмрд▓, рдЙрдирдореЗрдВ рд╕реЗ рд╣рдЬрд╛рд░реЛрдВред рд╡рд┐рдЬреБрдЕрд▓ рдмреЗрд╕рд┐рдХ рд╕реЗ рд╢реБрд░реВ рдФрд░ рд▓реЛрд╣реЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрддред

рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ - рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рдбрд╛рд▓рд╛ред рдореБрдЦреНрдп рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рд╛рдЗрд▓ hchip.pas рд╣реИ, рдпрд╣ рд╕рднреА рдЕрдиреБрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред



рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝реЛрд░рдо EmuTalk рднреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪрд┐рдк -8 рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рдзрд╛рдЧрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд╡рд╣ рдкреГрд╖реНрда рдЬрд╣рд╛рдБ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЪрд┐рдк 8 рдПрдореБрд▓реЗрдЯрд░ рдФрд░ рдЧреЗрдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╡реИрд╕реЗ рднреА, Google "рдЪрд┐рдк -8" рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкрд░ рдЖрдк рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХрд╛ рд╣рд░ рд╕рд╛рдорд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдк рд╕реБрдкрд░ рдЪрд┐рдк -8 рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рдБ, рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред



рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛред



All Articles