Comments 81
Вы маньяк! (в хорошем смысле)
По поводу копирайта микрософта — «проблема» в файле autoexec.bat. Когда он есть, на экран при загрузке ничего не выводится и сразу начинают исполняться команды из него.
Наверняка у вас там что-нибудь типа
echo off
…
(тут могу ошибиться) А зажатый шифт при загрузке заставляет ms-dos игнорировать autoexec.bat
Наверняка у вас там что-нибудь типа
echo off
…
(тут могу ошибиться) А зажатый шифт при загрузке заставляет ms-dos игнорировать autoexec.bat
Блин, это монументальный труд. Такая объемная статья… И да, стало интересно, что там было с магией VHDL в этом моменте?
В этом модуле все было очень красиво и хорошо, за исключением одной маленькой детали – он не работал.
Это просто нечто. Напомнило долгие часы переделывания заглушек в системные вызовы, когда я в свое время писал linux-совместимую ОС с нуля…
UFO just landed and posted this here
UFO just landed and posted this here
жПринца Персии смог пройти? Там прохождение на час.
Читал взахлеб! Вот она, движущая сила, главное следовать за мечтой!
Мне тут уже несколько раз задали вопрос насчет того, какую отладочную плату FPGA я порекомендую… Так вот, сделать это (порекомендовать) в общем случае просто невозможно. Все зависит от того, какие ресурсы и периферия требуются. Цены на платы находятся в диапазоне от 10-30 долларов до 20 тыс долларов, что наглядно демонстрирует широту имеющегося выбора.
Единственное, что мог бы посоветовать — брать плату нормального производителя, так как с многочисленными китайскими noname у многих наблюдалось большое количество проблем. Мне кажется, это последнее, чего хочется — чтобы в процессе обучения нужно было разбираться, ошибка ли это в твоей системе, или же это просто глюк платы.
Производитель моей платы делает очень неплохие вещи, но вроде есть и другие нормальные производители.
Единственное, что мог бы посоветовать — брать плату нормального производителя, так как с многочисленными китайскими noname у многих наблюдалось большое количество проблем. Мне кажется, это последнее, чего хочется — чтобы в процессе обучения нужно было разбираться, ошибка ли это в твоей системе, или же это просто глюк платы.
Производитель моей платы делает очень неплохие вещи, но вроде есть и другие нормальные производители.
я натолкнулся на долго тянущуюся тему о том, как запустить 8086 процессор с минимумом обвязки. Странно было то, что тема обсуждалась больше года
Офигигеть, уже оказывается больше года прошло с момента, когда я ее запостил…
А вы — молодец. Статья — блестящее резюме проделанной работы. Прочитал на одном дыхании. А я так и не удосужился светодиодом помигать.
Теперь осталось засунуть и процессор в FPGA, чтобы ничего не болталось :)
Не труЪ.
Как тут уже успели заметить, весь смысл проекта заключался в том, чтобы иметь настоящее «железное» ядро, гарантированно обеспечивающее полную аутентичность сигналов шины и выполнения команд, а вокруг этого уже можно строить все остальное.
Примеров систем с «софтовым» х86 достаточно, некоторые упоминались на Хабре, но ни одна из реализаций процессора не гарантирует 100% соответствие оригинальному процессору.
Наверное, более-менее о соответствии можно говорить, если пойти по пути, пройденному недавно энтузиастом с 8080 (вернее, 580ВМ80А) — была восстановлена полная топология кристалла, и по ней уже сделана HDL-реализация.
P.S. А еще мне так просто хотелось, и это — основное :)
Примеров систем с «софтовым» х86 достаточно, некоторые упоминались на Хабре, но ни одна из реализаций процессора не гарантирует 100% соответствие оригинальному процессору.
Наверное, более-менее о соответствии можно говорить, если пойти по пути, пройденному недавно энтузиастом с 8080 (вернее, 580ВМ80А) — была восстановлена полная топология кристалла, и по ней уже сделана HDL-реализация.
P.S. А еще мне так просто хотелось, и это — основное :)
Насчет «просто хотелось» — полностью поддерживаю :)
На протяжении всего текста думал про порты клавиатуры — ведь многие программы обращаются к ним напрямую.
А собственный BIOS означает, что порты могут быть другими.
Но раз в конце получилось использовать оригинальный BIOS, значит все же с клавиатурой все в порядке.
Это так?
На протяжении всего текста думал про порты клавиатуры — ведь многие программы обращаются к ним напрямую.
А собственный BIOS означает, что порты могут быть другими.
Но раз в конце получилось использовать оригинальный BIOS, значит все же с клавиатурой все в порядке.
Это так?
А собственный BIOS означает, что порты могут быть другими.Это ничего не означает. Порты и биос — абсолютно разные вещи, как, например, клеммы и автомобиль. Порты — штука аппаратная, когда программа пишет в какой-то порт, процессор на шине адреса выставляет номер порта и выдает управляющие сигналы IOWR (запись) или IORD (чтение) и еще несколько, в том числе что идет обращение не по DMA (забыл название). Что делать в таком случае (при записи или чтении в такой-то порт) — решает разработчик схемы, организуя дешефрацию адресов с учетом сигналов IORW, IORD.
BIOS при этом ни сном ни духом что кто куда пишет, ему плевать. BIOS же обслуживает прерывания, в каждом прерывании есть его программная обработка, вот ей и занимается BIOS.
Основной порт клавиатуры (60h) у меня с самого начала располагался по своему законному адресу и выполнял главную функцию по выдаче скан-кодов. В принципе, одного этого порта (вместе с вызовом прерывания 09) уже достаточно, чтобы подавляющее большинство программ (включая BIOS) работало нормально напрямую.
Вот со скан-кодами до определенного момента была проблема, но об этом (и о решении проблемы) я вроде довольно подробно рассказал в статье.
Вот со скан-кодами до определенного момента была проблема, но об этом (и о решении проблемы) я вроде довольно подробно рассказал в статье.
Это как раз нереально, степень интеграции в процессоре на порядки выше чем FPGA, нужно будет скорей всего несколько FPGA для иммитации процессора, и оно всё будет работать раз в 10 медленнее чем натуральный процессор только лишь из-за задержек на сигнальных линиях и внутри ячеек FPGA - тут физический размер решает.
Отличная статья. После таких начинаешь думать, насколько скудны мои знания хотя бы в том же VHDL, несмотря на годы изучения. Вы — мастер! :)
Часто думал, насколько человечество зависит от носителей информации. Как быстро человечество восстановит технический потенциал, если надо будет начинать с чистого листа. Возможно ли в пределах одного-друх поколений нагнать и не растерять знания по дороге. И вот такие люди, которые с нуля за два месяца скрутили из проводков и палок компьютер мне вселяют уверенность, что какой-нибудь сверхмощный всплеск солнечной активности, который уничтожит все магнитные носители, не разрушит нашу хваленую цивилизацию.
Все-таки разрушит. Восстановление потребует огромной массы информации. А она вся пропала… считай что надо начинать сначала, а если уже нет и заводов по производству микросхем и все что с этим связано — дело гиблое, восстанавливать технологии придется лет 100 начиная с ламп… а там кто знает, может в этот раз именно ламповая технология возьмёт верх, а транзисторы будут нишевым продуктом.
И вот такие люди, которые с нуля за два месяца скрутили из проводков и палок компьютер мне вселяют уверенность, что какой-нибудь сверхмощный всплеск солнечной активности, который уничтожит все магнитные носители, не разрушит нашу хваленую цивилизацию.Конечно разрушит. Да, есть много компонент, которые мы уже не умеем создавать с нуля, можем только копировать, но, чёрт побери, одним из таких компонентов является, собственно, человек. Причём многие воздействия, которых наше железо толком и «не заметить» (ну там банальное кратковременное повышение температуры воздуха градусов так до ста) этот компонент угробит. Так что вспышка, способная уничтожить все магнитные носители, все винчестеры, все компьютеры где-нибудь глубоко под землёй заодно изведёт также и всех людей под корень. И? Кто потом это всё восстанавливать будет?
Перед автором склоняю голову… Очень круто!!!
>При максимально допустимой для оригинального 8088 тактовой частоте в 5МГц
Вообще 10. Были 5,8 и 10.
Еще был NEC V20, который сам по себе был быстрее на 20% стандартного 8088.
Вообще 10. Были 5,8 и 10.
Еще был NEC V20, который сам по себе был быстрее на 20% стандартного 8088.
Вы сделали мой вечер ))
Завидую вашей усидчивости и целеустремленности ))
Завидую вашей усидчивости и целеустремленности ))
Особенно порадовало утверждение автора о том, что он не имеет образования в области электроники и вообще любитель. Тогда откуда все это?
Меня больше интересует прочная убежденность людей в том, что успех в какой-то области прямое следствие проф. образования.
Отвечаю сразу и на комментарии ниже…
Меня увлекают довольно различные сферы деятельности — еще в детстве по кругу переходил между электроникой, физикой, химией, астрономией… При этом очень интересуют не только «внешние эффекты», но и (наверное, даже в первую очередь) понимание глубинных процессов, вызывающих эти самые внешние эффекты.
Без понимания сути, даже если удалось что-то сделать, я все-равно буду чувствовать некую ущербность происходящего, и удовольствия от процесса не получу. Например, некоторое время назад забросил процентов на 80 готовый проект (на который потратил почти год) только потому, что так и не смог окончательно осилить понимание (на уровне формул) всех происходящих процессов (в основном, это ядерная физика и электромагнитное поле). Хотя практически не сомневаюсь, что смог бы все запустить, наверное, вообще без формул — методом ненаучного тыка и слепого копирования.
Насчет профессионального образования у меня какое-то двойственное мнение. Думаю, оно просто дискредитировано самой методикой преподавания (в большинстве случаев). Полная оторванность от реальных задач не только вызывает вопрос «нахрена это все нужно ???», но и крайне усложняет само понимание предмета. За примером далеко ходить не нужно — пытаясь изучить VHDL по университетским учебникам, я натолкнулся на обе эти проблемы — вообще не мог представить, к чему все эти теоретизирования, плюс вообще не понимал очень многие объяснения — о чем они вообще говорят? Зато при появлении реальной задачи все вдруг стало на свои места, и я вдруг неожиданно стал понимать даже идею, заложенную автором в тот самый учебник по VHDL.
Но если бы я имел нормальные базовые знания, полученные более правильным методом, то и на кучу граблей не наступил бы, и многие вопросы решил бы намного раньше и элегантнее. Т.е. было бы намного меньше рутинных задач, и больше творчества.
Плюс (наверное, повторюсь) лично мне намного больше нравится делать все вещи осознанно. Даже если я и решу сделать что-то не так, как нужно, то предпочитаю отдавать себе полный отчет в том, что я делаю (и что мне за это будет).
Меня увлекают довольно различные сферы деятельности — еще в детстве по кругу переходил между электроникой, физикой, химией, астрономией… При этом очень интересуют не только «внешние эффекты», но и (наверное, даже в первую очередь) понимание глубинных процессов, вызывающих эти самые внешние эффекты.
Без понимания сути, даже если удалось что-то сделать, я все-равно буду чувствовать некую ущербность происходящего, и удовольствия от процесса не получу. Например, некоторое время назад забросил процентов на 80 готовый проект (на который потратил почти год) только потому, что так и не смог окончательно осилить понимание (на уровне формул) всех происходящих процессов (в основном, это ядерная физика и электромагнитное поле). Хотя практически не сомневаюсь, что смог бы все запустить, наверное, вообще без формул — методом ненаучного тыка и слепого копирования.
Насчет профессионального образования у меня какое-то двойственное мнение. Думаю, оно просто дискредитировано самой методикой преподавания (в большинстве случаев). Полная оторванность от реальных задач не только вызывает вопрос «нахрена это все нужно ???», но и крайне усложняет само понимание предмета. За примером далеко ходить не нужно — пытаясь изучить VHDL по университетским учебникам, я натолкнулся на обе эти проблемы — вообще не мог представить, к чему все эти теоретизирования, плюс вообще не понимал очень многие объяснения — о чем они вообще говорят? Зато при появлении реальной задачи все вдруг стало на свои места, и я вдруг неожиданно стал понимать даже идею, заложенную автором в тот самый учебник по VHDL.
Но если бы я имел нормальные базовые знания, полученные более правильным методом, то и на кучу граблей не наступил бы, и многие вопросы решил бы намного раньше и элегантнее. Т.е. было бы намного меньше рутинных задач, и больше творчества.
Плюс (наверное, повторюсь) лично мне намного больше нравится делать все вещи осознанно. Даже если я и решу сделать что-то не так, как нужно, то предпочитаю отдавать себе полный отчет в том, что я делаю (и что мне за это будет).
Ну вааще! Привозите в конце августа к нам, в Питер, на Chaos Constructions, хочется вживую увидеть-пощупать. Да и спецы по VHDL у нас есть, можно IRL обменяться опытом. Вот, например семинар Тима Ташпулатова, про альтеру и Amiga.
Насчет смешения точек разных цветов у Майкрософта — этому сейчас не удивился бы ни один человек из пытавшихся использовать MS Paint при 16-цветном режиме экрана в 95 win :-) Как сейчас помню поиски цветов, в которых эти точки не так в глаза бросаются.
Я в восхищении. Но черт, сколько же бывает у людей свободного времени…
Жаль что все в схеме и для квартуса. Переписать бы на чистом hdl — было бы очень полезно для будущих поколений…
Жаль что все в схеме и для квартуса. Переписать бы на чистом hdl — было бы очень полезно для будущих поколений…
80% времени, использованного на проект, было в районе от 10 часов вечера до 3 часов ночи. Остальное — выходные (маленькими кусочками) и пару дней валялся больным, решил использовать как отмазку для самого себя, чтобы вообще не думать о работе, зато много чего сделал с проектом.
Насчет схемного дизайна — вроде в статье я довольно подробно описывал, как постепенно уходил от этого и, в конечном итоге, полностью перевел все на VHDL…
Насчет схемного дизайна — вроде в статье я довольно подробно описывал, как постепенно уходил от этого и, в конечном итоге, полностью перевел все на VHDL…
Это просто мега-круто. А насколько доступна оригинальная документация к таким древним процам? Т.е. оно у самого Интела где-нибудь лежит или только методом научного тыка и ковыряния в исходниках того, что кто-то уже расковырял до вас?
А почему форма сигнала зависит от разной «земли»? Сказывается емкость и индуктивность платы?
emu8086 — отличная «IDE» с эмулятором и отладчиком.
Такое впечатление, что пробовал, но чем-то не подошло (хотя могу ошибаться).
Прочитал как роман. У Вас отлично получается передавать события. Даже столь техническая тема, раскрыта вами и прочитана мною с огромным удовольствием. Спасибо Вам большое.
С удовольствием прочитал, как раз совпало с тем что я снова начал ковыряться со своей DE1 и Verilog.
Спасибо за статью!
Спасибо за статью!
Читал вашу статью на
www.vintage-computer.com/vcforum/showthread.php?46427-Modern-XT-compatible-PC-on-FPGA-with-real-8088
даже отвечал там насчет идеи организации контроллера флопа.
Теперь бы это сделать в виде платы в формате PC и на выставку СС :)
www.vintage-computer.com/vcforum/showthread.php?46427-Modern-XT-compatible-PC-on-FPGA-with-real-8088
даже отвечал там насчет идеи организации контроллера флопа.
Теперь бы это сделать в виде платы в формате PC и на выставку СС :)
Очень круто.
А сколько денег ушло на всё?
А сколько денег ушло на всё?
Немного дополнил статью (практически в самом конце) относительно этого вопроса.
Очень интересный проект!
Как назвали получившийся компьютер?
Насколько реально доработать этот компьютер до совместимости с i80386?
Как назвали получившийся компьютер?
Насколько реально доработать этот компьютер до совместимости с i80386?
Честно говоря, не считаю этот проект настолько выдающимся, чтобы присваивать ему имя собственное :)
Слово «доработать», наверное, не очень подходит, если говорим о том, чтобы сделать PC-совместимый компьютер, на котором будут работать программы, требующие 386 процессор. Для начала, нужно сделать, как минимум, EGA адаптер (не думаю, что хоть одна из таких программ поддерживает CGA). Я смотрел в сторону EGA — полноценная аппаратная эмуляция потребует ОЧЕНЬ большого объема работы. Далее, память нужна 32-битная, что уже вызовет серьезное изменение структуры всего устройства, и т.д.
Понятно, что сделать можно все, но мне кажется, что проще не переделывать имеющееся, а начать с чистого листа. Тем более, что даже в этом проекте я уже вижу, как можно сделать многие вещи красивее и эффективнее.
Слово «доработать», наверное, не очень подходит, если говорим о том, чтобы сделать PC-совместимый компьютер, на котором будут работать программы, требующие 386 процессор. Для начала, нужно сделать, как минимум, EGA адаптер (не думаю, что хоть одна из таких программ поддерживает CGA). Я смотрел в сторону EGA — полноценная аппаратная эмуляция потребует ОЧЕНЬ большого объема работы. Далее, память нужна 32-битная, что уже вызовет серьезное изменение структуры всего устройства, и т.д.
Понятно, что сделать можно все, но мне кажется, что проще не переделывать имеющееся, а начать с чистого листа. Тем более, что даже в этом проекте я уже вижу, как можно сделать многие вещи красивее и эффективнее.
Спасибо за ответ.
У меня был не совсем праздный интерес, потому что 32 бита подразумевает гораздо больший выбор процессоров. Причём, не только x86. Т.ч. очень было бы интересно узнать о дальнейших планах.
Что касается собственного имени, то имя никогда не помешает. Если проект простой, то и имя можно дать простое. Ну и не настолько он простой, тут ведь такое дело — чем больше человек понимает в предметной области, тем больше понимает что за внешней простотой скрывается большая работа.
Кстати, на opencores.org/projects есть несколько VGA контроллеров. Не уверен в качестве тех проектов, но, вероятно, с помощью «напильника» можно было бы собрать что-то подходящее.
В общем, чтобы не ходить вокруг да около, скажу что мне была бы интресна 32-х битная платформа для тестрования (и возможно использования) своего процессора.
У меня был не совсем праздный интерес, потому что 32 бита подразумевает гораздо больший выбор процессоров. Причём, не только x86. Т.ч. очень было бы интересно узнать о дальнейших планах.
Что касается собственного имени, то имя никогда не помешает. Если проект простой, то и имя можно дать простое. Ну и не настолько он простой, тут ведь такое дело — чем больше человек понимает в предметной области, тем больше понимает что за внешней простотой скрывается большая работа.
Кстати, на opencores.org/projects есть несколько VGA контроллеров. Не уверен в качестве тех проектов, но, вероятно, с помощью «напильника» можно было бы собрать что-то подходящее.
В общем, чтобы не ходить вокруг да около, скажу что мне была бы интресна 32-х битная платформа для тестрования (и возможно использования) своего процессора.
Я не совсем понимаю, о чем речь — о компьютере на x86-совместимом 32-битном процессоре, совместимым с линейкой IBM PC, или о произвольном компьютере на произвольном 32-битном процессоре ???
Первое — задача не из самых простых (выше об этом уже писал), особенно если стремиться к максимальной совместимости.
Второе, наверное, в минимальном варианте (мигание светодиодом, или даже вывод на монитор с помощью уже имеющегося у меня видеоконтроллера) смогу сделать за день (не считая времени изготовления печатной платы), но вообще не представляю себе практической или интеллектуальной ценности такого устройства (разве что поставить самому себе «галочку», что и такое делал)…
Первое — задача не из самых простых (выше об этом уже писал), особенно если стремиться к максимальной совместимости.
Второе, наверное, в минимальном варианте (мигание светодиодом, или даже вывод на монитор с помощью уже имеющегося у меня видеоконтроллера) смогу сделать за день (не считая времени изготовления печатной платы), но вообще не представляю себе практической или интеллектуальной ценности такого устройства (разве что поставить самому себе «галочку», что и такое делал)…
Например, Ваш проект можно рассматривать как оригинальную IBM PC/XT материнскую плату. Оборудование на котором выросла современная индустрия.
Кстати, а i386SX запустится? Внезапно подумалось, что нет никаких серьёзных причин, по которым нельзя заставить 32-х битное оборудование управлять 16-битным железом.
Кстати, а i386SX запустится? Внезапно подумалось, что нет никаких серьёзных причин, по которым нельзя заставить 32-х битное оборудование управлять 16-битным железом.
А их и не должно быть. Насколько я знаю, порты очень долго оставались 16-битными. И начиная с 286-го процессора начинали тормозить всю систему, являясь тяжелым грузом… но совместимость, та самая пресловутая аппаратная совместимость!
Не знаю как сейчас обстоят дела с современными процессорами, есть ли расширения портов хотя бы до 32 бит? Или порты оставили лишь для относительно редких операций по низкоуровневой конфигурации железа, а все ресурсоемкие операции проводят через окна в адресном пространстве RAM?
Не знаю как сейчас обстоят дела с современными процессорами, есть ли расширения портов хотя бы до 32 бит? Или порты оставили лишь для относительно редких операций по низкоуровневой конфигурации железа, а все ресурсоемкие операции проводят через окна в адресном пространстве RAM?
Через окна в адресном пространстве процесссора.
В PCI шине некоторый диапазан адресов отведён для устройств.
Вот тут подробности — en.wikipedia.org/wiki/PCI_configuration_space
В PCI шине некоторый диапазан адресов отведён для устройств.
Вот тут подробности — en.wikipedia.org/wiki/PCI_configuration_space
UFO just landed and posted this here
Не понял насчет осцилографа. Это тот, который стоит несколько сот тысяч рублей и его можно походя прикупить для разовых хобби проектов?
Очень круто! Завидую такой скорости, это совершенно невероятный объём проделанной работы для пары месяцев.
Кроме этого, на выходных была синхронистично выпущена довольно интересная демка как раз для IBM PC на базе 8088: 8088 MPH by Hornet+CRTC+DESiRE. Она примечательна среди всего прочего тем, что выворачивает CGA так, что получает запредельные сотни (до тысячи на статике) цветов вместо четырёх, по пути ломая все известные эмуляторы, естественно. Было бы интересно узнать, справится ли ваш агрегат с подобным.
Кроме этого, на выходных была синхронистично выпущена довольно интересная демка как раз для IBM PC на базе 8088: 8088 MPH by Hornet+CRTC+DESiRE. Она примечательна среди всего прочего тем, что выворачивает CGA так, что получает запредельные сотни (до тысячи на статике) цветов вместо четырёх, по пути ломая все известные эмуляторы, естественно. Было бы интересно узнать, справится ли ваш агрегат с подобным.
Вряд ли взлетит, но попробую…
В демке большая часть «магии» происходит на мониторе NTSC. Поскольку pixel-rate CGA составляет кратные частоты канала цветности, то при тщательном подборе точек на мониторе NTSC возникают цветовые артефакты, которые видны как multicolor. Такая техника известна как «color fringing». На RGB мониторах и на эмуляторах это не работает.
Так что нужен NTSC монитор и точное поклоковое соответствие CGA :)
Так что нужен NTSC монитор и точное поклоковое соответствие CGA :)
Спасибо, что просветили — а то я сегодня утром работать спокойно не мог, все пытался понять, как на CGA можно такое сделать. Уже планировал вечером за дизассемблер браться…
Честно говоря, есть некоторое разочарование — чуда очередной раз не случилось… Но, конечно, изобретательности, знаний и целеустремленности у людей — остается только позавидовать.
Честно говоря, есть некоторое разочарование — чуда очередной раз не случилось… Но, конечно, изобретательности, знаний и целеустремленности у людей — остается только позавидовать.
В принципе, существуют реализации чипа 6845 на VHDL, например
www.cpcwiki.eu/index.php/VHDL_implementation_of_the_6845
может еще есть. Это фактически набор программируемых счетчиков.
CRT телевизоры последних поколений и некоторые PCI TV тюнеры понимали NTSC.
Подробнее про цвета:
en.wikipedia.org/wiki/Composite_artifact_colors
И личку (мои диалоги) взгляните pls.
www.cpcwiki.eu/index.php/VHDL_implementation_of_the_6845
может еще есть. Это фактически набор программируемых счетчиков.
CRT телевизоры последних поколений и некоторые PCI TV тюнеры понимали NTSC.
Подробнее про цвета:
en.wikipedia.org/wiki/Composite_artifact_colors
И личку (мои диалоги) взгляните pls.
повод усовершенствовать эмуляторы!
О! А вот и демка, которая если корректно пойдёт, то будет являться прекрасным хардтестом на соответствие спекам оригинального PC. Бинарник живёт на Pouet-е.
Это CGA!!! Я когда ЭТО увидел, просто выпал в осадок!!!
Это CGA!!! Я когда ЭТО увидел, просто выпал в осадок!!!
Это очень интересно было прочитать! Взахлёб прочитал!
Отличная статья. Случайно наткнулся. Пока читал, забыл, что изначально гуглил ))
Sign up to leave a comment.
IBM PC своими руками — это очень просто