рдкрд╣рд▓реЗ ,
рджреВрд╕рд░реЗ ,
рддреАрд╕рд░реЗ рднрд╛рдЧ ред
рдорд╢реАрди рдХреЗ рдмрд╛рдХреА
8080 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЬреЛ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рд╡рд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдорд╢реАрди рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЧреЗрдо рдХреЛ рдЦреБрдж рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдкреВрд░реЗ рдЖрд░реНрдХреЗрдб рдорд╢реАрди рдХреЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдореБрд▓реЗрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред
(рдЖрдкрдХреЛ рдорд╢реАрди рдХреЗ
рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред)
рд╕рдордп
рдЧреЗрдо 2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ 8080 рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реЛрдЧрд╛ред
рдмреАрдЪ рдореЗрдВ рдЖрддрд╛ рд╣реИ
рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдЯреАрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХреЗ, рдЬреИрд╕реЗ рдХрд┐ I / Oред рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдмрд╛рдзрд┐рдд рдкрд┐рди рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдФрд░ рдХрд░рддрд╛ рд╣реИред
рд╣рдореЗрдВ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдЖрд░реНрдХреЗрдб рдорд╢реАрди рд╡реНрдпрд╡рдзрд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред
рдЧреНрд░рд╛рдлрд┐рдХреНрд╕
рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░реА 0x2400 рдПрдбреНрд░реЗрд╕ рд░реЗрдВрдЬ рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рдЕрдкрдиреА рдореЗрдореЛрд░реА рдореЗрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡реАрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рдХ рд░реИрдо рдХреЛ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдПрдХ рд╕реАрдЖрд░рдЯреА рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рдЦреЗрд▓ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдмрдЯрди
рдЧреЗрдо рдореЗрдВ рднреМрддрд┐рдХ рдмрдЯрди рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо 8080 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ IN рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдврд╝рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдЗрди IN рдХрдорд╛рдВрдб рдкрд░ рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
ROM рдФрд░ RAM
рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╣рдордиреЗ 16-рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдмрдлрд░ рдмрдирд╛рдХрд░ "рдХреЛрдиреЗ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛", рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреЗ рдирд┐рдЪрд▓реЗ 16 рдХреЗрдмреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛ рдкрд╣рд▓рд╛ 2 KB рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реАрдб-рдУрдирд▓реА рдореЗрдореЛрд░реА (ROM) рд╣реИред рд╣рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рд░реЙрдо рдХреЛ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рди рд╣реЛред
рдзреНрд╡рдирд┐
рдЕрднреА рддрдХ рд╣рдордиреЗ рдзреНрд╡рдирд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рд╛ рд╣реИред рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрдпрд╛рд░рд╛ рдПрдирд╛рд▓реЙрдЧ рд╕рд╛рдЙрдВрдб рд╕реНрдХреАрдо рд╣реИ, рдЬреЛ OUT рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд 8 рдзреНрд╡рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреА рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдзреНрд╡рдирд┐ рдирдореВрдиреЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди OUT рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдмрд╣реБрдд рдХрд╛рдо рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рд╕реНрдХреНрд░реАрди рдХреЛ рджреЗрдЦрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ IN рдФрд░ OUT рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡реНрдпрд╡рдзрд╛рди, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рднрд╛рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИ
рдореВрд▓ рдмрд╛рддреЗрдВ
рдЖрдк рд╢рд╛рдпрдж рдПрдХ рд╡реАрдбрд┐рдпреЛ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд░реИрдо рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд╡рд┐ рд╣реЛрддреА рд╣реИред рдПрдирд╛рд▓реЙрдЧ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдЗрд╕ рд░реИрдо рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдореЙрдирд┐рдЯрд░ рдореЗрдВ рд╕рдВрдЪрд╛рд░рд┐рдд рдПрдирд╛рд▓реЙрдЧ рд╡реЛрд▓реНрдЯреЗрдЬ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдФрд░ рдХреЛрдб рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреА рдЧрд╣рд░реА рд╕рдордЭ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧреАред
рдПрдирд╛рд▓реЙрдЧ рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЗрдВ рддрд╛рдЬрд╝рд╛ рджрд░реЛрдВ рдФрд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдХрд┐рд╕реА рднреА рд╕рдордп, рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЗрдВ рдПрдХ рдЕрджреНрдпрддрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд┐рдХреНрд╕реЗрд▓ рд╣реЛрддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рдЫрд╡рд┐ рдКрдкрд░реА рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рдКрдкрд░реА рджрд╛рдИрдВ рдУрд░, рдлрд┐рд░ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдХрд╛ рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ, рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдХрд╛ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ, рдЖрджрд┐ред рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрдВрддрд┐рдо рд▓рд╛рдЗрди рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рд╡реАрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рд╡рд░реНрдЯрд┐рдХрд▓ рдмреНрд▓реИрдВрдХ рдЗрдВрдЯрд░рдкреНрдЯ (рдЬрд┐рд╕реЗ VBI рдпрд╛ VBL рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕реБрдЪрд╛рд░реВ рдПрдиреАрдореЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реАрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд░реИрдо рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдлреНрд░реЗрдо рдХреЗ рдмреАрдЪ рдореЗрдВ рд░реИрдо рдЕрдкрдбреЗрдЯ рд╣реБрдЖ рд╣реИ, рддреЛ рджрд░реНрд╢рдХ рджреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рджреЗрдЦреЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо "рдЖрдВрд╕реВ" рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрдм рдиреАрдЪреЗ рдХреА рддрд░рдл рдлреНрд░реЗрдо рд╕реЗ рдЕрд▓рдЧ рдПрдХ рдлреНрд░реЗрдо рд╕реНрдХреНрд░реАрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реАрди рдЕрдкрдбреЗрдЯ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИред
рд╡реАрдмреАрдПрд▓ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рд╣реЛрддрд╛ рд╣реИред (рдпрд╣ рд╡рд░реНрдЯрд┐рдХрд▓ рдмреНрд▓реИрдВрдХ рд╕рдордп рд╣реИ, рдФрд░ рдпрд╣ рд▓рдЧрднрдЧ 1 рдорд┐рд▓реА рд╕реЗрдХреЗрдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред)
рдЬрдм рд╡реАрдмреАрдПрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдКрдкрд░ рд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдлрд╝реНрд░реЗрдо рд╕реНрдХреИрди рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдЦрд╛ рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИред
рд╕реАрдкреАрдпреВ рд╣рдореЗрд╢рд╛ рд░рд┐рдЯрд░реНрди рд╣реЙрдЯ рд╕реЗ рдЖрдЧреЗ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рдгрд╛рд▓реА
рдПрдХ рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг
рдкреГрд╖реНрда рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рджреЛ рд╡реАрдбрд┐рдпреЛ рд╡реНрдпрд╡рдзрд╛рди рд╣реИрдВред рдПрдХ рдлреНрд░реЗрдо рдХреЗ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд╕реНрдХреНрд░реАрди рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдкреЗрдЬ рд╕реНрдХреНрд░реАрди рдЕрдкрдбреЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ - рдЧреЗрдо рд╕реНрдХреНрд░реАрди рдХреЗ рдКрдкрд░реА рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдмреАрдЪ рдореЗрдВ рд░реБрдХрд╛рд╡рдЯ рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдлреНрд░реЗрдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд░реБрдХрд╛рд╡рдЯ рдорд┐рд▓рдиреЗ рдкрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдпрд╣ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реНрдорд╛рд░реНрдЯ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдРрд╕реЗ рдЕрд╡рд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдорд╢реАрди рдХреЗ рдЕрдиреБрдХрд░рдг рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ 60 рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреА рдорд╢реАрди рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЦреЗрд▓ рд╕рд╣реА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕реЛрдЪреЗрдВрдЧреЗ рдХрд┐ рдЙрдирдХрд╛ рдЕрдиреБрдХрд░рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдмрдЯрди рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ
IN рдФрд░ OUT рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 8080 рдореИрдВ / O рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ 8 рдЕрд▓рдЧ-рдЕрд▓рдЧ IN рдФрд░ OUT рдкреЛрд░реНрдЯ рд╣реИрдВ - рдкреЛрд░реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
IN 3
рд░рдЬрд┐рд╕реНрдЯрд░ A рдореЗрдВ рдкреЛрд░реНрдЯ 3 рдХрд╛ рдорд╛рди рд░рдЦреЗрдЧрд╛, рдФрд░
OUT 2
рдкреЛрд░реНрдЯ 2 рдкрд░ A рднреЗрдЬреЗрдЧрд╛ред
рдореИрдВрдиреЗ
рдХрдВрдкреНрдпреВрдЯрд░ рдкреБрд░рд╛рддрддреНрд╡ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реАред рдпрджрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереА, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ, рд╕рд╛рде рд╣реА рдкрдврд╝рдиреЗ рдФрд░ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
:
1
0 (0, )
1 Start
2 Start
3 ?
4
5
6
7 ?
2
0,1 DIP- (0:3,1:4,2:5,3:6)
2 ""
3 DIP- , 1:1000,0:1500
4
5
6
7 DIP-, 1:,0:
3
2 ( 0,1,2)
3
4
5
6 "" ? , ,
(0=a,1=b,2=c ..)
( 3,5,6 1=$01 2=$00
, (attract mode))
рд╣рдорд╛рд░реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдЯреИрдХ рдореЗрдВ I / O рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ (рдЬрд┐рд╕рдореЗрдВ 8080 рдПрдореБрд▓реЗрдЯрд░, рдорд╢реАрди рдХреЛрдб рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред
- рд╣рдорд╛рд░реЗ 8080 рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдорд╢реАрди рдЬреНрдЮрд╛рди рдПрдореНрдмреЗрдб рдХрд░реЗрдВ
- рдорд╢реАрди рдХреЛрдб рдореЗрдВ 8080 рдПрдореБрд▓реЗрдЯрд░ рдЬреНрдЮрд╛рди рдПрдореНрдмреЗрдб рдХрд░реЗрдВ
- рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪрдирд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рддреАрди рднрд╛рдЧреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░реЗрдВ
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ - рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдореБрд▓реЗрдЯрд░ рдЗрд╕ рдХреЙрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмрд╣реБрдд рдиреАрдЪреЗ рд╣реИ рдФрд░ рдЕрд▓рдЧ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред (рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред) рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдПрдХ рдЦрд░рд╛рдм рд╡рд╛рд╕реНрддреБ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдореИрдВрдиреЗ рд╡рд┐рдХрд▓реНрдк 2 рдЪреБрдирд╛ред рдореБрдЭреЗ рдкрд╣рд▓реЗ рдХреЛрдб рджрд┐рдЦрд╛рдиреЗ рджреЗрдВ:
while (!done) { uint8_t opcode = state->memory[state->pc]; if (*opcode == 0xdb)
рдпрд╣ рдХреЛрдб IN рдФрд░ OUT рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкрд░рдд рдореЗрдВ opcodes рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдХреА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдХреЛрдб рдХреЛ рдХреНрд▓реАрдирд░ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рджреЛ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ рдПрдХ рдСрдЯреЛрдореЗрдЯрди рдкрд░рдд рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ opcodes рдХреЗ рдЙрддреНрд╕рд░реНрдЬрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рджреЛрд╖реА рдирд╣реАрдВ рдард╣рд░рд╛рдКрдВрдЧрд╛ред рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ, рдХрдо рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдк 3 рдЕрдзрд┐рдХ "рд╕реНрд╡рдЪреНрдЫ" рд╣реИ, рд▓реЗрдХрд┐рди рдХреАрдордд рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реИред рдпрд╣ рд╕реНрдЯрд╛рдЗрд▓ рдХреА рдкрд╕рдВрдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред
рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░
рд╕реНрдкреЗрд╕ рдЗрдиреНрд╡рд╛рдЗрдЯрд░реНрд╕ рдорд╢реАрди рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реЙрд▓реНрдпреВрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдереЛрдбрд╝реА рд╢рд┐рдлреНрдЯ рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред 8080 рдореЗрдВ 1-рдмрд┐рдЯ рд╢рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд▓реНрдЯреА-рдмрд┐рдЯ / рдорд▓реНрдЯреА-рдмрд╛рдЗрдЯ рд╢рд┐рдлреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд░реНрдЬрдиреЛрдВ 8080 рдЯреАрдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЦреЗрд▓ рдХреЛ рдХреБрдЫ рд╣реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐ рдлреНрд░реЗрдо рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкреБрд░рд╛рддрддреНрд╡ рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдмреЗрд╣рддрд░ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реВрдВ:
; 16- :
; f 0
; xxxxxxxxyyyyyyyy
;
; 4 x y, x, :
; $0000,
; write $aa -> $aa00,
; write $ff -> $ffaa,
; write $12 -> $12ff, ..
;
; 2 ( 0,1,2) 8- , :
; offset 0:
; rrrrrrrr result=xxxxxxxx
; xxxxxxxxyyyyyyyy
;
; offset 2:
; rrrrrrrr result=xxxxxxyy
; xxxxxxxxyyyyyyyy
;
; offset 7:
; rrrrrrrr result=xyyyyyyy
; xxxxxxxxyyyyyyyy
;
; 3 .
OUT рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП, рдкреЛрд░реНрдЯ 2 рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢рд┐рдлреНрдЯ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреЛрд░реНрдЯ 4 рдореЗрдВ рд▓рд┐рдЦрдиреЗ рд╕реЗ рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рд╢рд┐рдлреНрдЯ рдХреА рд░рд╛рд╢рд┐ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд 3 рд░рд┐рдЯрд░реНрди рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ред рдореЗрд░реА рдорд╢реАрди рдореЗрдВ, рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
-(uint8_t) MachineIN(uint8_t port) { uint8_t a; switch(port) { case 3: { uint16_t v = (shift1<<8) | shift0; a = ((v >> (8-shift_offset)) & 0xff); } break; } return a; } -(void) MachineOUT(uint8_t port, uint8_t value) { switch(port) { case 2: shift_offset = value & 0x7; break; case 4: shift0 = shift1; shift1 = value; break; } }
рдХреАрдмреЛрд░реНрдб
рдорд╢реАрди рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдХреАрд╕реНрдЯреНрд░реЛрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдмрдЯрди рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рдирд┐рдореНрди рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { if (msg.message==WM_KEYDOWN ) { if ( msg.wParam == VK_LEFT ) MachineKeyDown(LEFT); } else if (msg.message==WM_KEYUP ) { if ( msg.wParam == VK_LEFT ) MachineKeyUp(LEFT); } }
рдПрдореБрд▓реЗрдЯрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рдХреЛ рдЪрд┐рдкрдХреЗ рд╣реБрдП рдорд╢реАрди рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
MachineKeyDown(char key) { switch(key) { case LEFT: port[1] |= 0x20;
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдорд╢реАрди рдХреЗ рдХреЛрдб рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдорд╢реАрди рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред
рдмреАрдЪ рдореЗрдВ рдЖрддрд╛ рд╣реИ
рдореИрдиреБрдЕрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ 8080 рд╣реИрдВрдбрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
- рдЗрдВрдЯрд░рдкреНрдЯ рд╕реЛрд░реНрд╕ (CPU рдореЗрдВ рдмрд╛рд╣рд░реА) CPU рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
- рдЬрдм CPU рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдкреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрдВрдЯрд░рдкреНрдЯ рдХрд╛ рд╕реНрд░реЛрдд рдХрд┐рд╕реА рднреА рдУрдкреЛрдб рдХреЛ рдмрд╕ рдореЗрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдФрд░ CPU рдЙрд╕реЗ рджреЗрдЦрддрд╛ рд╣реИред (рдЬреНрдпрд╛рджрд╛рддрд░ рд╡реЗ рдЖрд░рдПрд╕рдЯреА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред)
- CPU рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрд░рдПрд╕рдЯреА рд╣реИ, рддреЛ рдпрд╣ рдореЗрдореЛрд░реА рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрддреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдпрд╣ рд╕реНрдЯреИрдХ рдкрд░ рд╡рд░реНрддрдорд╛рди рдкреАрд╕реА рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред
- рдирд┐рдЪрд▓реЗ рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рдХреЛрдб рдореЗрдВ рдХреЛрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, RST, RET рдкрд░ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЦреЗрд▓ рдХреЗ рд╡реАрдбрд┐рдпреЛ рдЙрдкрдХрд░рдг рджреЛ рд╡реНрдпрд╡рдзрд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдлреНрд░реЗрдо рдХрд╛ рдЕрдВрдд рдФрд░ рдлреНрд░реЗрдо рдХреЗ рдмреАрдЪ рдХрд╛ред рджреЛрдиреЛрдВ 60 рд╣рд░реНрдЯреНрдЬ (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 60 рдмрд╛рд░) рдкрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕реЗрдХрдВрдб рдХрд╛ 1/60 16.6667 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реИред
рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ 8080 рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реВрдВрдЧрд╛:
void GenerateInterrupt(State8080* state, int interrupt_num) {
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рдХреЛ рдПрдХ рдЯрд╛рдЗрдорд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рдордп () рдХрд╣рддрд╛ рд╣реВрдВ)ред рдорд╢реАрди рдХреЛрдб 8080 рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдорд╢реАрди рдХреЛрдб рдореЗрдВ, рдЬрдм рдЯрд╛рдЗрдорд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ GenerateInterrupt рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛:
while (!done) { Emulate8080Op(state); if ( time() - lastInterrupt > 1.0/60.0)
рдХреБрдЫ рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдХрд┐ 8080 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдмрд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред