рд░реЗрдЯреНрд░реЛ рдХрдВрдкреНрдпреВрдЯрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдХреБрдЫ рдЕрдиреБрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред рдЕрдиреНрдп рд▓реЛрдЧ FPGAs рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдпрд╣ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдордиреЛрд░рдВрдЬрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рддреАрд╕рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕реЗрд╡рд╛ рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рдлрд┐рд░ рд╕реЗ, рджреБрд╡рд┐рдзрд╛: рдЙрд╕реА рд╡рд░реНрд╖ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд┐рдкреНрд╕ рд▓реЗрдВ, рдпрд╛ рдПрдлрдкреАрдЬреАрдП рдореЗрдВ рд╕рдм рдХреБрдЫ рдбрд╛рд▓ рджреЗрдВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреЗрдВ? рд╣рд╛рд▓рд╛рдВрдХрд┐, FPGA рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдЕрд░реБрдбрд┐рдиреЛ рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдирд╛!
рдЕрдкрдиреЗ Arduino рдХреЛ "рджреВрд╕рд░рд╛ рдорд╕реНрддрд┐рд╖реНрдХ" рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдорд╛рд░реНрдЯ рдмрдирд╛рдПрдВред
рдПрдХ рд╕рдЪреНрдЪрд╛ рдЖрда-рдмрд┐рдЯ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ Arduino ROM, RAM рдФрд░ рд╕рд░рд▓ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред
Arduino IDE рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ, рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдЪрд▓рд╛рдПрдВред рдЬрдЯрд┐рд▓ рд╕рд░реНрдХрд┐рдЯ рдФрд░ рдлреНрд▓реИрд╢ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реЛрдо рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдорд░реНрдерд┐рдд рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ: 6502, 6809 рдФрд░ Z80 (18581), рдЕрдиреНрдп рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИрдВред
рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдврд╛рд▓ рдЕрдиреНрдп рдврд╛рд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдПрд▓рд╕реАрдбреА, рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб, рдЖрджрд┐ рдХреЗ рд╕рд╛рдеред
рд╕реНрд╡-рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХреБрдЫ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдЪ рд╣реИ, рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдмрд╣реБрдд рдХрдо рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ - рд▓рдЧрднрдЧ 95 kHz, рдЗрд╕рдХрд╛ рд╕рдЯреАрдХ рдореВрд▓реНрдп рдкрд░рд┐рдзреАрдп рдЕрдиреБрдХрд░рдг рдХреЛрдб рдХреЗ рдЕрдиреБрдХреВрд▓рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рд╡рд┐рддрд░рдг рдПрдХ рд╕реНрдХреЗрдЪ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ Arduino Mega рдкрд░ рдЙрдкрд▓рдмреНрдз 4 kB 8 kB RAM рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ROM рдЙрдкрд▓рдмреНрдз 256 рдХреЗ 200 kB рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рдЖрд╡рдВрдЯрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Arduino рдореЗрдЧрд╛ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ UART рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░реНрдХрд┐рдЯ, рдмреЛрд░реНрдб рдЪрд┐рддреНрд░, Gerber рдлрд╛рдЗрд▓реЗрдВ CC-BY-SA 4.0 рдХреЗ рддрд╣рдд рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз
рд╣реИрдВ ред рдЙрд╕реА рд╕рдордп, README.md рдлрд╝рд╛рдЗрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рд╢рд╛рдорд┐рд▓ рд╣реИ:
рдкрд░рд┐рдзреАрдп рдЕрдиреБрдХрд░рдг рд╕реНрдХреЗрдЪ рдЕрдкрд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдврд╛рд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рди рдХрд░реЗрдВ! рдЕрдиреНрдпрдерд╛, рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╣рд╛рдВ, рдФрд░ рд╕реНрдХреЗрдЪ рдореЗрдВ рд╣реА, рдХрд┐рд╕реА рдЪреАрдЬ рдХреЛ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
6502 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдпреЛрдЬрдирд╛:

6809 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдпреЛрдЬрдирд╛:

Z80 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдпреЛрдЬрдирд╛:

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
6502 рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ -
рдРрдкреНрдкрд▓ I, рд╡реЙрдЬрд╝ рдореЙрдирд┐рдЯрд░ + рд░реЛрдо рд╡рд┐рде рдмреЗрд╕рд┐рдХ6809 рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдХрд░рдг рдкрд░ -
рдПрдХ рд╣реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдШрд░-рдирд┐рд░реНрдорд┐рдд рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рдореЛрди 6809 рдХрд╛
рдПрдХ рдПрдирд╛рд▓реЙрдЧ, рдХреЛрдбрд╛рдВрддрд░рдХ рдФрд░ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЙрдирд┐рдЯрд░редZ80 рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ - рдЕрдм рддрдХ рдХреЗрд╡рд▓
рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреА рдПрдХ
рдЗрдХреЛ рдЯреЗрд╕реНрдЯ , рдЖрдкрдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ 8251 (KR580VV51A) рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЕрдиреБрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ - рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рддред
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг:
6502 рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ6809 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПZ80 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП - рддреИрдпрд╛рд░реА рдореЗрдВред
рдбреЗрд╡рд▓рдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ
рдмреЗрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдореЗрдВ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рдеред рдЦрд░реАрджрдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ RCA1802, 68008, 8085 (182185), 8088 (181088) рдкрд░ рд╕рдорд╛рди рдмреЛрд░реНрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред K1801BM1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд▓реЗрдЦрдХ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╛рдЗрд▓реЗрдВ:
6502 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП:
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ ,
рд╕рд┐рд▓реНрдХ рд╕реНрдХреНрд░реАрди рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ ,
рдЖрд░реЗрдЦ6809 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП:
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ ,
рд╕рд┐рд▓реНрдХ рд╕реНрдХреНрд░реАрди рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ ,
рдЖрд░реЗрдЦZ80 рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП:
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢ ,
рд╕рд┐рд▓реНрдХ рд╕реНрдХреНрд░реАрди рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ ,
рдЖрд░реЗрдЦрдПрдХ Arduino рдФрд░ рдПрдХ 6502 рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдмрд╛рддрдЪреАрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред Arduino рд╕рдордп-рд╕рдордп рдкрд░ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рд╕реНрддрд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдШрдбрд╝реА рдХреА рджрд╛рд▓реЛрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдкрд░, рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рд░реЗрдЦрд╛ рдФрд░ рдкрддрд╛ рдмрд╕ рдкрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдбреЗрдЯрд╛ рдмрд╕ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рддрд╛ рд╣реИ рдпрд╛ рд╡рд╣рд╛рдВ рднреЗрдЬрддрд╛ рд╣реИред Arduino IRQ рдФрд░ NMI рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рднреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд░реБрдХрд╛рд╡рдЯреЗрдВ рдкреИрджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЖрдВрдХрдбрд╝рд╛ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдЪрд░рдг рдХреА рджрд┐рд╢рд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

Arduino рдкреЛрд░реНрдЯреНрд╕ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рд╕реНрдХреЗрдЪ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
/* Digital Pin Assignments */ #define DATA_OUT PORTL #define DATA_IN PINL #define ADDR_H PINC #define ADDR_L PINA #define ADDR ((unsigned int) (ADDR_H << 8 | ADDR_L)) #define uP_RESET_N 38 #define uP_RW_N 40 #define uP_RDY 39 #define uP_SO_N 41 #define uP_IRQ_N 50 #define uP_NMI_N 51 #define uP_E 52 #define uP_GPIO 53
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╛рдп рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ:
CLK рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рд╕реЗ рд╢реВрдиреНрдп рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ (рдЧрд┐рд░рд╛рд╡рдЯ)
рд╕реАрдПрд▓рдХреЗ рд╢реВрдиреНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ
CLK рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рд╕реЗ рд╢реВрдиреНрдп рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ (рдЙрджрдп)
рд╕реАрдПрд▓рдХреЗ рдЗрдХрд╛рдИ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИ
CLK рдлрд┐рд░ рд╕реЗ рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рд╕реЗ рд╢реВрдиреНрдп рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ ...
рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
6502 рдЗрдирдкреБрдЯ CLK0 рдкрд░ рдШрдбрд╝реА рдХреА рджрд╛рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдмрдлрд╝рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ: CLK1 рдФрд░ CLK2ред рдпрджреНрдпрдкрд┐ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд╕рднреА рдШрдЯрдирд╛рдПрдБ CLK1 рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд▓рдВрдм рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рд╡реЗ CLK0 рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ - рд╡рд╣ рд░реЗрдЦрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ Arduino рд╕реЗ рдШрдбрд╝реА рдХреА рджрд╛рд▓реЗрдВ рдорд┐рд▓рддреА рд╣реИрдВред рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕рд┐рд░реНрдл CLK рдХрд╣реЗрдВред

1. рд╕реАрдПрд▓рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рд╕реЗ рд╢реВрдиреНрдп рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред
2. рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрддрд╛ рдмрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкрддрд╛ рдФрд░ рдЖрд░ / рдбрдмреНрд▓реНрдпреВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрднреА рддрдХ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред
3. рд╕реАрдПрд▓рдХреЗ рдЗрдХрд╛рдИ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рд░реАрдб рдСрдкрд░реЗрд╢рди рд╣реИ, рддреЛ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдбреЗрдЯрд╛ рдмрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЗрдирдкреБрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд░рд╛рдЗрдЯ рдСрдкрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред рдФрд░ R / W рд╕рд┐рдЧреНрдирд▓ рдмрд╛рд╣рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдпрд╛ рдкрдврд╝рдиреЗ рдХреЗ рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред
4. рд╕реАрдПрд▓рдХреЗ рд╢реВрдиреНрдп рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рди рддреЛ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рди рд╣реА рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдбреЗрдЯрд╛ рдмрд╕ рдореЗрдВ рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдбреЗрдЯрд╛ рдмрд╕ рд▓рд╛рдЗрди рдФрд░ R / W рдкрд┐рди рдХреЛ рдирдП рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рд╕рд░рд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛, рдмрдЪреНрдЪреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдпред рдЬреЛ рдХрднреА рднреА рдЗрди "рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХреА рд╕рд╛рдЬрд╝рд┐рд╢реЛрдВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛, рдЕрдЧрд░ рд╡рд╣ рдХреЗрд╡рд▓ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реЗрдЧрд╛ред рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рднреАред
рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдг рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реАрдПрд▓рдХреЗ рд▓рд╛рдЗрди рдкрд░ рдЗрдХрд╛рдИ (рддреИрдпрд╛рд░реА рдХрд╛ рд╕рдордп) рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬрдм рдЗрдХрд╛рдИ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рди рдмрджрд▓реЗрдВред рдпрджрд┐ рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдг рдореЗрдВ рд╕реАрдПрд▓рдХреЗ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдкрд░ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЗрдХрд╛рдИ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЖрд╢реНрдЪрд░реНрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдирд╛рдордорд╛рддреНрд░ рдЖрд╡реГрддреНрддрд┐ рд╕реЗ рджрд╕ рд╕реЗ рдкрдВрджреНрд░рд╣ рдЧреБрдирд╛ рдХрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ Arduino рдХреЛ рдШрдбрд╝реА рдХреА рджрд╛рд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рд┐рдЦрд╛рдиреЗ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓рдЧрд╛рддрд╛рд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдПрдбреНрд░реЗрд╕ рдмрд╕ рдФрд░ R / W рд▓рд╛рдЗрди рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рдмрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреЗрдЪ рдореЗрдВ рдЯрд╛рдЗрдорд░ 1 рдЯрд╛рдЗрдорд░ рдЗрдВрдЯрд░рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 95 kHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рджрд╛рд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред Arduino рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреА рдШрдбрд╝рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдпрд╣ рд╕рдм рдХреБрдЫ рдкрдврд╝рдиреЗ рдФрд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдХреЗрдЪ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд╣реИред
рдпрд╣рд╛рдБ рд╕реНрдХреЗрдЪ рд╕реЗ рдПрдХ рдЕрдВрд╢ рд╣реИ, рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдПрд▓рдХреЗ рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рддрдХ рдХреИрд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
//////////////////////////////////////////////////////////////////// // Processor Control Loop //////////////////////////////////////////////////////////////////// // This is where the action is. // it reads processor control signals and acts accordingly. // ISR(TIMER1_COMPA_vect) { // Drive CLK high CLK_E_HIGH; // Let's capture the ADDR bus uP_ADDR = ADDR; if (STATE_RW_N) ////////////////////////////////////////////////////////////////// // HIGH = READ transaction { // uP wants to read so Arduino to drive databus to uP: DATA_DIR = DIR_OUT; // Check what device uP_ADDR corresponds to: // ROM? if ( (ROM_START <= uP_ADDR) && (uP_ADDR <= ROM_END) ) DATA_OUT = pgm_read_byte_near(rom_bin + (uP_ADDR - ROM_START)); else if ( (BASIC_START <= uP_ADDR) && (uP_ADDR <= BASIC_END) ) DATA_OUT = pgm_read_byte_near(basic_bin + (uP_ADDR - BASIC_START)); else // RAM? if ( (uP_ADDR <= RAM_END) && (RAM_START <= uP_ADDR) ) DATA_OUT = RAM[uP_ADDR - RAM_START]; else // 6821? if ( KBD <=uP_ADDR && uP_ADDR <= DSPCR ) { // KBD? if (uP_ADDR == KBD) { ... // handle KBD register } else // KBDCR? if (uP_ADDR == KBDCR) { ... // handle KBDCR register } else // DSP? if (uP_ADDR == DSP) { ... // handle DSP register } else // DSPCR? if (uP_ADDR == DSPCR) { ... // handle DSPCR register } } } else ////////////////////////////////////////////////////////////////// // R/W = LOW = WRITE { // RAM? if ( (uP_ADDR <= RAM_END) && (RAM_START <= uP_ADDR) ) RAM[uP_ADDR - RAM_START] = DATA_IN; else // 6821? if ( KBD <=uP_ADDR && uP_ADDR <= DSPCR ) { // KBD? if (uP_ADDR == KBD) { ... // handle KBD register } else // KBDCR? if (uP_ADDR == KBDCR) { ... // handle KBDCR register } else // DSP? if (uP_ADDR == DSP) { ... // handle DSP register } else // DSPCR? if (uP_ADDR == DSPCR) { ... // handle DSPCR register } } } //////////////////////////////////////////////////////////////// // We are done with this cycle. // one full cycle complete clock_cycle_count ++; // start next cycle CLK_E_LOW; // If Arduino was driving the bus, no need anymore. // natural delay for DATA Hold time after CLK goes low (t_HR) DATA_DIR = DIR_IN; }
рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХрд╛ рдЖрд╡рдВрдЯрди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЕрдирдореЙрдбрд┐рдлрд╛рдЗрдб рд╕реНрдХреЗрдЪ рдореЗрдВ рдпрд╣ Apple 1 рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 256 рдмрд╛рдЗрдЯреНрд╕ ROM рдХреЗ рд╕рд╛рде, BASIC рдХреЗ рд▓рд┐рдП 8 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд░реЛрдо, 4 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд░реИрдо рдФрд░ 6821 рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИред
// MEMORY LAYOUT // 4K MEMORY #define RAM_START 0x0000 #define RAM_END 0x0FFF byte RAM[RAM_END-RAM_START+1]; // ROMs (Monitor + Basic) #define ROM_START 0xFF00 #define ROM_END 0xFFFF #define BASIC_START 0xE000 #define BASIC_END 0xEFFF //////////////////////////////////////////////////////////////////// // Woz Monitor Code //////////////////////////////////////////////////////////////////// // PROGMEM const unsigned char rom_bin[] = { 0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9, 0xa7, 0x8d, 0x11, 0xd0, ... 0x00, 0xff, 0x00, 0x00 }; // BASIC ROM starts at E000 PROGMEM const unsigned char basic_bin[] = { 0x4C, 0xB0, 0xE2, 0xAD, 0x11, 0xD0, 0x10, 0xFB, ... 0xE0, 0x80, 0xD0, 0x01, 0x88, 0x4C, 0x0C, 0xE0 };
RAM рдХреЛ рдмрд╛рдЗрдЯ RAM рд╕рд░рдгреА [RAM_END-RAM_START + 1] рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛ PROGMEM рдХреАрд╡рд░реНрдб рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд░реЛрдо рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
6821 рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдиреБрдХрд░рдгреАрдп рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдХреАрдмреЛрд░реНрдб рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ "рдЯрд░реНрдорд┐рдирд▓" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред Woz Monitor рдФрд░ BASIC рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд▓реЗрдЦрдХ рдиреЗ рдорд╛рдВрдЧреЗ рд╣реИрдВред
рдХрд┐рд╕реА рднреА рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдг рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреА рдбреЗрдЯрд╛рд╢реАрдЯ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ рдФрд░ рд╡реЗ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИрдВред рдЕрдиреБрдХрд░рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдореЗрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкрд░рд┐рдзрд┐ рдХреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
I / O рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ; рд╡реЗ рдореЗрдореЛрд░реА рд╕реЗрд▓реНрд╕ рдХреА рддрд░рд╣ рд╣реА рдПрдХреНрд╕реЗрд╕ рд╣реЛрддреЗ рд╣реИрдВред "рд▓реЛрд╣рд╛" рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрд▓рд╕реАрдбреА рдбрд┐рд╕реНрдкреНрд▓реЗ, рдПрдХ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб, рд╕рд╛рдЙрдВрдб рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн:
www.6502.orgwww.callapple.org/soft/ap1/emul.htmlskilldrick.imtqy.com/easy6502searle.hostei.com/grant/6502/Simple6502.htmlwilsonminesco.com/6502primerрдПрд╕рдмреА-рдЕрд╕реЗрдВрдмрд▓рд░:
www.sbprojects.net/sbasm6809 рдкрд░ рдЬрд╛рдПрдВ, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рджреЛ рдЖрда-рдмрд┐рдЯ рдмреИрдЯрд░реА рдП рдФрд░ рдмреА, рдЬрд┐рд╕реЗ рдПрдХ рдЫрд╣-рдмрд┐рдЯ рдмреИрдЯрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рджреЛ 16-рдмрд┐рдЯ рд╕реНрдЯреИрдХ рдЗрдВрдбреЗрдХреНрд╕
рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛
1 рдпрд╛ 2 рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рдШрдЯрд╛рдПрдБ
рджреЛ рдЖрда рдЕрдВрдХреЛрдВ рдХреЗ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЧреБрдгрди
16-рдмрд┐рдЯ рдЕрдВрдХрдЧрдгрд┐рдд
рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдФрд░ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди
рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдпреЛрдЬрди рдХреЛ рд▓рд┐рдЦрдирд╛ рдФрд░ рдкрдврд╝рдирд╛
рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ 6809E (рдмрд╛рд╣рд░реА) рдХреЛ рдПрдХ рдмрд╛рд╣рд░реА рдШрдбрд╝реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ 6809 рдореЗрдВ рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╣реЛрддрд╛ рд╣реИред рд╣рд┐рддрд╛рдЪреА рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд╢рдГ 6309 рдИ рдФрд░ 6309 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдЕрдВрджрд░ 32-рдмрд┐рдЯ рдлреЙрд░реНрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рджрд░рдЕрд╕рд▓, рдкреВрд░реЗ рд░реЗрдЯреНрд░реЛрд╢реАрд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдЗрд╕рд▓рд┐рдП рд╣реБрдИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рдШрд░ рдореЗрдВ рдмрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдЗрдорди 6809 рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рд╕рд╛рдЗрдорди 6809 рдЯрд░реНрдмреЛ рд░рдЦрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЬреЛ рдХреБрдЫ рд╡рд╣ рд╡рд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд▓реЙрдЬрд┐рдХ рдЪрд┐рдкреНрд╕ рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦрдХ рдиреЗ 6809 рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рд░реЗрдЯреНрд░реЛрд╢реАрд▓реНрдб рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕реЛрдЪрд╛: "рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЕрдиреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реЛ?"ред
рдбрд┐рд╡рд╛рдЗрд╕, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, 6809E рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рд╣рд░реА рдШрдбрд╝реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдмрд╛рд╣рд░ рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХреЗред рджреЛрдиреЛрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдИ рдФрд░ рдХреНрдпреВ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ 6809 рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ, рдФрд░ 6809E рдореЗрдВ рдЗрдирдкреБрдЯ рд╣реИрдВред
Arduino 6502 рдХреА рддрд░рд╣ 6809 рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рджреЛ рдХреНрд▓реЙрдХ рдЗрдирдкреБрдЯ рд╣реИрдВ: E рдФрд░ Q, рдФрд░ рддреАрди рдЗрдВрдЯрд░рдкреНрдЯ рдЗрдирдкреБрдЯ: IRQ, FIRQ рдФрд░ NMIред

рдЗрд╕ рдмрд╛рд░, Arduino рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд┐рди рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
/* Digital Pin Assignments */ #define DATA_OUT PORTL #define DATA_IN PINL #define ADDR_H PINC #define ADDR_L PINA #define ADDR ((unsigned int) (ADDR_H << 8 | ADDR_L)) #define uP_RESET_N 38 #define uP_E 52 #define uP_Q 53 #define uP_RW_N 40 #define uP_FIRQ_N 41 #define uP_IRQ_N 50 #define uP_NMI_N 51 #define uP_GPIO 39
рдЬреИрд╕рд╛ рдХрд┐ рд░реЗрдЦрд╛рдВрдХрди рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрдХреЗрдд рдХреНрдпреВ рдЕрд╡рдзрд┐ рдХреЗ рдПрдХ рдЪреМрдерд╛рдИ рд╕реЗ рдИ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рд╣рдо рд╢рд╛рдпрдж рд╣реА рдХреНрдпреВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдИрд╡реЗрдВрдЯреНрд╕ рдИ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ:

- рдИ рд╢реВрдиреНрдп рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрддрд╛ рдмрд╕ рдкрд░ рдПрдХ рдирдпрд╛ рдкрддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд░ / рдбрдмреНрд▓реНрдпреВ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред
- рдИ рдПрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЬрдм рддрдХ E рдПрдХ рд╣реИ рдбреЗрдЯрд╛ рдмрд╕ рдХрд╛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ E рдХреЗ рд╢реВрдиреНрдп рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред
- рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╕рдордп, I / O рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдмрд╕ E рд╕реЗ рдПрдХ рд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рдкрд╣рд▓реЗ рд▓рд╛рдЗрди (рд╕рд░реНрдХрд▓ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ 17 рджреНрд╡рд╛рд░рд╛ рдиреНрдпреВрдирддрдо рд╡рд┐рд▓рдВрдм рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рддрдХ рдкрд╣реБрдВрдЪрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, I / O рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХреБрдЫ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЙрд╕ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЙрд╕ рд╕рдордп рдерд╛ рдЬрдм E рдПрдХ рд╕реЗ рд╢реВрдиреНрдп рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░реЛрд╕реЗрд╕рд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдмрд╕ рдкрд░ рдкрд╣рд▓реЗ рднреА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ - рдХреНрдпреВ рдХреЗ рдПрдХ (рд╕рд░реНрдХрд▓ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ 20) рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рдХреНрд╖рдг рдореЗрдВред
- рдИ рдХреЗ рд╢реВрдиреНрдп рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред
рд╕рдм рдХреБрдЫ 6502 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдзреАрдп рдбрд┐рд╡рд╛рдЗрд╕ (рдПрдХ рдЖрднрд╛рд╕реА рд╕рд╣рд┐рдд) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп-рд╕рдордп рдкрд░ 6809ред
6502 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рд╕реГрдЬрди, 6502 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдЗрд╕ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдХрд┐ рджреЛ рд╕рдВрдХреЗрдд рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдРрд╕реЗ рд╣реА, рдПрдХ рдЙрдк-рд╡реНрдпрд╡рдзрд╛рди рдЬрд┐рд╕реЗ рд░реБрдХрд╛рд╡рдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЗрдирдкреБрдЯ рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
рдЕрдирдореЛрдбрд┐рдлрд╝рд╛рдЗрдб рд╕реНрдХреЗрдЪ рдореЗрдВ рдкрддрд╛ рд╕реНрдерд╛рди рдЙрд╕реА рддрд░рд╣ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдШрд░ рдореЗрдВ рдмрдирд╛
рд╕рд╛рдЗрдорди 6809 рдХрдВрдкреНрдпреВрдЯрд░:
// MEMORY #define RAM_START 0x0000 #define RAM_END 0x0FFF #define ROM_START 0xE000 #define ROM_END 0xFFFF byte RAM[RAM_END-RAM_START+1]; //////////////////////////////////////////////////////////////////// // Monitor Code //////////////////////////////////////////////////////////////////// // static const unsigned char PROGMEM const unsigned char simon09_bin[] = { 0x1a, 0xff, 0x4f, 0x1f, 0x8b, 0x0f, 0x36, 0x7f, 0x01, 0xa5, 0x10, 0xce, ... 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0f, 0xe0, 0x00 };
рд░реИрдо рдФрд░ рд░реЛрдо рдХреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ 6502 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ ROM рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рдгреА рд╣реИред
I / O рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рднреА рдкрддрд╛ рд╕реНрдерд╛рди рдХреЗ рдХреБрдЫ рднрд╛рдЧ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдЖрднрд╛рд╕реА рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рд╕рд┐рдореЛрди 6809 рдПрдХ рдкреБрд░рд╛рдиреА рдореМрд▓рд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЖрдзреБрдирд┐рдХ рдорд╢реАрди рд╣реИ, рдпрд╣ рдкреАрд╕реА рд╕реЗ рдПрдлрдЯреАрдбреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ "рдЯрд░реНрдорд┐рдирд▓" рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн:
рдЖрд░реНрдЯреЛ рдкреЗрдЬ рдкрд░ 6809 рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА
6809 рдХреЛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦSWTPc 6809 рд╕рд┐рд╕реНрдЯрдордлреНрд▓реЗрдХреНрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ