{"id":305598,"date":"2020-06-19T09:00:45","date_gmt":"2020-06-19T09:00:45","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=305598"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=305598","title":{"rendered":"ZX Spectrum \u0438\u0437 \u043a\u043e\u0440\u043e\u043d\u0430\u0432\u0438\u0440\u0443\u0441\u0430 \u0438 \u043f\u0430\u043b\u043e\u043a, \u0447\u0430\u0441\u0442\u044c 2 (\u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/503332\/\"><a href=\"https:\/\/habr.com\/ru\/post\/498222\/\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c<\/a><\/p>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0445\u043e\u0447\u0443 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0437\u0430 \u0441\u0442\u043e\u043b\u044c \u0434\u043e\u043b\u0433\u0443\u044e \u043f\u0430\u0443\u0437\u0443 \u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c. \u041d\u0430 \u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0443\u0432\u0430\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u0442, \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u0435\u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u044f\u0442\u044c. \u042f \u0441\u043b\u0443\u043a\u0430\u0432\u0438\u043b. \u041f\u0430\u044f\u0442\u044c \u044f \u043b\u044e\u0431\u043b\u044e, \u043d\u043e \u043a\u043e\u043d\u0444\u0430\u0439\u043d\u043c\u0435\u043d\u0442 (\u043d\u0435 \u0442\u043e\u0442, \u0447\u0442\u043e \u0443 \u043a\u0432\u0430\u0440\u043a\u043e\u0432, \u0430 \u0442\u043e\u0442, \u0447\u0442\u043e \u0443 \u043b\u044e\u0434\u0435\u0439) \u043f\u0440\u0438\u0432\u0435\u043b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u043f\u043e\u0439. \u042f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u043a\u0430\u0437\u0430\u043b \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0438 \u043d\u0430 \u0438\u0431\u0435\u0435 \u0438 \u043d\u0430 \u0430\u043b\u0438, \u043d\u043e \u043f\u0440\u0438\u0448\u0435\u043b \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u043e. \u0423\u0432\u044b, \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430 \u0431\u0435\u0441\u043f\u0430\u0435\u0447\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0438 \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u043d\u0435 \u043c\u043e\u0433\u043b\u043e \u0438\u0434\u0442\u0438 \u0440\u0435\u0447\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k1\/1e\/z5\/k11ez5ixf4ucxlhruzakuyo5nr0.png\"><br \/>  \u041f\u0440\u043e\u0448\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044f \u0438\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432\u0441\u044e \u043c\u043e\u044e \u043f\u043e\u0434\u0435\u043b\u043a\u0443 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0443\u0436\u043d\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u043a\u0438. \u0423 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u0438\u0445 \u043d\u0435\u0442. \u041d\u043e \u0432\u043e\u0442 \u043f\u0440\u0438\u043f\u043e\u0439 \u043f\u0440\u0438\u0448\u0435\u043b, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.<\/p>\n<p>  \u0418 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e. \u042f \u2014 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a. \u0411\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u0438 \u0434\u0430\u0436\u0435 \u0432\u0438\u0434\u0435\u043e. <b>\u0422\u0440\u0430\u0444\u0438\u043a!<\/b><br \/>  <a name=\"habracut\"><\/a><br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043e\u0434\u043d\u0430\u043a\u043e, \u0441\u0442\u043e\u0438\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c. \u041a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043a\u043b\u043e\u043d \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0430 \u043a\u0430\u043a-\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0438\u0431\u043e \u0438\u0445 \u0441\u043e\u0442\u043d\u0438, \u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043e\u043d\u0438 \u043b\u044e\u0434\u044c\u043c\u0438, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438, \u043d\u0435\u0436\u0435\u043b\u0438 \u044f. \u0415\u0449\u0435 \u0440\u0430\u0437 \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e:<\/p>\n<p>  <b>\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a\u043e \u0432\u0441\u0435\u043c\u0443, \u0447\u0442\u043e \u044f \u043f\u0438\u0448\u0443, \u0441 \u0438\u0437\u0440\u044f\u0434\u043d\u043e\u0439 \u0434\u043e\u043b\u0435\u0439 \u0441\u043a\u0435\u043f\u0441\u0438\u0441\u0430. \u042f \u2014 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u043b\u043e\u0445\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u043e\u043c\u0443, \u043e \u0447\u0435\u043c \u044f \u043f\u0438\u0448\u0443, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0434\u0440\u0443\u0433 \u0440\u0435\u0448\u0438\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u044f (\u043d\u0435\u0442, \u043d\u0443 \u0430 \u0432\u0434\u0440\u0443\u0433?), \u0437\u043d\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0442\u0443\u0442, \u0431\u0443\u0434\u044c \u0442\u043e \u0445\u0430\u0440\u0434 \u0438\u043b\u0438 \u0441\u043e\u0444\u0442, \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u044f \u044d\u0442\u043e \u043d\u0430 \u0432\u0441\u0435\u043e\u0431\u0449\u0435\u0435 \u043e\u0431\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443\u0431\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u0441\u043b\u043e\u0436\u043d\u043e, \u0430 \u0434\u0435\u0442\u0430\u043b\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043f\u043e\u0434\u0435\u043b\u043a\u0435, \u0441\u0442\u043e\u044f\u0442 \u0441\u0443\u0449\u0438\u0435 \u043a\u043e\u043f\u0435\u0439\u043a\u0438, \u0438 \u0438\u0445 \u043d\u0435 \u0436\u0430\u043b\u043a\u043e.<\/b><\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u0434\u043e \u0436\u0435 \u043a\u0443\u0434\u0430-\u0442\u043e \u0432\u0441\u0443\u043d\u0443\u0442\u044c \u0430\u0440\u0434\u0443\u0438\u043d\u043e. \u0411\u0435\u0437 \u0430\u0440\u0434\u0443\u0438\u043d\u043e \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0412 \u043f\u043e\u043b\u044c\u0437\u0443 \u0430\u0440\u0434\u0443\u0438\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 <a href=\"http:\/\/www.breakintoprogram.co.uk\/computers\/zx-spectrum\/screen-memory-layout\" rel=\"nofollow\">\u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 \u0443 \u0421\u043f\u0435\u043a\u043a\u0438<\/a>. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0441\u0441\u044b\u043f\u0443\u0445\u0435. \u041d\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u043e\u0432 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u043e \u0431\u0435\u0441\u043f\u0430\u0435\u0447\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u044c. \u0410 \u0441 \u0430\u0440\u0434\u0443\u0438\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c! \u0422\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u0443\u0447\u0438\u0442\u044c 8-\u0431\u0438\u043d\u044b\u0439 \u041c\u041a.<\/p>\n<p>  \u041d\u0443 \u0438, \u0440\u0430\u0437 \u043f\u0430\u044f\u0435\u043c \u0438 \u0430\u0440\u0434\u0443\u0438\u043d\u043e, \u0442\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c-\u0444\u0430\u043a\u0442\u043e\u0440. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0438 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hj\/tu\/f5\/hjtuf50sbwsdkxrjnoyqc8fq4za.png\"><br \/>  <i>\u0417\u0434\u0435\u0441\u044c \u0435\u0449\u0435 \u043d\u0435 \u0440\u0430\u0441\u043f\u0430\u044f\u043d \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0432\u0435\u0440\u043d\u0438\u0445 32 \u041a\u0438\u0411 \u041e\u0417\u0423 (\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043e \u0441\u0445\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0439), \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0441\u0430\u043c\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430<\/i><\/p>\n<p>  \u041a\u0430\u043a \u0438 \u0432 \u0430\u0440\u0434\u0443\u0438\u043d\u043e, \u043d\u0430 \u0440\u0430\u0437\u044a\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044f \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u0441\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b: \u0448\u0438\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u0430, \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0432\u044b\u0432\u043e\u0434 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 \u0430\u0434\u0440\u0435\u0441\u0430, \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u0438\u0442\u0430\u043d\u0438\u0435. \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0448\u043b\u0435\u0439\u0444\u043e\u043c IDE-\u0434\u0438\u0441\u043a\u043e\u0432. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e (39 \u043f\u0438\u043d\u043e\u0432 \u043f\u043e\u0447\u0442\u0438 \u043d\u0430 \u0432\u0441\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u2014 \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u0443 \u043c\u0435\u043d\u044f \u0438\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043f\u043e\u043b\u043d\u043e \u043e\u0442 \u0434\u0440\u0435\u0432\u043d\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u043e\u043a, \u0434\u0430 \u0438 \u0435\u0449\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0430, \u0442\u043e\u0447\u043d\u0435\u0435, \u0438\u0445 80-\u0436\u0438\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0441 \u0442\u043e\u043d\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u043e\u0432\u043e\u0434\u043a\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u043e\u0434\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445!). \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Z80, \u041f\u0417\u0423, \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041e\u0417\u0423 \u043d\u0430 32 \u041a\u0438\u0411, \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u0430\u0434\u0440\u0435\u0441\u0430. \u0412\u0441\u0435. \u041f\u043e\u0434\u0435\u043b\u043a\u0443 \u044f \u0433\u043e\u0440\u0434\u043e \u043d\u0430\u0437\u0432\u0430\u043b \u00ab\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u00bb.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u043d\u0430 \u0447\u0435\u043c \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438. \u0422\u0430\u043c \u044f \u0441 \u043e\u0447\u0435\u043d\u044c \u0441\u043f\u043e\u0440\u043d\u044b\u043c \u0443\u0441\u043f\u0435\u0445\u043e\u043c \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b \u0431\u044b\u043b\u0438 8-\u0431\u0438\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b 80\u0445. \u041a\u0430\u043a-\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u044e. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u043e\u0431\u043e\u0439 \u044f\u0434\u0440\u043e \u0438\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c. \u042d\u0442\u043e \u0431\u044b\u043b \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u041e\u0417\u0423, \u041f\u0417\u0423 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u043a\u0438 \u0434\u043b\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430. \u0412\u0441\u0435. \u042d\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0442\u0443\u043f\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0449\u0435\u0439 \u0448\u0438\u043d\u043e\u0439. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043b\u0438\u0448\u044c \u00ab\u044f\u0434\u0440\u043e\u00bb \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 (\u0432\u0438\u0434\u0435\u043e\u0432\u044b\u0432\u043e\u0434, \u0437\u0432\u0443\u043a, \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438) \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0435. \u041d\u043e \u0441\u0430\u043c\u043e \u044f\u0434\u0440\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0437\u0434\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c. \u0422\u0430\u043a, ZX Spectrum, MSX, Amstrad CPC \u0432 \u0447\u0430\u0441\u0442\u0438 \u044f\u0434\u0440\u0430 \u0431\u044b\u043b\u0438 \u043c\u0430\u043b\u043e\u043e\u0442\u043b\u0438\u0447\u0438\u043c\u044b, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u0437\u0432\u0443\u043a\u0430, \u0438 \u0432\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u043b \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u0430\u043a \u0432\u0435\u0449\u044c \u0432 \u0441\u0435\u0431\u0435, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 8-\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043e\u0442 \u0432 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0433\u043e\u043b\u043e\u0433\u043e \u044f\u0434\u0440\u0430, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438: \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0438\u0437 4\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438\u0437 \u041f\u0417\u0423. \u0414\u0430, \u044f \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0438\u0432\u043e \u0434\u043e\u0441\u0442\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u0444\u0430\u043a\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u043e\u043c, \u0421\u043f\u0435\u043a\u043a\u0438 \u043d\u0430 4\u0445 \u043a\u043e\u0440\u043f\u0443\u0441\u0430\u0445 \u0445\u0443\u0434\u043e-\u0431\u0435\u0434\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b.<br \/>  \u0418, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 Z-80, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u00ab\u0441\u043e\u0431\u0440\u0430\u0442\u044c\u00bb \u0441\u043a\u0435\u043b\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0433\u043e 8-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e, \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<br \/>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u043c\u043e\u0434\u0443\u043b\u044c, \u043d\u043e \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0432\u043e\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438. \u041d\u0430\u0447\u043d\u0435\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u043e \u0441\u0445\u0435\u043c\u044b. \u042f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u0445\u0443\u0434\u043e-\u0431\u0435\u0434\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0418\u0433\u043b\u043e\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u043c\u043e\u0433\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u043e \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0443. \u0412\u043e\u0442 \u0442\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/b1\/fx\/sp\/b1fxsptljq3mvvcuom0--zcm-ve.png\"><br \/>  <i>\u043f\u0440\u043e\u0448\u0443 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0442\u0440\u043e\u0433\u043e \u043d\u0435 \u0441\u0443\u0434\u0438\u0442\u044c, \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0432\u0438\u0434\u0435\u043b \u0418\u0433\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u043b\u044c\u043a\u043e\u043c \u0432 \u0440\u043e\u043b\u0438\u043a\u0430\u0445 \u043d\u0430 \u044e\u0442\u0443\u0431\u0435. \u0420\u0430\u0434 \u0431\u0443\u0434\u0443 \u043b\u044e\u0431\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0435 \u0432 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/i><\/p>\n<p>  \u0427\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043d\u0430\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0432\u0435\u0445\u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442, \u0447\u0442\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u0435\u043d \u041e\u0417\u0423, \u0438 \u043c\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c\u0441\u044f 16 \u041a\u0438\u0411 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0441\u043f\u0435\u043a\u043a\u0438, \u0433\u0434\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u041e\u0417\u0423 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0430 \u0431\u044b\u043b\u0438 \u043b\u0438\u0448\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u044b\u0435 \u0441 ULA 16 \u041a\u0438\u0411, \u043d\u043e, \u043f\u0430\u044f\u0442\u044c \u2014 \u0442\u0430\u043a \u043f\u0430\u044f\u0442\u044c: \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043a\u043e\u0440\u043f\u0443\u0441 \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0440\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 48\u041a \u0441\u043f\u0435\u043a\u043a\u0438:<\/p>\n<p>  0\u04450000:0\u04453FFF \u2014 \u041f\u0417\u0423 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u041b\u0438\u043d\u0438\u044f \u041015 \u041f\u0417\u0423 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e 27C512, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 64 \u041a\u0438\u0411. \u0418, \u043a\u0430\u043a \u0438 \u043d\u0430 \u0410\u0440\u043b\u0435\u043a\u0438\u043d\u0435, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0435 32 \u041a\u0438\u0411. \u041e\u043d\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 2 \u0431\u0430\u043d\u043a\u0430 \u043f\u043e 16 \u041a\u0438\u0411, \u0431\u0430\u043d\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u043e\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c 2 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>  0\u04454000:0\u04457FFF \u2014 16 \u041a\u0438\u0411 \u041e\u0417\u0423, \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0435 \u0441 ULA. \u0422\u0443\u0442, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440. \u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u0441\u044e\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b MEM16 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043d\u043e\u043b\u044c. \u0421\u0430\u043c\u043e \u041e\u0417\u0423 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0432\u0438\u0434\u0435\u043e\u0432\u044b\u0432\u043e\u0434\u0430, \u043a\u0430\u043a \u0438 \u0432\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u043e\u0431\u0432\u044f\u0437\u043a\u0430. <\/p>\n<p>  0x8000:0xFFFF \u2014 32 \u041a\u0438\u0411 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u041e\u0417\u0423 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u041c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u044f\u0434\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u0438\u0437-\u0437\u0430 \u043b\u0435\u043d\u0438 \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u043c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 32 \u041a\u0438\u0411, \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041e\u0417\u0423 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u044f\u0434\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u041f\u043e-\u0443\u043c\u0443, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u0439\u0442 AND, \u0442\u0438\u043f\u0430 74HC08, \u0442\u0430\u043a \u043a\u0430\u043a \u041e\u0417\u0423 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u043c \u0443\u0440\u043e\u043d\u0435 \u043b\u0438\u0431\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 Y2, \u043b\u0438\u0431\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 Y3 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b 74HC138 (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/498222\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a>), \u043d\u043e \u0434\u0438\u043e\u0434\u044b \u0441 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u043c \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u043e\u0434\u044b \u043d\u0430\u0434\u043e \u0431\u0440\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0435, \u0442\u0438\u043f\u0430 1N4148, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<p>  \u041f\u043b\u044e\u0441\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0410\u0440\u043b\u0435\u043a\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432\u044b\u043d\u0443\u0442\u044c \u0438\u0437 \u0410\u0440\u043b\u0435\u043a\u0438\u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u041f\u0417\u0423 \u0438 \u0432\u0435\u0440\u0445\u043d\u0435\u0435 32 \u041a\u0438\u0411 \u041e\u0417\u0423, \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u043e\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0447\u043a\u0430\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/83\/_i\/7h\/83_i7hkankcnqjigsbkkgvil-fa.png\"><br \/>  <i>\u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u0430\u0440\u043b\u0435\u043a\u0438\u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 3 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b, \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 (\u0432 \u0435\u0433\u043e \u043a\u043e\u043b\u043e\u0434\u043a\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043c\u043e\u0434\u0443\u043b\u044c, \u041f\u0417\u0423 \u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0435 32 \u041a\u0438\u0411 \u041e\u0417\u0423<\/i><\/p>\n<p>  \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0410\u0440\u043b\u0435\u043a\u0438\u043d \u0432\u0441\u0435 \u0435\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0422\u043e \u0435\u0441\u0442\u044c, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0410\u0440\u043b\u0435\u043a\u0438\u043d \u0432 \u0447\u0430\u0441\u0442\u0438 ULA + \u043d\u0438\u0436\u043d\u0438\u0435 16 \u041a\u0438\u0411 \u041e\u0417\u0423 + \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u043e\u0431\u0432\u044f\u0437\u043a\u0430, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0441\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0441 \u043d\u0430\u0448\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0432\u0441\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435:<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/yTrZW66Ftzs?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <i>\u043f\u043b\u0430\u0442\u0430 \u0430\u0440\u043b\u0435\u043a\u0438\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b\u044c\u043d\u0430\u044f, \u043e\u043d\u0430 \u2014 \u0431\u0430\u0437\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0443 \u043d\u0435\u0435 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0430\u043b\u043e \u043d\u0443 \u0442\u0430\u043a \u0441\u0435\u0431\u0435<\/i><\/p>\n<p>  \u041f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u0432\u0441\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f ULA. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u0441\u0445\u0435\u043c\u0443 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 (\u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0435\u0435 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/op\/xr\/sp\/opxrspwq2ac9hn1pjm3gj-qgzno.png\"><br \/>  <i>\u0441\u0445\u0435\u043c\u0430 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0434\u0435\u043b\u043a\u0443 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u041f\u0440\u043e\u0432\u043e\u0434\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u0435\u0440\u0435\u0442\u044b\u043a\u0430\u043b \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445, \u044f \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u043d\u0430 \u0434\u0436\u0430\u043c\u043f\u0435\u0440\u044b, \u0430 \u0430\u0440\u0434\u0443\u0438\u043d\u043e \u0441\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u043b \u0432 \u0432\u0438\u0434\u0435 \u0410\u0442\u043c\u0435\u0433\u0438 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u0432\u044f\u0437\u043a\u043e\u0439, \u043e\u043d\u0430 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443. \u041d\u043e \u043d\u0430 \u0434\u0435\u043b\u0435 \u043e\u043d\u0430 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0423\u041d\u041e\u0439<\/i><\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u044f \u0440\u0435\u0448\u0438\u043b \u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0448\u0438\u043b\u0434\u0430 \u0434\u043b\u044f \u0410\u0440\u0434\u0443\u0438\u043d\u044b. \u041d\u043e \u0410\u0440\u0434\u0443\u0438\u043d\u0430 \u043c\u0435\u043d\u044f \u0442\u0443\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0432\u0435\u043b\u0430, \u043d\u0435 \u0432\u0441\u0435 \u0435\u0451 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0438\u0434\u0443\u0442 \u0441 \u0448\u0430\u0433\u043e\u043c 2,54\u043c\u043c, \u043e\u0434\u043d\u0430 \u0433\u0440\u0435\u0431\u0435\u043d\u043a\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u0440\u043e\u0432\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/aa\/75\/ow\/aa75ow1krkex-nj9qfcaokn2w-0.png\"><br \/>  <i>\u042d\u0442\u0430 \u0433\u0440\u0435\u0431\u0435\u043d\u043a\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 8-13 \u0432\u0445\u043e\u0434\u044b, \u043d\u043e 11-13 \u0440\u0430\u0437\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 \u0440\u0430\u0437\u044a\u0435\u043c SPI \u0432\u043d\u0438\u0437\u0443 \u0430\u0440\u0434\u0443\u0438\u043d\u044b, \u0442\u0430\u043c \u0448\u0430\u0433 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u0438\u0445 \u0431\u0440\u0430\u0442\u044c \u043e\u0442\u0442\u0443\u0434\u0430, \u0430 \u0432\u043e\u0442 8-10 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a.<\/i><\/p>\n<p>  \u0421\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uj\/rv\/pp\/ujrvppgtuyr0q8tw4vizxaajxv4.png\"><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0435\u0431\u0430\u0433\u0430, \u043c\u043e\u0434\u0443\u043b\u044c \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b. \u0418 \u0434\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0435, \u0432\u0441\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043f\u0440\u043e\u043f\u0430\u043b\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yf\/qq\/rs\/yfqqrscazq8rjxa1ndtslnap-hu.png\"><\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0448\u0430\u044e\u0442. \u042f \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432 \u043f\u043e\u0434\u0435\u043b\u043a\u0435 \u043d\u0430 \u0431\u0435\u0441\u043f\u0430\u0435\u0447\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u00ab\u0433\u0443\u043b\u044f\u043b\u00bb, \u043d\u043e \u0437\u0434\u0435\u0441\u044c-\u0442\u043e \u043f\u0430\u0439\u043a\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442 \u043d\u0438\u0445 \u0438\u0437\u0431\u0430\u0432\u0438\u043c\u0441\u044f. \u0412\u043e\u043e\u0431\u0449\u0435, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b CE \u0438 OE \u0434\u043b\u044f \u041e\u0417\u0423 \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e: \u043d\u0430 595\u0445 \u0443 \u043d\u0430\u0441 16 \u0431\u0438\u0442 \u0430\u0434\u0440\u0435\u0441\u0430, \u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0438\u0436\u043d\u0438\u0435 14 \u2014 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f 16 \u041a\u0438\u0411. \u0412\u0435\u0440\u0445\u043d\u0438\u0435 2 \u0431\u0438\u0442\u0430 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u044b 0. \u042d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u2014 \u043d\u0438\u0437\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432\u044b\u0445\u043e\u0434\u044b 595 \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u043e\u0442 \u0448\u0438\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e 245\u0445, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0443 \u043d\u0430\u0441 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044c \u044d\u0442\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043a \u0432\u044b\u0441\u043e\u043a\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430\u043c\u0438, \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b 10 \u043a\u041e\u043c. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cj\/fg\/w5\/cjfgw52yto_qpgulsb8g_ilopt0.png\"><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0418 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0435\u0442\u0447 \u0434\u043b\u044f \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  \/\/ test ram defines #define TEST_RAM_BYTES 255  \/\/ CPU defines #define CPU_CLOCK_PIN 2 #define CPU_RESET_PIN 3 #define CPU_ENABLE_PIN 4  \/\/ Shift Register defines #define SR_DATA_PIN 8 #define SR_OUTPUT_ENABLE_PIN 9 #define SR_LATCH_PIN 10 #define SR_CLOCK_PIN 11  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void setup() {   \/\/ All CPU and RAM control signals need to be configured as inputs by default   \/\/ and only changed to outputs when used.   \/\/ Shift register control signals may be preconfigured    \/\/ CPU controls seetup   DDRC = B00000000;   pinMode(CPU_CLOCK_PIN, INPUT);   pinMode(CPU_RESET_PIN, INPUT);   pinMode(CPU_ENABLE_PIN, OUTPUT);   digitalWrite(CPU_ENABLE_PIN, HIGH); \/\/ active low    \/\/ SR setup   pinMode(SR_LATCH_PIN, OUTPUT);   pinMode(SR_CLOCK_PIN, OUTPUT);   pinMode(SR_DATA_PIN, OUTPUT);   pinMode(SR_OUTPUT_ENABLE_PIN, OUTPUT);   digitalWrite(SR_OUTPUT_ENABLE_PIN, HIGH); \/\/ active low    \/\/ common setup   Serial.begin(9600);   Serial.println(&quot;Hello&quot;); }\/\/ setup  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void shiftReadValueFromAddress(uint16_t address, uint8_t *value) {   \/\/ set address   digitalWrite(SR_LATCH_PIN, LOW);   shiftOut(SR_DATA_PIN, SR_CLOCK_PIN, MSBFIRST, address&gt;&gt;8);    shiftOut(SR_DATA_PIN, SR_CLOCK_PIN, MSBFIRST, address);     digitalWrite(SR_LATCH_PIN, HIGH);   digitalWrite(SR_OUTPUT_ENABLE_PIN, LOW); \/\/ active low   delay(1);   DDRC = B00000000;   *value = PINC;   \/\/ disable SR   digitalWrite(SR_OUTPUT_ENABLE_PIN, HIGH); \/\/ active low }\/\/ shiftWriteValueToAddress  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void runClock(uint32_t cycles) {   uint32_t currCycle = 0;   pinMode(CPU_CLOCK_PIN, OUTPUT);   while(currCycle &lt; cycles) {     digitalWrite(CPU_CLOCK_PIN, HIGH);     digitalWrite(CPU_CLOCK_PIN, LOW);     currCycle++;   }   pinMode(CPU_CLOCK_PIN, INPUT); }\/\/ runClock  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void trySpectrum() {   pinMode(CPU_RESET_PIN, OUTPUT);   digitalWrite(CPU_RESET_PIN, LOW);   runClock(30);   digitalWrite(CPU_RESET_PIN, HIGH);   runClock(1250000); }\/\/ trySpectrum  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void readDisplayLines() {   uint8_t value;   for(uint16_t i=0; i&lt;6144;i++) {     shiftReadValueFromAddress(i, &amp;value);     Serial.println(value);   } }\/\/ readDisplayLines  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void loop() {   digitalWrite(CPU_ENABLE_PIN, LOW);   trySpectrum();   digitalWrite(CPU_ENABLE_PIN, HIGH);   Serial.println(&quot;Reading memory&quot;);   readDisplayLines();   Serial.println(&quot;Done&quot;);   delay(100000); }\/\/ loop  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ END \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ <\/code><\/pre>\n<\/div><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043d\u0430\u0434\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0442\u044b\u043a\u0430\u0442\u044c, \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e\u2026 \u041d\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043d\u0438\u0438, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043c \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u044b\u0432\u043e\u0434\u0430. \u0420\u0430\u0437 \u0443\u0436 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u0438, \u0442\u043e \u043d\u0430\u0434\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c LCD \u043f\u0440\u0438\u0441\u043e\u0431\u0430\u0447\u0438\u0442\u044c. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 <a href=\"https:\/\/www.arduino.cc\/en\/Guide\/TFT\" rel=\"nofollow\">robot LCD<\/a> \u0434\u043b\u044f \u0430\u0440\u0434\u0443\u0438\u043d\u043e, \u043d\u043e \u043d\u0430\u043c \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u043e\u0439. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0433. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u041c\u0415\u0413\u0410-\u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u0430, \u0442\u043e \u043d\u043e\u0433 \u043d\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 LCD \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442, \u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c\u0441\u044f SPI. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u043e \u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043c. \u041f\u043e\u043a\u0430 \u0436\u0435, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u043f\u043e SPI. \u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0431\u0440\u0430\u0437 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0421\u043f\u0435\u043a\u043a\u0438 \u0432 \u041f\u0417\u0423. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 TZX \u0444\u0430\u0439\u043b\u043e\u0432, <a href=\"https:\/\/live.worldofspectrum.org\/files\/download\/85e494512c1511c\" rel=\"nofollow\">\u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0439<\/a>, \u0441\u0430\u043c TZX-\u0444\u0430\u0439\u043b, <a href=\"https:\/\/www.worldofspectrum.org\/infoseekid.cgi?id=0000718\" rel=\"nofollow\">\u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e<\/a>, \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041f\u0417\u0423 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440. \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b TZX, \u0438\u0449\u0435\u043c \u0432 \u043d\u0435\u0439 \u043a\u0443\u0441\u043e\u043a \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 6912 \u0431\u0430\u0439\u0442, \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0434\u0438\u0441\u043a, \u043a\u0430\u043a \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a. \u041f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0435\u043c \u0432 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u041f\u0417\u0423. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u0437 \u041f\u0417\u0423, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u0438 \u043d\u0435\u043a\u043e\u0435 \u043f\u043e\u0434\u043e\u0431\u0438\u0435 ULA \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e.<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0443\u0436\u0435 \u0447\u0438\u0442\u0430\u043b\u0438 \u0434\u0430\u043c\u043f \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043b\u0438\u043a\u0431\u0435\u0437 \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0441\u043f\u0435\u043a\u043a\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e 256\u0445192 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e \u043f\u043e \u043c\u0435\u0440\u043a\u0430\u043c \u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438: \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0446\u0432\u0435\u0442\u0435, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0439\u0442\u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438. <\/p>\n<p>  \u041f\u0435\u0440\u0432\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438. \u041c\u043e\u043d\u043e\u0445\u0440\u043e\u043c\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d 256\u0445192 \u043f\u0438\u043a\u0441\u0435\u043b\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 6144 \u0431\u0430\u0439\u0442\u0430. \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u043c\u0435\u0442\u044c 4 \u0446\u0432\u0435\u0442\u0430, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430, 12288 \u0431\u0430\u0439\u0442. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c 8 \u0446\u0432\u0435\u0442\u043e\u0432, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 18 \u041a\u0438\u0411. \u0414\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 16 \u041a\u0438\u0411 \u041f\u0417\u0423 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e 48 \u041a\u0438\u0411 \u041e\u0417\u0423 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c 18 \u041a\u0438\u0411, \u0434\u0430 \u0434\u0430\u0436\u0435 12, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0440\u0430\u0441\u0442\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430. \u0426\u0432\u0435\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 8\u04458 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u0434\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u043b\u0438\u0448\u044c \u0434\u043b\u044f 32\u044524 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442, \u0430 \u043d\u0435 \u0434\u043b\u044f 256\u0445192 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0434\u0435\u043d \u0440\u043e\u0432\u043d\u043e 1 \u0431\u0430\u0439\u0442. 6 \u0431\u0438\u0442 \u0432 \u043d\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 (\u043d\u0438\u0436\u043d\u0438\u0435 3 \u0431\u0438\u0442\u0430) \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 (\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 3 \u0431\u0438\u0442\u0430) \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0435. \u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0435\u0442 \u0431\u0438\u0442, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 1, \u0442\u043e \u0446\u0432\u0435\u0442\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445, \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c (\u043a\u0440\u043e\u043c\u0435 \u0447\u0435\u0440\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430, \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0447\u0435\u0440\u043d\u044b\u0439). \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0438\u0442 \u2014 \u0431\u0438\u0442 \u00ab\u043c\u0438\u0433\u0430\u043d\u0438\u044f\u00bb. \u0415\u0441\u043b\u0438 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 1, \u0442\u043e \u0446\u0432\u0435\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043e\u043a\u043e\u043b\u043e 1.5 \u0413\u0446 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c).<\/p>\n<p>  \u0412\u0442\u043e\u0440\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u044b DRAM. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e DRAM \u043c\u043e\u0433\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043a\u043e\u0433\u0434\u0430 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u043e\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0440\u044f\u0434 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u044e\u043a\u0430 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c \u043d\u0435 \u0441\u043c\u043e\u0433 \u0431\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0446\u0432\u0435\u0442\u0435, \u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u0442\u0440\u044e\u043a \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u043e \u0431\u044b\u043b\u043e \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435 DRAM, \u0447\u0442\u043e \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0430\u0442\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0414\u043b\u044f ULA \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0438\u0437\u0443 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 (\u0442\u0430\u043a \u043a\u0430\u043a ULA \u0438\u043c\u0435\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 16 \u041a\u0438\u0411 \u041e\u0417\u0423, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u043b\u0435 \u041f\u0417\u0423, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u044d\u0442\u0438\u0445 16 \u041a\u0438\u0411 \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440). \u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438\u043c\u0435\u043b \u0430\u0434\u0440\u0435\u0441\u0430 0\u0445000 \u2014 0\u044517FF, \u0430 \u0431\u0443\u0444\u0435\u0440 \u0446\u0432\u0435\u0442\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, 0\u04451800 \u2014 0\u04451AFF. \u041d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0438\u043a\u0441\u0435\u043b\u044b \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. <\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044b \u0432 \u041e\u0417\u0423 \u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044b \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044b. \u041f\u0435\u0440\u0432\u044b\u0435 32 \u0431\u0430\u0439\u0442\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u044d\u043a\u0440\u0430\u043d\u0430 (32 \u0431\u0430\u0439\u0442 = 256 \u0431\u0438\u0442). \u0412\u0442\u043e\u0440\u044b\u0435 32 \u0431\u0430\u0439\u0442\u0430 \u2014 8\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 32 \u0431\u0430\u0439\u0442\u0430 \u2014 16\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u0434\u043e 56\u0439, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0434\u0435\u0442 2\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u043f\u043e\u0442\u043e\u043c 9\u044f, \u043f\u043e\u0442\u043e\u043c 17\u044f \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 \u0434\u043e 57\u0439. \u041a\u043e\u0433\u0434\u0430 64 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b, \u043f\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0441\u0445\u0435\u043c\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f 2\u0439 \u0431\u043b\u043e\u043a \u0438\u0437 64\u0445 \u0441\u0442\u0440\u043e\u043a, \u0430 \u0437\u0430 \u043d\u0438\u043c \u2014 3\u0439. <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><video controls style=\"top: 0; left: 0; width: 100%; height: 100%; position: absolute;\">Your browser does not support HTML5 video.<source src=\"http:\/\/www.overtakenbyevents.com\/images\/2018-03-10-lets-talk-about-the-zx-specrum-screen-layout-part-two\/screen-lines.mp4\" type=\"video\/mp4\"><\/source><\/video><\/div>\n<\/div>\n<\/div>\n<p>  <i>\u0412\u0438\u0434\u0435\u043e \u0432\u0437\u044f\u0442\u043e <a href=\"http:\/\/www.overtakenbyevents.com\/lets-talk-about-the-zx-specrum-screen-layout-part-two\/\" rel=\"nofollow\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a><\/i><\/p>\n<p>  \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c, \u043d\u043e \u0432\u0441\u0435 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044e DRAM, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u0418 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u0432 \u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430\u0434\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 3 \u0431\u0438\u0442\u0430 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u0430 \u043d\u0438\u043c\u0438 3\u043c\u044f \u0431\u0438\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 Y. \u042f \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0436\u0443 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u0430\u043a\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438, \u0432\u0435\u0441\u044c \u0431\u0443\u0444\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u043b \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u0435\u043d\u0435\u0435 7 \u041a\u0438\u0411 \u043f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043f\u0435\u043a\u043a\u0438 \u043c\u043e\u0433 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d 16 \u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432! \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0446\u0432\u0435\u0442\u0430 (ink \u0438 paper, \u0442\u043e \u0435\u0441\u0442\u044c \u0446\u0432\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0444\u043e\u043d\u0430), \u043f\u0440\u0438\u0447\u0435\u043c \u043e\u0431\u0430 \u0438\u0437 \u043d\u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u0438\u0437 \u044f\u0440\u043a\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043f\u0430\u043b\u0438\u0442\u0440\u044b, \u043b\u0438\u0431\u043e \u0438\u0437 \u0442\u0435\u043c\u043d\u043e\u0439, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u044b:<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/ooguK7Hs2Jc?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043a \u0434\u0435\u043b\u0443. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u043e\u0439 \u044f \u0447\u0438\u0442\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e 6 \u0431\u0438\u0442 \u0438\u0437 \u0448\u0438\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u043e \u0432 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0439 \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u044d\u043a\u0440\u0430\u043d\u0430. \u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0441\u0435\u043c\u044c. \u0412 \u0423\u041d\u041e \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1 \u043f\u043e\u0440\u0442, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 8 \u043f\u0438\u043d\u043e\u0432, \u043d\u043e \u043d\u0430 \u043d\u0435\u0433\u043e \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u044f \u043d\u0435 \u0445\u043e\u0447\u0443. \u0411\u0443\u0434\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c 6 \u0431\u0438\u0442 \u0432 \u043f\u043e\u0440\u0442 \u0421 \u0438 \u0435\u0449\u0435 2 \u0431\u0438\u0442\u0430 \u0432 \u043f\u043e\u0440\u0442 D. \u0417\u0430 \u043e\u0434\u0438\u043d \u0437\u0430\u0445\u043e\u0434 \u0431\u0443\u0434\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0434\u043d\u0443 \u044d\u043a\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c 256 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u0422\u0430\u043a \u043a\u0430\u043a 1 \u043f\u0438\u043a\u0441\u0435\u043b \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 1 \u0431\u0438\u0442 (\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0430\u0445), \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 = 32 \u0431\u0430\u0439\u0442\u0430. \u041d\u0430\u0447\u043d\u0435\u043c:<\/p>\n<pre><code class=\"cpp\"> #define BUS_PORT_0_5 PINC #define BUS_PORT_6_7 PIND #define BUS_DDR_0_5  DDRC #define BUS_DDR_6_7  DDRD  #define SR_PORT      PORTD #define SR_OE_PIN    B00100000  #define BYTES_PER_LINE 32  char scrBuffer[BYTES_PER_LINE];  void readLine(uint8_t lineNum) {   SR_PORT &amp;= ~SR_OE_PIN;   for(uint8_t i=0; i&lt;BYTES_PER_LINE; i++) {     setAddress(lineNum, i);     scrBuffer[i] = BUS_PORT_0_5;     scrBuffer[i] |= BUS_PORT_6_7 &amp; B11000000;   }   SR_PORT |= SR_OE_PIN; } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0430\u0434\u0440\u0435\u0441\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0447\u0438\u0442\u0430\u0442\u044c, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e setAddress. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u044b \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 595, \u0442\u043e\u0447\u043d\u043e \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438. \u0417\u0434\u0435\u0441\u044c \u044f \u0435\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b:<\/p>\n<pre><code class=\"cpp\"> #define SR_PORT      PORTD #define SR_DDR       DDRD #define SR_CLOCK_PIN B00000100 #define SR_LATCH_PIN B00001000 #define SR_DATA_PIN  B00010000 #define SR_OE_PIN    B00100000  volatile uint16_t delayVar = 0;  void setAddress(uint8_t lineNum, uint8_t pixel) {   uint16_t address = (lineNum&lt;&lt;5) + pixel;   SR_PORT &amp;= ~SR_LATCH_PIN;   pShiftOut(address);   SR_PORT |= SR_LATCH_PIN;   delayVar++; } <\/code><\/pre>\n<p>  delayVar \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u041f\u0417\u0423 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0441 \u0448\u0438\u043d\u044b. \u0411\u0435\u0437 \u043d\u0435\u0435 \u0443 \u043c\u0435\u043d\u044f \u0438\u0434\u0443\u0442 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e shiftOut, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0435 \u043b\u0438\u0448\u043d\u0435\u0435, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 16-\u0431\u0438\u0442\u043d\u044b\u043c \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0446\u0438\u043a\u043b. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043b\u0438\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0434\u043b\u0438\u043d\u043d\u0430\u044f pShiftOut \u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043e 16\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\"> void pShiftOut(uint16_t val) {   \/\/ bit 15   if (val &amp; (1 &lt;&lt; 15)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 14   if (val &amp; (1 &lt;&lt; 14)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 13   if (val &amp; (1 &lt;&lt; 13)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 12   if (val &amp; (1 &lt;&lt; 12)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 11   if (val &amp; (1 &lt;&lt; 11)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 10   if (val &amp; (1 &lt;&lt; 10)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 9   if (val &amp; (1 &lt;&lt; 9)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 8   if (val &amp; (1 &lt;&lt; 8)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;    \/\/ bit 7   if (val &amp; (1 &lt;&lt; 7)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 6   if (val &amp; (1 &lt;&lt; 6)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 5   if (val &amp; (1 &lt;&lt; 5)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 4   if (val &amp; (1 &lt;&lt; 4)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 3   if (val &amp; (1 &lt;&lt; 3)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 2   if (val &amp; (1 &lt;&lt; 2)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 1   if (val &amp; (1 &lt;&lt; 1)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 0   if (val &amp; 1) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;  }\/\/ pShiftOut <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0446\u0438\u043a\u043b\u043e\u0432 \u044f \u0434\u0435\u043b\u0430\u043b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b, \u0447\u0442\u043e \u0441 \u0430\u0440\u0434\u0443\u0438\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0443\u0439\u0434\u0435\u0448\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0430\u0440\u0434\u0443\u0438\u043d\u044b, \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438\u0437 \u041f\u0417\u0423 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0430 9 \u0441\u0435\u043a\u0443\u043d\u0434. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u0438\u0445 \u0431\u0443\u0431\u043d\u043e\u0432 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u043c\u0435\u043d\u0435\u0435 4\u0445 \u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435 <a href=\"http:\/\/www.breakintoprogram.co.uk\/computers\/zx-spectrum\/screen-memory-layout\" rel=\"nofollow\">(\u0430 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u0443\u0442)<\/a>, \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0435 \u0441\u043f\u0435\u043a\u043a\u0438 \u043d\u0435 \u0438\u0434\u0443\u0442 \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c. \u0414\u0430, \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u0438\u0445 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0446\u0432\u0435\u0442\u0435, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043d\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0448\u0430\u0435\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u0443\u043c\u0435\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u042f \u043e\u0431\u0435\u0449\u0430\u043b \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u0435\u043c \u043d\u0430 \u043a\u043e\u0434\u0435, \u0438 \u0432\u043e\u0442 \u043e\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0431\u0438\u0442\u044b \u0432 Y \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435:<\/p>\n<pre><code class=\"cpp\"> uint8_t mapLineNum(uint8_t lineNum) {   \/\/ convert screen line number to actual line number in memory   uint8_t y = (lineNum &amp; B00000111) &lt;&lt; 3;   y |= (lineNum &gt;&gt; 3) &amp; B00000111;   y |= lineNum &amp; B11000000;   return y; } <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u0446\u0432\u0435\u0442\u0430 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0430 \u043e\u043d \u043d\u0443\u0436\u0435\u043d. \u041a\u0430\u043a\u043e\u0439 \u0436\u0435 \u0421\u043f\u0435\u043a\u0442\u0440\u0443\u043c, \u0431\u0435\u0437, \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435 \u0437\u0430 \u043a\u0430\u043b\u0430\u043c\u0431\u0443\u0440, \u0441\u043f\u0435\u043a\u0442\u0440\u0430? \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0446\u0432\u0435\u0442\u0435 \u0438\u0434\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u0442\u0443\u0442 \u043d\u0435\u0441\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0435:  <\/p>\n<ul>\n<li>\u0431\u0438\u0442\u044b 1-3: \u0446\u0432\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0435 8\u04458 (ink). \u041f\u043e 1 \u0431\u0438\u0442\u0443 \u043d\u0430 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043a\u0430\u043d\u0430\u043b G, R, B. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 8 \u0446\u0432\u0435\u0442\u043e\u0432.<\/li>\n<li>\u0431\u0438\u0442\u044b 4-6: \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 (paper)<\/li>\n<li>\u0431\u0438\u0442 7: \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0432\u0435\u0442\u043e\u0432 \u0441 8 \u0434\u043e 16 (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u043e 15, \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0435\u0440\u043d\u044b\u0439 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c). \u041d\u043e \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u0430\u043a \u0446\u0432\u0435\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 (ink), \u0442\u0430\u043a \u0438 \u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430 (paper), \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u043c\u044b \u0432\u0441\u0435 \u0435\u0449\u0435 \u0438\u043c\u0435\u0435\u043c 2 \u0446\u0432\u0435\u0442\u0430 \u0438\u0437 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0432 8 \u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432, \u0430 \u043d\u0435 16.<\/li>\n<li>\u0431\u0438\u0442 8: \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u0438\u0433\u0430\u043d\u0438\u044f. \u041f\u0440\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0432 1, \u0446\u0432\u0435\u0442\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0438 \u0444\u043e\u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 1.5 \u0413\u0446 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c).<\/li>\n<\/ul>\n<p>  \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u041e\u0417\u0423 \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u0447\u0435. \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0432\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u0442\u0430\u043a \u043a\u0430\u043a 1 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 8 \u0431\u0438\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 8 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439). \u0410 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0440\u043e\u0432\u043d\u043e \u0432 8 \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u043e\u043f\u044f\u0442\u044c \u0436\u0435, 1 \u0441\u0442\u0440\u043e\u043a\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 8 \u0441\u0442\u0440\u043e\u043a \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439), \u0442\u043e \u0435\u0441\u0442\u044c \u0438\u0445 \u0432\u0441\u0435\u0433\u043e 24. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u0431\u044b 193\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0431\u0443\u0434\u044c \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e readLine:<\/p>\n<pre><code class=\"cpp\"> char colourBuffer[768];  void readColourBuffer() {   for(uint8_t i=0; i&lt;24; i++) {     readLine(192+i);     memcpy(&amp;colourBuffer[i*BYTES_PER_LINE], scrBuffer, BYTES_PER_LINE);   } } <\/code><\/pre>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435:<\/p>\n<pre><code class=\"cpp\"> char inverse = 0;  void drawScr() {   uint8_t lastLine = 255;   inverse = !inverse;   for(uint8_t line=0; line&lt;192;line++) {     uint8_t trueLineNum = mapLineNum(line);     readLine(trueLineNum);     drawLine(line, &amp;lastLine);   } } <\/code><\/pre>\n<p>  \u0410\u0445 \u0434\u0430, \u043a\u0440\u043e\u043c\u0435 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430. \u0422\u0443\u0442 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0430\u0440\u0434\u0443\u0438\u043d\u043e\u0432\u0441\u043a\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 TFT. \u041e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c SPI \u0438 \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c \u0442\u0430\u043c \u043e\u0441\u043e\u0431\u043e \u043d\u0435\u0447\u0435\u0433\u043e\u2026 \u0425\u043e\u0442\u044f \u0432\u0440\u0443. \u041c\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 160&#215;128 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0438 \u044f \u043c\u043e\u0433\u0443 \u043e\u0442\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0432\u0432\u0435\u0434\u0443 \u043f\u0430\u0440\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. lastLineNum \u2014 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0415\u0441\u043b\u0438 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u0442 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439, \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443. \u0422\u043e \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u043e\u043c:<\/p>\n<pre><code class=\"cpp\"> #define SCALE 1.6f  void drawLine(uint8_t lineNum, uint8_t *lastLineNum) {   uint8_t colour, x, y;   uint8_t lastX = 255;   y = lineNum \/ SCALE;   if(y == *lastLineNum) return;   uint8_t colourLine = lineNum &gt;&gt; 3; \/\/ lineNum \/ 8   for(uint8_t i=0; i&lt;BYTES_PER_LINE; i++) {     colour = colourBuffer[(colourLine &lt;&lt; 5) + i]; \/\/ [colourLine * 32 + i]     uint8_t isBright = (colour &amp; B01000000) &gt;&gt; 6;     uint8_t isFlashing = (colour &amp; B10000000) &gt;&gt; 7;     for(uint8_t trueX=0; trueX&lt;8; trueX++) {       uint8_t isFore = ((scrBuffer[i] &gt;&gt; trueX) &amp; 1);       uint8_t r,g,b;       if(isFlashing &amp;&amp; inverse) {         isFore = !isFore;       }       uint8_t col = (255 - DIM_FACTOR) + (DIM_FACTOR * isBright);       if(isFore) {         b = ( colour &amp; B00000001) * col;         r = ((colour &amp; B00000010) &gt;&gt; 1) * col;         g = ((colour &amp; B00000100) &gt;&gt; 2) * col;       } else {         b = ((colour &amp; B00001000) &gt;&gt; 3) * col;         r = ((colour &amp; B00010000) &gt;&gt; 4) * col;         g = ((colour &amp; B00100000) &gt;&gt; 5) * col;       }       x = ((i&lt;&lt;3)+(8-trueX)) \/ SCALE;       if(x != lastX) {         TFTscreen.stroke(r, g, b);         TFTscreen.point(x, y);         lastX = x;       }     }   }   *lastLineNum = y; }\/\/ drawLine <\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0418, \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434.<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\"> \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  \/\/#define DIAG  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  #include &lt;TFT.h&gt; #include &lt;SPI.h&gt;  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  \/\/ pin definitions #define TFT_CS   10 #define TFT_DC   9 #define TFT_RST  8  #define SR_PORT      PORTD #define SR_DDR       DDRD #define SR_CLOCK_PIN B00000100 #define SR_LATCH_PIN B00001000 #define SR_DATA_PIN  B00010000 #define SR_OE_PIN    B00100000  #define BUS_PORT_0_5 PINC #define BUS_PORT_6_7 PIND #define BUS_DDR_0_5  DDRC #define BUS_DDR_6_7  DDRD  \/\/ screen params #define BYTES_PER_LINE 32 #define SCALE 1.6f #define DIM_FACTOR 64  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  char scrBuffer[BYTES_PER_LINE]; char colourBuffer[768]; char inverse = 0;  TFT TFTscreen = TFT(TFT_CS, TFT_DC, TFT_RST);  volatile uint16_t delayVar = 0;  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void setup() {   \/\/ TFT   TFTscreen.begin();   TFTscreen.background(0, 0, 0);   TFTscreen.fill(0, 0, 0);   \/\/ SR   SR_DDR |= SR_CLOCK_PIN;   SR_DDR |= SR_LATCH_PIN;   SR_DDR |= SR_DATA_PIN;   SR_DDR |= SR_OE_PIN;   SR_PORT |= SR_OE_PIN;  \/\/ default to HIGH to disable address bus output   \/\/ BUS   BUS_DDR_0_5 &amp;= B11000000;   BUS_DDR_6_7 &amp;= B00111111;   \/\/ Diag #ifdef DIAG   Serial.begin(9600); #endif }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void pShiftOut(uint16_t val) {   \/\/ bit 15   if (val &amp; (1 &lt;&lt; 15)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 14   if (val &amp; (1 &lt;&lt; 14)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 13   if (val &amp; (1 &lt;&lt; 13)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 12   if (val &amp; (1 &lt;&lt; 12)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 11   if (val &amp; (1 &lt;&lt; 11)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 10   if (val &amp; (1 &lt;&lt; 10)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 9   if (val &amp; (1 &lt;&lt; 9)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 8   if (val &amp; (1 &lt;&lt; 8)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;    \/\/ bit 7   if (val &amp; (1 &lt;&lt; 7)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 6   if (val &amp; (1 &lt;&lt; 6)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 5   if (val &amp; (1 &lt;&lt; 5)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 4   if (val &amp; (1 &lt;&lt; 4)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 3   if (val &amp; (1 &lt;&lt; 3)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 2   if (val &amp; (1 &lt;&lt; 2)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 1   if (val &amp; (1 &lt;&lt; 1)) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;   \/\/ bit 0   if (val &amp; 1) {     SR_PORT |= SR_DATA_PIN;   } else {     SR_PORT &amp;= ~SR_DATA_PIN;   }   SR_PORT |= SR_CLOCK_PIN;   SR_PORT &amp;= ~SR_CLOCK_PIN;  }\/\/ pShiftOut  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  uint8_t mapLineNum(uint8_t lineNum) {   \/\/ convert screen line number to actual line number in memory   uint8_t y = (lineNum &amp; B00000111) &lt;&lt; 3;   y |= (lineNum &gt;&gt; 3) &amp; B00000111;   y |= lineNum &amp; B11000000;   return y; }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void setAddress(uint8_t lineNum, uint8_t pixel) {   uint16_t address = (lineNum&lt;&lt;5) + pixel;   SR_PORT &amp;= ~SR_LATCH_PIN;   pShiftOut(address);   SR_PORT |= SR_LATCH_PIN;   delayVar++; }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void readLine(uint8_t lineNum) {   SR_PORT &amp;= ~SR_OE_PIN;   for(uint8_t i=0; i&lt;BYTES_PER_LINE; i++) {     setAddress(lineNum, i);     scrBuffer[i] = BUS_PORT_0_5;     scrBuffer[i] |= BUS_PORT_6_7 &amp; B11000000;   }   SR_PORT |= SR_OE_PIN;  }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void readColourBuffer() {   for(uint8_t i=0; i&lt;24; i++) {     readLine(192+i);     memcpy(&amp;colourBuffer[i*BYTES_PER_LINE], scrBuffer, BYTES_PER_LINE);   } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void drawLine(uint8_t lineNum, uint8_t *lastLineNum) {   uint8_t colour, x, y;   uint8_t lastX = 255;   y = lineNum \/ SCALE;   if(y == *lastLineNum) return;   uint8_t colourLine = lineNum &gt;&gt; 3; \/\/ lineNum \/ 8   for(uint8_t i=0; i&lt;BYTES_PER_LINE; i++) {     colour = colourBuffer[(colourLine &lt;&lt; 5) + i]; \/\/ [colourLine * 32 + i]     uint8_t isBright = (colour &amp; B01000000) &gt;&gt; 6;     uint8_t isFlashing = (colour &amp; B10000000) &gt;&gt; 7;     for(uint8_t trueX=0; trueX&lt;8; trueX++) {       uint8_t isFore = ((scrBuffer[i] &gt;&gt; trueX) &amp; 1);       uint8_t r,g,b;       if(isFlashing &amp;&amp; inverse) {         isFore = !isFore;       }       uint8_t col = (255 - DIM_FACTOR) + (DIM_FACTOR * isBright);       if(isFore) {         b = ( colour &amp; B00000001) * col;         r = ((colour &amp; B00000010) &gt;&gt; 1) * col;         g = ((colour &amp; B00000100) &gt;&gt; 2) * col;       } else {         b = ((colour &amp; B00001000) &gt;&gt; 3) * col;         r = ((colour &amp; B00010000) &gt;&gt; 4) * col;         g = ((colour &amp; B00100000) &gt;&gt; 5) * col;       }       x = ((i&lt;&lt;3)+(8-trueX)) \/ SCALE; \/\/ i&lt;&lt;3 &lt;=&gt; i*8       if(x != lastX) {         TFTscreen.stroke(r, g, b);         TFTscreen.point(x, y);         lastX = x;       }     }   }   *lastLineNum = y; }\/\/ drawLine  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void drawScr() {   uint8_t lastLine = 255;   inverse = !inverse;   for(uint8_t line=0; line&lt;192;line++) {     uint8_t trueLineNum = mapLineNum(line);     readLine(trueLineNum);     drawLine(line, &amp;lastLine);   } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  #ifdef DIAG void testScr() {   uint8_t lastLine = 255;   for(uint8_t line=0; line&lt;192;line++) {     uint8_t trueLineNum = mapLineNum(line);     drawLine(line, &amp;lastLine);   }   } #endif  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  #ifdef DIAG void testLoop() {   unsigned long ms;   sprintf(scrBuffer, &quot;%s&quot;, &quot;Quick brown fox jumped over a&quot;);   Serial.println(&quot;Drawing buffer&quot;);   ms = millis();   readColourBuffer();   testScr();   ms = millis() - ms;   Serial.print(&quot;ms elapsed:&quot;);   Serial.println(ms);      Serial.println(&quot;Drawing picture&quot;);   ms = millis();   readColourBuffer();   drawScr();   ms = millis() - ms;   Serial.print(&quot;ms elapsed:&quot;);   Serial.println(ms);      delay(10000); } #endif  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void realLoop() {   readColourBuffer();   drawScr();   delay(250); }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  void loop() { #ifdef DIAG   testLoop(); #else   realLoop(); #endif }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u0418\u0433\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u0438 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u043a\u0438 \u0441\u0445\u0435\u043c \u0434\u043b\u044f \u0410\u0440\u0434\u0443\u0438\u043d\u044b \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u0436\u0430\u043b\u043a\u043e, \u043d\u043e \u044f \u0445\u043e\u0440\u043e\u0448\u043e \u0443\u043c\u0435\u044e \u0432 GIMP, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0410\u0440\u0434\u0443\u0438\u043d\u043e\u0432\u0441\u043a\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qh\/c9\/jq\/qhc9jqbvjncbmevx3wvvxq0z6zq.png\"><\/p>\n<p>  \u041d\u0443 \u0438 \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u043b\u043e\u0441\u044c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/vaiXV8f09iE?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u041c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u043d\u043e \u0432\u0435\u0440\u043d\u043e. \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u0447\u0442\u043e \u043d\u0430\u0434\u043e. <\/p>\n<p>  \u0421\u0445\u0435\u043c\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/li\/f7\/uk\/lif7ukdikyqfrqhaijsgs9nlkx4.png\"><br \/>  <i>\u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u041e\u0417\u0423, \u0430 \u043d\u0435 \u041f\u0417\u0423, \u0442\u0430\u043a \u043a\u0430\u043a \u044f \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0441\u0438\u043b\u0435\u043d \u0432 \u0418\u0433\u043b\u0435, \u0430 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u041f\u0417\u0423 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0441\u0438\u0433\u043d\u0430\u043b WE \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442 \u043a \u0437\u0435\u043c\u043b\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a-\u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c\u2026 \u041d\u043e \u043d\u0430 \u041f\u0417\u0423 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0435\u0442, \u0442\u0430\u043c \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (W27C512) \u043b\u0438\u043d\u0438\u044f \u041015, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430 \u0437\u0435\u043c\u043b\u0435, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0438\u0436\u043d\u044e\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u041f\u0417\u0423. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 robot LCD, \u043d\u043e \u0432\u0441\u0435 SPI-\u044d\u043a\u0440\u0430\u043d\u0447\u0438\u043a\u0438 \u0434\u043b\u044f \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435.<\/i><\/p>\n<p>  \u043c\u043e\u0434\u0443\u043b\u044c, \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438\u0437 \u041f\u0417\u0423:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hz\/uy\/ve\/hzuyvemtabt3r8kybsylliljb0k.png\"><\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/gTgISqE6F7s?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0430 \u0431\u0435\u0437 \u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440\u0430 \u0438 \u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d(\u0447\u0438\u043a). \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043e\u0431\u0430 \u0437\u043d\u0430\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u043e. \u041d\u0430\u0434\u043e \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e. \u0412 \u0447\u0430\u0441\u0442\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0448\u0438\u043d\u0430\u043c\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u044c\u043c\u0443 \u0441\u0445\u0435\u043c\u0443 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u0422\u0430\u043c \u0431\u044b\u043b\u0438 74HC245 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u0448\u0438\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u0448\u0438\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u0437 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043e\u043a, \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 595\u043c\u0438 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u043e\u0433\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u0435\u0448\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u043a\u0440\u0430\u043d\u043e\u043c (\u043e\u043d \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c\u0443 SPI).<\/p>\n<p>  \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"cpp\"> #define CPU_ENABLE_PIN 10  void loop() {   digitalWrite(CPU_ENABLE_PIN, LOW);   trySpectrum();   digitalWrite(CPU_ENABLE_PIN, HIGH);   readColourBuffer();   drawScr();   delay(100000); }\/\/ loop<\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043a \u043d\u0430\u0448\u0435\u0439 \u0430\u0440\u0434\u0423\u041b\u0410 (CPU_ENABLE_PIN \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d \u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u0438\u043d\u043e\u043c 245\u0445), \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c trySpectrum:<\/p>\n<pre><code class=\"cpp\"> void trySpectrum() {   runClock(12500000); }\/\/ trySpectrum  void runClock(uint32_t cycles) {   uint32_t currCycle = 0;   pinMode(CPU_CLOCK_PIN, OUTPUT);   while(currCycle &lt; cycles) {     digitalWrite(CPU_CLOCK_PIN, HIGH);     digitalWrite(CPU_CLOCK_PIN, LOW);     currCycle++;   }   pinMode(CPU_CLOCK_PIN, INPUT); }\/\/ runClock <\/code><\/pre>\n<p>  \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 12,5 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u043a\u043b\u043e\u043a\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u043e\u0442 \u0430\u0440\u0434\u0423\u041b\u0410 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c readColourBuffer. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u043c \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430, \u043e\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0440\u0434\u0443\u0438\u043d\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0446\u0432\u0435\u0442\u0435 \u0438\u0437 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0430 \u0432\u0438\u0434\u0435\u043e\u041e\u0417\u0423. \u041d\u0443 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0442\u043e\u0436\u0435 \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f drawScr. \u041e\u043d\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0430\u043c\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044b \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u041e\u0417\u0423 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u0437 \u043d\u0430 robot LCD, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0446\u0432\u0435\u0442\u0435, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u043d\u0435\u0435. \u0412\u0441\u0435. \u041d\u0430 \u044d\u0442\u043e\u043c, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043f\u043e\u0440\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f. \u041f\u043b\u0430\u043d\u043e\u0432 \u0431\u044b\u043b\u043e \u0433\u0440\u043e\u043c\u0430\u0434\u044c\u0435, \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u0435\u043b\u043a\u0443 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439, \u043d\u043e, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043d\u0430\u0434\u043e \u0441\u043e\u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u042f \u0438 \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0442\u044f\u043d\u0443\u043b \u0441 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u0448\u0438\u043b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0430\u043a. \u042f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0443 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u0418\u0434\u0435\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0438 \u043d\u0435 \u0442\u0430\u043a \u0434\u043e\u043b\u0433\u043e. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c!<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043a\u0435\u0442\u0447\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\/\/ Legacy<br \/>  #define TEST_RAM_BYTES 255<br \/>  #define O_SR_CLOCK_PIN 2<br \/>  #define O_SR_LATCH_PIN 3<br \/>  #define O_SR_DATA_PIN 4<br \/>  #define O_SR_OUTPUT_ENABLE_PIN 5<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  #include &lt;TFT.h&gt;<br \/>  #include &lt;SPI.h&gt;<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  \/\/ pin definitions<br \/>  #define TFT_CS 13 \/\/ not used<br \/>  #define TFT_DC 0<br \/>  #define TFT_RST 1<\/p>\n<p>  \/\/ CPU defines<br \/>  #define CPU_CLOCK_PIN 8<br \/>  #define CPU_RESET_PIN 9<br \/>  #define CPU_ENABLE_PIN 10<br \/>  #define BUS_PORT_0_5 PINC<br \/>  #define BUS_PORT_6_7 PIND<br \/>  #define BUS_DDR_0_5 DDRC<br \/>  #define BUS_DDR_6_7 DDRD<\/p>\n<p>  \/\/ SR defines<br \/>  #define SR_PORT PORTD<br \/>  #define SR_DDR DDRD<br \/>  #define SR_CLOCK_PIN B00000100 \/\/ Pin 2<br \/>  #define SR_LATCH_PIN B00001000 \/\/ Pin 3<br \/>  #define SR_DATA_PIN B00010000 \/\/ Pin 4<br \/>  #define SR_OE_PIN B00100000 \/\/ Pin 5<\/p>\n<p>  \/\/ screen params<br \/>  #define BYTES_PER_LINE 32<br \/>  #define SCALE 1.6f<br \/>  #define DIM_FACTOR 64<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  char scrBuffer[BYTES_PER_LINE];<br \/>  char colourBuffer[768];<br \/>  char inverse = 0;<\/p>\n<p>  TFT TFTscreen = TFT(TFT_CS, TFT_DC, TFT_RST);<\/p>\n<p>  volatile uint16_t delayVar = 0;<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void setup() {<br \/>   \/\/ TFT<br \/>   TFTscreen.begin();<br \/>   TFTscreen.background(255, 0, 0);<br \/>   TFTscreen.fill(255, 0, 0);<\/p>\n<p>  \/\/ CPU controls seetup<br \/>   DDRC = B00000000;<br \/>   pinMode(CPU_CLOCK_PIN, INPUT);<br \/>   pinMode(CPU_RESET_PIN, INPUT);<br \/>   pinMode(CPU_ENABLE_PIN, OUTPUT);<br \/>   digitalWrite(CPU_ENABLE_PIN, HIGH); \/\/ active low<\/p>\n<p>  \/\/ SR setup<br \/>   SR_DDR |= SR_CLOCK_PIN;<br \/>   SR_DDR |= SR_LATCH_PIN;<br \/>   SR_DDR |= SR_DATA_PIN;<br \/>   SR_DDR |= SR_OE_PIN;<br \/>   SR_PORT |= SR_OE_PIN; \/\/ default to HIGH to disable address bus output<\/p>\n<p>  resetSpectrum();<br \/>  }\/\/ setup<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void pShiftOut(uint16_t val) {<br \/>   \/\/ bit 15 \u2014 CE pin<br \/>   if (val &amp; (1 &lt;&lt; 15)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 14 \u2014 OE pin<br \/>   if (val &amp; (1 &lt;&lt; 14)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 13<br \/>   if (val &amp; (1 &lt;&lt; 13)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 12<br \/>   if (val &amp; (1 &lt;&lt; 12)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 11<br \/>   if (val &amp; (1 &lt;&lt; 11)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 10<br \/>   if (val &amp; (1 &lt;&lt; 10)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 9<br \/>   if (val &amp; (1 &lt;&lt; 9)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 8<br \/>   if (val &amp; (1 &lt;&lt; 8)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN; <br \/>   \/\/ bit 7<br \/>   if (val &amp; (1 &lt;&lt; 7)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 6<br \/>   if (val &amp; (1 &lt;&lt; 6)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 5<br \/>   if (val &amp; (1 &lt;&lt; 5)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 4<br \/>   if (val &amp; (1 &lt;&lt; 4)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 3<br \/>   if (val &amp; (1 &lt;&lt; 3)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 2<br \/>   if (val &amp; (1 &lt;&lt; 2)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 1<br \/>   if (val &amp; (1 &lt;&lt; 1)) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN;<br \/>   \/\/ bit 0<br \/>   if (val &amp; 1) {<br \/>   SR_PORT |= SR_DATA_PIN;<br \/>   } else {<br \/>   SR_PORT &amp;= ~SR_DATA_PIN;<br \/>   }<br \/>   SR_PORT |= SR_CLOCK_PIN;<br \/>   SR_PORT &amp;= ~SR_CLOCK_PIN; <br \/>  }\/\/ pShiftOut<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void setAddress(uint8_t lineNum, uint8_t pixel) {<br \/>   uint16_t address = (lineNum&lt;&lt;5) + pixel;<br \/>   SR_PORT &amp;= ~SR_LATCH_PIN;<br \/>   pShiftOut(address);<br \/>   SR_PORT |= SR_LATCH_PIN;<br \/>   delayVar++;<br \/>  }<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void readLine(uint8_t lineNum) {<br \/>   SR_PORT &amp;= ~SR_OE_PIN;<br \/>   for(uint8_t i=0; i&lt;BYTES_PER_LINE; i++) {<br \/>   setAddress(lineNum, i);<br \/>   scrBuffer[i] = BUS_PORT_0_5;<br \/>   scrBuffer[i] |= BUS_PORT_6_7 &amp; B11000000;<br \/>   }<br \/>   SR_PORT |= SR_OE_PIN; <br \/>  }<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void readColourBuffer() {<br \/>   for(uint8_t i=0; i&lt;24; i++) {<br \/>   readLine(192+i);<br \/>   memcpy(&amp;colourBuffer[i*BYTES_PER_LINE], scrBuffer, BYTES_PER_LINE);<br \/>   }<br \/>  }<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  uint8_t mapLineNum(uint8_t lineNum) {<br \/>   \/\/ convert screen line number to actual line numberin memory<br \/>   uint8_t y = (lineNum &amp; B00000111) &lt;&lt; 3;<br \/>   y |= (lineNum &gt;&gt; 3) &amp; B00000111;<br \/>   y |= lineNum &amp; B11000000;<br \/>   return y;<br \/>  }<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void drawLine(uint8_t lineNum, uint8_t *lastLineNum) {<br \/>   uint8_t colour, x, y;<br \/>   uint8_t lastX = 255;<br \/>   y = lineNum \/ SCALE;<br \/>   if(y == *lastLineNum) return;<br \/>   uint8_t colourLine = lineNum &gt;&gt; 3; \/\/ lineNum \/ 8<br \/>   for(uint8_t i=0; i&lt;BYTES_PER_LINE; i++) {<br \/>   colour = colourBuffer[(colourLine &lt;&lt; 5) + i]; \/\/ [colourLine * 32 + i]<br \/>   uint8_t isBright = (colour &amp; B01000000) &gt;&gt; 6;<br \/>   uint8_t isFlashing = (colour &amp; B10000000) &gt;&gt; 7;<br \/>   for(uint8_t trueX=0; trueX&lt;8; trueX++) {<br \/>   uint8_t isFore = ((scrBuffer[i] &gt;&gt; trueX) &amp; 1);<br \/>   uint8_t r,g,b;<br \/>   if(isFlashing &amp;&amp; inverse) {<br \/>   isFore = !isFore;<br \/>   }<br \/>   uint8_t col = (255 \u2014 DIM_FACTOR) + (DIM_FACTOR * isBright);<br \/>   if(isFore) {<br \/>   b = ( colour &amp; B00000001) * col;<br \/>   r = ((colour &amp; B00000010) &gt;&gt; 1) * col;<br \/>   g = ((colour &amp; B00000100) &gt;&gt; 2) * col;<br \/>   } else {<br \/>   b = ((colour &amp; B00001000) &gt;&gt; 3) * col;<br \/>   r = ((colour &amp; B00010000) &gt;&gt; 4) * col;<br \/>   g = ((colour &amp; B00100000) &gt;&gt; 5) * col;<br \/>   }<br \/>   x = ((i&lt;&lt;3)+(8-trueX)) \/ SCALE; \/\/ i&lt;&lt;3 &lt;=&gt; i*8<br \/>   if(x != lastX) {<br \/>   TFTscreen.stroke(r, g, b);<br \/>   TFTscreen.point(x, y);<br \/>   lastX = x;<br \/>   }<br \/>   }<br \/>   }<br \/>   *lastLineNum = y;<br \/>  }\/\/ drawLine<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void drawScr() {<br \/>   uint8_t lastLine = 255;<br \/>   inverse = !inverse;<br \/>   for(uint8_t line=0; line&lt;192;line++) {<br \/>   uint8_t trueLineNum = mapLineNum(line);<br \/>   readLine(trueLineNum);<br \/>   drawLine(line, &amp;lastLine);<br \/>   }<br \/>  }<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void runClock(uint32_t cycles) {<br \/>   uint32_t currCycle = 0;<br \/>   pinMode(CPU_CLOCK_PIN, OUTPUT);<br \/>   while(currCycle &lt; cycles) {<br \/>   digitalWrite(CPU_CLOCK_PIN, HIGH);<br \/>   digitalWrite(CPU_CLOCK_PIN, LOW);<br \/>   currCycle++;<br \/>   }<br \/>   pinMode(CPU_CLOCK_PIN, INPUT);<br \/>  }\/\/ runClock<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void resetSpectrum() {<br \/>   pinMode(CPU_RESET_PIN, OUTPUT);<br \/>   digitalWrite(CPU_RESET_PIN, LOW);<br \/>   runClock(30);<br \/>   digitalWrite(CPU_RESET_PIN, HIGH);<br \/>  }<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void trySpectrum() {<br \/>   runClock(12500000);<br \/>  }\/\/ trySpectrum<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>  void loop() {<br \/>   digitalWrite(CPU_ENABLE_PIN, LOW);<br \/>   trySpectrum();<br \/>   digitalWrite(CPU_ENABLE_PIN, HIGH);<br \/>   readColourBuffer();<br \/>   drawScr();<br \/>   delay(100000);<br \/>  }\/\/ loop<\/p>\n<p>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<br \/>  \/\/ END<br \/>  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  <\/div>\n<\/p><\/div>\n<p>  \u0424\u043e\u0442\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0435\u043b\u043a\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uj\/rv\/pp\/ujrvppgtuyr0q8tw4vizxaajxv4.png\"><br \/>  <i>\u043f\u043e\u043a\u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0430\u0440\u0434\u0423\u041b\u0410<\/i><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ae\/wq\/jg\/aewqjgaele9onm7thtn2vzzzh4u.jpeg\"><br \/>  <i>\u00ab\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u00bb \u0432 \u0441\u0431\u043e\u0440\u0435<\/i><\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/c12IIB2Zkv0?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <i>\u0412\u044b\u0432\u043e\u0434 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u041f\u0417\u0423 \u0431\u0435\u0437 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/i><\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/Lpy8ivOdXhU?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <i>\u0438 \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c<\/i><\/p>\n<p>  \u041e&#8217;\u041a\u0435\u0439\u0441\u0438, \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u041f\u0417\u0423 \u0421\u043f\u0435\u043a\u043a\u0438. \u0422\u0430-\u0434\u0430\u043c!:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uj\/hn\/2q\/ujhn2qbrxkkyxsv5m7bhhdcnwoc.jpeg\"><br \/>  <i>\u041a\u0442\u043e \u0432\u0438\u0434\u0438\u0442 &copy;1982 Sinclair Research Ltd, \u0442\u043e\u0442 \u0441\u043f\u0435\u043a\u0442\u0440\u0443\u043c\u0438\u0441\u0442.<\/i><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/503332\/\"> https:\/\/habr.com\/ru\/post\/503332\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/503332\/\"><a href=\"https:\/\/habr.com\/ru\/post\/498222\/\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c<\/a><\/p>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0445\u043e\u0447\u0443 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0437\u0430 \u0441\u0442\u043e\u043b\u044c \u0434\u043e\u043b\u0433\u0443\u044e \u043f\u0430\u0443\u0437\u0443 \u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c. \u041d\u0430 \u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0443\u0432\u0430\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u043c\u043d\u0438\u0442, \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u043b, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u0435\u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u044f\u0442\u044c. \u042f \u0441\u043b\u0443\u043a\u0430\u0432\u0438\u043b. \u041f\u0430\u044f\u0442\u044c \u044f \u043b\u044e\u0431\u043b\u044e, \u043d\u043e \u043a\u043e\u043d\u0444\u0430\u0439\u043d\u043c\u0435\u043d\u0442 (\u043d\u0435 \u0442\u043e\u0442, \u0447\u0442\u043e \u0443 \u043a\u0432\u0430\u0440\u043a\u043e\u0432, \u0430 \u0442\u043e\u0442, \u0447\u0442\u043e \u0443 \u043b\u044e\u0434\u0435\u0439) \u043f\u0440\u0438\u0432\u0435\u043b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u043f\u043e\u0439. \u042f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u043a\u0430\u0437\u0430\u043b \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0438 \u043d\u0430 \u0438\u0431\u0435\u0435 \u0438 \u043d\u0430 \u0430\u043b\u0438, \u043d\u043e \u043f\u0440\u0438\u0448\u0435\u043b \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u043e. \u0423\u0432\u044b, \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430 \u0431\u0435\u0441\u043f\u0430\u0435\u0447\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0438 \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u043d\u0435 \u043c\u043e\u0433\u043b\u043e \u0438\u0434\u0442\u0438 \u0440\u0435\u0447\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k1\/1e\/z5\/k11ez5ixf4ucxlhruzakuyo5nr0.png\"><br \/>  \u041f\u0440\u043e\u0448\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044f \u0438\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432\u0441\u044e \u043c\u043e\u044e \u043f\u043e\u0434\u0435\u043b\u043a\u0443 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0430\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0443\u0436\u043d\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u043a\u0438. \u0423 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u0438\u0445 \u043d\u0435\u0442. \u041d\u043e \u0432\u043e\u0442 \u043f\u0440\u0438\u043f\u043e\u0439 \u043f\u0440\u0438\u0448\u0435\u043b, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.<\/p>\n<p>  \u0418 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e. \u042f \u2014 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a. \u0411\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a, \u0438 \u0434\u0430\u0436\u0435 \u0432\u0438\u0434\u0435\u043e. <b>\u0422\u0440\u0430\u0444\u0438\u043a!<\/b>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-305598","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/305598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=305598"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/305598\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=305598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=305598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=305598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}