PDA

Просмотр полной версии : Программирование на языке Assembler для ZX Spectrum. Подробное руководство.



CityAceE
24.08.2017, 13:05
На нашем форуме постоянно всплывают те или иные темы, которые затрагивают вопросы программирования на ZX Spectrum. Естественно, чтобы написать более-менее серьёзную игру или программу, её нужно будет писать на ассемблере. В своё время ассемблер для кого-то стал непреодолимым барьером. И судя по всему люди до сих пор не теряют надежды всё-таки освоить этот язык. К сожалению, единственной стоящей книгой по этому языку является Инфоркомовское издание. Соглашусь, что книга, наверное, действительно лучшая из того, что издавалось (сам же я учился по Ларченко и Родионову). Но, как мне кажется, сегодня, если учесть весь накопленный сообществом опыт, можно было бы создать куда более крутую книгу! У нас на форуме есть никак не менее десятка виртуозов кода Z80. Почему бы им не поделиться своими знаниями и умениями с остальными и совместными усилиями не написать книгу, заголовок который вынесен в топик? Слава богу, сегодняшние технологии позволяют работать единой сплочённой командой, каждый член которой может находится в разных уголках нашей планеты. Я хочу совместными усилиями родить книгу, которую я сам бы хотел иметь лет 25 назад.

Кто что думает по этому поводу?

Shiny
24.08.2017, 13:15
Наблюдал на одном форуме, где люди ищут книгу по ассемблеру z80. Причем, странным оказался тот момент,. что человек не понимал адресации, но сам утверждал, что знает х86.

Книга нужна, но с некоторыми подробностями плюс отдельный раздел, назовем CodeGems. а в приложение не помешает эмулятор z80 и ассемблеры.

Себя "виртуозом" не считаю, после знакомства с Атари и 6502 переход на Спектрум и z80 прошел безболезненно.

CityAceE
24.08.2017, 14:42
а в приложение не помешает эмулятор z80 и ассемблеры.
Я считаю, что отдельный раздел в такой книге где-то в самом начале нужно посвятить настройке рабочего окружения. При чём нужно подробнейшим образом рассказать, как настроить окружение для разработки на ассемблере на реальном ZX Spectrum и обязательно на PC с использованием кросс-ассемблера и эмулятора.

ZX_NOVOSIB
24.08.2017, 16:34
Перед изучением программирования на асме для спектрума неплохо бы понимать принципы функционирования самого спектрума. Т.е. сначала надо понять, как это вообще всё работает, как формируется картинка, как и в виде чего она поступает на видеовыход, как потом телевизор "расшифровывает" эту картинку, как понимает что и где ему рисовать лучом на люминофоре. Т.е. от А до Я. Желательно языком понятным даже для детей. И только потом уже можно изучать асм.

Это как с игрой на гитаре. Можно конечно просто сказать: ставь пальцы так, это будет "А эм", а теперь вот так, это будет "С", а теперь давай "Белый снег, серый лёд, На растрескавшейся земле...". И это сработает, в какой-то степени. Но гораздо лучше сначала объяснить теорию. Что такое звук, как он зарождается. Как зависит частота колебания струны от её длины, от натяжения. Интервалы. Что такое минор и мажор. Что С - это не эс и не цэ, а до ))) Что такое доминанта, субдоминанта, тоника... ну и т.д. И это будет во сто крат лучше.

Так же и со спектрумом. Если сначала понять от А до Я как и что происходит в связке "клавиатура/накопитель -> спектрум-> телевизор", то потом и асм как по маслу зайдёт. А если не понять, то при изучении асма будешь жёстко тупить. Для меня например спектрум - это магический чёрный ящик )))

Spectramine
24.08.2017, 16:56
Перед изучением программирования на асме для спектрума неплохо бы понимать принципы функционирования самого спектрума. Т.е. сначала надо понять, как это вообще всё работает, как формируется картинка, как и в виде чего она поступает на видеовыход, как потом телевизор "расшифровывает" эту картинку, как понимает что и где ему рисовать лучом на люминофоре. Т.е. от А до Я. Желательно языком понятным даже для детей. И только потом уже можно изучать асм.

Это как с игрой на гитаре. Можно конечно просто сказать: ставь пальцы так, это будет "А эм", а теперь вот так, это будет "С", а теперь давай "Белый снег, серый лёд, На растрескавшейся земле...". И это сработает, в какой-то степени. Но гораздо лучше сначала объяснить теорию. Что такое звук, как он зарождается. Как зависит частота колебания струны от её длины, от натяжения. Интервалы. Что такое минор и мажор. Что С - это не эс и не цэ, а до ))) Что такое доминанта, субдоминанта, тоника... ну и т.д. И это будет во сто крат лучше.

Так же и со спектрумом. Если сначала понять от А до Я как и что происходит в связке "клавиатура/накопитель -> спектрум-> телевизор", то потом и асм как по маслу зайдёт. А если не понять, то при изучении асма будешь жёстко тупить. Для меня например спектрум - это магический чёрный ящик )))

Если сначала объяснять теорию, можно потерять читателя. Теория нужна тем, кто уже немного сечет в практике, и хочет систематизировать свои знания. Сначала надо разобраться с программированием вообще. Если шаришь хотя бы в бейсике, понять ассемблер проще. А вот специфические знания о том, как формируется картинка, как телевизор рисует лучем на люминофоре - это уже для особо интересующихся. Подозреваю, что многие профессиональные программисты об этом имеют очень смутное понятие, и не парятся (тем более что лучем на люминофоре это вчерашний день).

Я уж не говорю о тонкостях принципиальной схемы, микросхемах, и т.п. Чтобы программировать на асме, разбираться в этом вообще не обязательно. Подозреваю, что многие программисты имеют смутное представление о функционировании железа, как и наоборот. Каждому интересно своё.

Shiny
24.08.2017, 17:17
А вот специфические знания о том, как формируется картинка, как телевизор рисует лучем на люминофоре - это уже для особо интересующихся. Подозреваю, что многие профессиональные программисты об этом имеют очень смутное понятие, и не парятся (тем более что лучем на люминофоре это вчерашний день).

даладна, о мультиколоре и о сечении лучем знают все(:

ZX_NOVOSIB
24.08.2017, 17:26
weiv, я не имел ввиду, что нужно досконально изучать принципиальную схему спектрума и телевизора, но в общих чертах, упрощённо, схематично нужно осветить всё. С картинками, с примерами, для для детей, для чайников, и для детей-чайников ))

- - - Добавлено - - -


Если сначала объяснять теорию, можно потерять читателя.
А если не объяснять теорию, то читателя можно потерять ещё с большей вероятностью. И если кто-то вдруг сочтёт, что ему не нужна теория, то всегда сможет пропустить теоретическую главу, и перейти сразу к асму )

kgbplus
24.08.2017, 17:42
Чем плохи инфоркомовские книги? Вроде в них все есть. Остальное - практика

Spectramine
24.08.2017, 19:10
даладна, о мультиколоре и о сечении лучем знают все(:

... кто писал демы) А это высший пилотаж. Начинающему достаточно вывести один байт в экранную область, и увидеть наглядные результаты работы.

- - - Добавлено - - -


А если не объяснять теорию, то читателя можно потерять ещё с большей вероятностью. И если кто-то вдруг сочтёт, что ему не нужна теория, то всегда сможет пропустить теоретическую главу, и перейти сразу к асму )

Я не против книжки о том, как функционирует Спектрум, но к программированию на ассемблере эта информация имеет отдаленное отношение. Существующие книги как-то обошлись без данной информации, и не сказать, что сильно потеряли в информативности.

- - - Добавлено - - -


Чем плохи инфоркомовские книги? Вроде в них все есть. Остальное - практика

Да, кому надо, тому достаточно. Ещё одна книжка не помешает, но особо и не поможет, имхо. Вот книга - "Как написать демо" - это была бы сильная вещь. Там надо было бы раскрыть нюансы таймингов, манипуляций со стеком, быстрой арифметики, мультиколоров и других крышесносных демо-эффектов.

Shiny
24.08.2017, 19:14
кто писал демы) А это высший пилотаж. Начинающему достаточно вывести один байт в экранную область, и увидеть наглядные результаты работы.

В любом случае, программирование сведется к созданию программы, будь то игрушка или анимационный ролик. Вот в этом случпе с некоторыми нюансами придется столкнуться.


Вот книга - "Как написать демо" - это была бы сильная вещь.

Думаю, что она никому не нужна.

Denn
24.08.2017, 20:35
Но, как мне кажется, сегодня, если учесть весь накопленный сообществом опыт, можно было бы создать куда более крутую книгу! У нас на форуме есть никак не менее десятка виртуозов кода Z80. Почему бы им не поделиться своими знаниями и умениями с остальными и совместными усилиями не написать книгу, заголовок который вынесен в топик? Слава богу, сегодняшние технологии позволяют работать единой сплочённой командой, каждый член которой может находится в разных уголках нашей планеты.

Основная и глобальная проблема - сегодня никому ничего не надо! Когда за копейки можно купить устройство, в котором под рукой результаты работ лучших команд программистов, то никто ничего делать не будет. И не делает. Сейчас потребление информации такое: глянул быстро по-диагонали, "ага, прикольно", поставил лайк и поплыл перерабатывать информационный мусор дальше.
Эту крутую книгу никто читать не будет, ибо "многабукв", "некогда", незачем и т.п.. И те, кто мог бы её написать, подсознательно это чувствуют, и не хотят попусту тратить время.

П.С. Кстати, скоро ПО будет писать ИИ, для людей это будет считаться непристижной работой. А тут ещё ассемблер какой-то...

Spectramine
24.08.2017, 21:09
Theoretically theory and praxis are the same. - (Practically this is somehow different... )

Теория это "как устроено", практика это "как сделать", так что это не одно и то же.

krt17
24.08.2017, 21:29
Я помню книгу "как написать игру" или что типо такого, сначала думал вот он кладезь, но почитав удивился, как этот шлак растянули на целую книгу. Архитектура спекки с точки зрения программиста проста как 3 копейки, ассемблер z80 интуитивен и понятен, все нюансы типо луча и тактов осваиваются и врастают с первыми шагами, когда до них доходит очередь. Для старта нужна только базовая инфа по архитектуре и процу, у кого есть интерес он пойдет дальше уже сам и книга лишь замедлит прогресс. Это кстати подтверждается и работами как наших ребят так и иностранцев. У кого есть желание кодить освоит все достаточно быстро, у кого нет к этому тяги остановиться на AGD, там тоже куча кропотливой работы только уже без кода на низком уровне.
По демо книга вообще бесполезна, 90% эффектов это 10-50 байт основного цикла + таблички, этому не научишь, только сам. Да и единственный хороший кодер на спекки как то не активен последнее время, но глядишь добьет свой недоланг и еще порадует нас.
Оффтоп. На восе вроде недавно была забавная тема, лучший ассемблер и эмуль для отладки, джерри им честно сказал sjasm+unreal, теоретиков разорвало, не спорю кто то уже врос в пасмо и фьюз, но когда в качестве аргументов сложность управления горячими клавишами и встроенные макросы типа exa перестаешь серьезно воспринимать дискуссию.

Shiny
25.08.2017, 03:28
у Fuse отладчик убогий. у унрыла - полный отстой. да и эмуляция GS оставляет желать лучшего.



П.С. Кстати, скоро ПО будет писать ИИ, для людей это будет считаться непристижной работой.

полная утопия.

CityAceE
25.08.2017, 03:29
Перед изучением программирования на асме для спектрума неплохо бы понимать принципы функционирования самого спектрума.
Не надо! Всё в процессе. Например, вначале объясняем про регистры, показываем как помещать информацию в регистры и перекидывать её из регистра в регистр. Потом показываем, что будет если перекинуть информацию в видео ОЗУ и тут же объясняем, что произошло и почему. Ну и по всем остальным вопросам так. Так же с лёгкостью можно и про мультиколор в процессе рассказать.

Но чтобы книга была написана, нужно для начала составить её план, основываясь на потребности реальных пользователей. И, соответственно, нужно чтобы эти потенциальные читатели высказались, чего бы они хотели увидеть в этой книге.

Shiny
25.08.2017, 08:24
Смешные люди на ФБ, проверка В на 0 вызвала массу вопросов:

inc b
dec b

shurik-ua
25.08.2017, 10:46
Смешные люди на ФБ, проверка В на 0 вызвала массу вопросов:

inc b
dec b

djnz ж удобнее ?

Shiny
25.08.2017, 11:02
:v2_dizzy_facepalm:

shurik-ua
25.08.2017, 11:56
с djnz всяко на 1 байт короче выйдет - хочу увидеть пример где djnz неприменимо )

Spectramine
25.08.2017, 12:46
djnz сначала делает декремент b, а потом проверяет на ноль. Т.е. мало того, что сравнивает с нулем не b, а b-1 (изначальное значение b), так ещё и имеет побочный эффект (b:=b-1). Тогда уже
inc b
djnz

djnz к тому же неприменимо, если нужен а) переход по b=0; b) длинный переход за проверкой; c) условный вызов процедуры.
Ну и иногда нужно просто проверить на ноль, без перехода после этого - только выставить флаги. Например, если за проверкой идет вызов процедуры, проверяющей флаг уже внутри себя.

Shiny
25.08.2017, 12:53
готовьтесь, ребята.

shurik-ua
25.08.2017, 13:14
так я понял что проверять B на ноль бывает нужно без предварительного декремента, например при проверке элементов массива на ноль, а регистр А уже занят )

Ну и иногда нужно просто проверить на ноль, без перехода после этого - только выставить флаги. Например, если за проверкой идет вызов процедуры, проверяющей флаг уже внутри себя.
от такого кода может самого стошнить (не говоря уже о других) при чтении через год своего же кода.

Spectramine
25.08.2017, 13:33
так я понял что проверять B на ноль бывает нужно без предварительного декремента, например при проверке элементов массива на ноль, а регистр А уже занят ) Ещё раз, djnz не проверяет b на ноль, она проверяет на ноль b-1. Т.е. подходит для проверки элементов массива на 1, а не на 0. Проверить регистр b (и любой РОН Z80) на ноль без команд инкремента/декремента и использования аккумулятора вообще невозможно (разве что проверяя каждый бит по отдельности.) upd. соврал, можно использовать команды ротации.


от такого кода может самого стошнить (не говоря уже о других) при чтении через год своего же кода.

Почему, довольно часто процедуры используют флаги в качестве входных параметров. Это обычная практика.

PATHNK
25.08.2017, 15:25
Но, как мне кажется, сегодня, если учесть весь накопленный сообществом опыт, можно было бы создать куда более крутую книгу!
Ну так создавайте.


Я хочу совместными усилиями родить книгу, которую я сам бы хотел иметь лет 25 назад.
Вся проблема в том, что пока у одного человека есть импульс к творчеству у других полная тишина. Да и прежде чем призывать кого-то к действию неплохо бы написать пару глав самому, иначе это выглядит как очередное пускание мыльных пузырей.

Shiny
25.08.2017, 16:53
Да и прежде чем призывать кого-то к действию неплохо бы написать пару глав самому, иначе это выглядит как очередное пускание мыльных пузырей

Лучше делать, не дожидаясь этакого скепсиса.

Dimon spb
25.08.2017, 21:24
"ZX Spectrum & TR-DOS для пользователей и программистов" форева! Плюс "Как написать игру на ассемблере". Больше ничего не надо.
Ну, кроме мозга ;)

Alex Rider
26.08.2017, 19:07
У нас на форуме есть никак не менее десятка виртуозов кода Z80. Почему бы им не поделиться своими знаниями и умениями с остальными и совместными усилиями не написать книгу, заголовок который вынесен в топик?
Мой опыт подсказывает, что для того, чтобы написать книгу по кодингу, нужны не виртуозы кода, а виртуозы книги. Умение писать текст важнее умения писать код. Надо уметь а) правильно доносить мысль и б) делать это с удовольствием.

ZX_NOVOSIB
26.08.2017, 19:17
для того, чтобы написать книгу по кодингу, нужны не виртуозы кода, а виртуозы книги.
+100500

CityAceE
27.08.2017, 12:32
Ну так создавайте.
Я бы с удовольствием! И я действительно умею программировать на ассемблере Z80, и даже какие-то программы в своё время написал. Однако уже давно ничего не писал (хотя руки так и чешутся). Но проблема в том, что не смотря ни на что, я не усвоил всех нюансов языка и никак не могу назвать себя виртуозом кода Z80 и гуру. Например, я так и не понял, как эффективно пользоваться альтернативным набором регистров, да и много чего ещё. И если вдруг я соберусь написать такую книгу "от" и "до", то она совершенно точно не станет лучше, чем то, что уже существует. Мой посыл был в том, чтобы собрать группу авторов и как-то подтолкнуть их к коллективному творчеству книгописательства. Я с удовольствием войду в число автором. И помимо этого со своей стороны я готов предложить ещё и техническую поддержку в виде багтрекера, закрытого раздела на этом форуме, Wiki и всего остального.


Вся проблема в том, что пока у одного человека есть импульс к творчеству у других полная тишина.
Да, целиком и полностью согласен. Вот у меня сейчас такой импульс есть, а у всех остальных его нет.


Да и прежде чем призывать кого-то к действию неплохо бы написать пару глав самому, иначе это выглядит как очередное пускание мыльных пузырей.
Для себя я давно и чётко уяснил, что призывать к действию и что-то предварительно обсуждать бесполезно - закидают гнилыми помидорами, разругаются, не придут к единому мнению и всё на этом закончится. Если что-то хочешь, то нужно самому выдавать сразу готовое решение. В своё время так было с этим форумом. Но в данном случае, прежде чем что-то создавать нужно предварительно выяснить, как минимум, два момента:
1. Что именно хотят те, кто нуждается в данной книге.
2. Есть ли среди местных асов ассемблера Z80 те, кто кто готов поделиться своими знаниями.


Мой опыт подсказывает, что для того, чтобы написать книгу по кодингу, нужны не виртуозы кода, а виртуозы книги. Умение писать текст важнее умения писать код. Надо уметь а) правильно доносить мысль и б) делать это с удовольствием.
Я согласен, что язык изложения очень и очень важен. Также очень важно, чтобы книга была написана в едином стиле. Но для начала очень важно совместными усилиями составить план и очень важно, чтобы гуру всё-таки поделились своими знаниями. А уже оформить всё это в грамотный и доходчивый текст - это дело техники. Я даже могу взять это на себя.

Shiny
28.08.2017, 05:30
Если в вики, то я бы поучаствовал

helcril
28.08.2017, 17:29
Чтобы написать книгу лучше чем Ларченко и Родионов, нужно сначала ответить на вопрос а что именно не устраивает в их 'библиях'. Правильно выше сказано, кроме этой книжки нужен только мозг чтобы стать профи. Там все есть и описано русским языком так, что понятнее не напишешь. За 25 лет ничего не изменилось.

Вот тут интересно, какую все-таки книгу автор топика видит в идеале? Тогда можно будет говорить и о том, что не устраивает в "библиях", и о возможных путях сделать лучше и интересней.
Ведь, как мне кажется, каждый подобную книгу видит по-своему.
За себя могу сказать, что я идеальной книги не нашел, и очень хотел бы, чтобы она все-таки появилась. Однако то это не значит, что кому-то еще нужна будет именно такая книга как мне. Кому-то кажется, что ничего кроме Ларченко и Родионова и не нужно вовсе.

OrionExt
28.08.2017, 18:45
Да все уже известно. Остались нюансы на платформе. Хотя ZX кто изучил – все уже понял. Но есть другие платформы:)

Andrew771
29.08.2017, 12:01
Оглавление книги (https://docs.google.com/document/d/1CQZtruOB5aHPXkHbxmW_6UvoWmhzO3puyJDcny9x_uY/edit?pli=1) делали
Библиотеку процедур на вики (http://speccy.info/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D 1%8F:%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0 %BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B 5) и не на вики (http://zxdn.narod.ru/coding.htm) делали
Название книги (http://zx-pk.ru/threads/5670-kakaya-kniga-byla-by-sposobna-stav-populyarnoj-populyarizovat-i-zx.html?p=226498&viewfull=1#post226498) придумывали

Осталось всё завершить :)

Black Cat / Era CG
29.08.2017, 12:25
Неплохое оглавление. Только это уже не книга, а энциклопедия, такой неслабый фолиант.

Andrew771
29.08.2017, 12:43
Книга, мне кажется, утопия. Можно на данный момент ограничиться библиотекой процедур. А для библиотеки процедур моё видение такое (http://zx-pk.ru/threads/19727-biblioteka-nuzhnykh-protsedur-dlya-napisaniya-demo.html?p=528179&viewfull=1#post528179)

Shiny
29.08.2017, 12:46
Оглавление книги делали
Библиотеку процедур на вики и не на вики делали
Название книги придумывали

Осталось всё завершить

где ссылки и где эта книга?

Andrew771
29.08.2017, 12:47
Впрочем, CityAceE возможно имел в виду другое - именно обучение кодированию на продвинутом уровне, а не пользование готовыми процедурами.

Shiny
29.08.2017, 12:47
Можно на данный момент ограничиться библиотекой процедур. А для библиотеки процедур моё видение такое
Там, где буйствует Быстров, там делать нечего.

Andrew771
29.08.2017, 12:48
где ссылки и где эта книга?
всё что сделали за прошедшие годы, я указал. :)

CityAceE
29.08.2017, 13:27
Вот тут интересно, какую все-таки книгу автор топика видит в идеале?
Так получилось, что за последнее время в поле моего зрения попадалось довольно много книг по обучению с нуля различным языкам программирования. Те их них, что мне понравились, строятся примерно по одному плану и методика подачи материала, ну, в корне отличается от того, что у нас есть по Z80. Материал даётся последовательно, шаг за шагом для людей, которые до этого никаким боком не сталкивались с вопросом. В конце каждой главы обязательно приводятся упражнения для закрепления материала. И вот так шаг за шагом, постепенно наращивая знания, преподносится весь материал. И идеале в книге на глазах читателей последовательно создаётся какой-то проект. В нашем случаем можно было бы вместе с читателем написать какой-нибудь Tetirs, Pacman или Galaxians.

Почему я подумал про ассемблер Z80? Потому что, когда я хотел обучить этому языку своего сына, то с помощью существующей литературы у меня это сделать не получилось. Я объяснил ему то, что знаю, он всё тут же понял (например, смог по моему заданию вывести содержимое font'а из ПЗУ на экран), но дальше двинуться применить полученные знания мы с ним так и не смогли. В общем, заинтересовать его развиваться дальше, я так и не смог.

Black Cat / Era CG
29.08.2017, 13:51
Так получилось, что за последнее время в поле моего зрения попадалось довольно много книг по обучению с нуля различным языкам программирования. Те их них, что мне понравились, строятся примерно по одному плану и методика подачи материала, ну, в корне отличается от того, что у нас есть по Z80. Материал даётся последовательно, шаг за шагом для людей, которые до этого никаким боком не сталкивались с вопросом. В конце каждой главы обязательно приводятся упражнения для закрепления материала. И вот так шаг за шагом, постепенно наращивая знания, преподносится весь материал. И идеале в книге на глазах читателей последовательно создаётся какой-то проект. В нашем случаем можно было бы вместе с читателем написать какой-нибудь Tetirs, Pacman или Galaxians.
А разве "Как написать..." не по такому принципу построены? Просто там кое-чего нет, есть очепятки, да и готовый Тетрис в итоге в книгу не вошел.
А разрозненные, оторванные друг от друга, сферические примеры в вакууме, которые принято обычно юзать в подобных пЦ-книгах, только навевают тоску и желание бросить это грязное дело и больше к нему не возвращаться.

Spectramine
29.08.2017, 13:55
Авторы, которые пишут книгу, рассчитывают на какое-то материальное вознаграждение за её публикацию. А писать сейчас книгу о программировании игр на ZX Spectrum - значит писать её для очень узкого круга фанатов. Трудоемкость та же, что и для "как написать игру на PC (или Android)", а вознаграждение - сами понимаете. В лучшем случае признательность пары десятков интересующихся.

Black Cat / Era CG
29.08.2017, 14:27
Джаст4фан же. Как игры/демы пишут.

Shiny
29.08.2017, 15:50
да и готовый Тетрис в итоге в книгу не вошел.

его только ленивый не напишет.

- - - Добавлено - - -


Трудоемкость та же, что и для "как написать игру на PC (или Android)", а вознаграждение - сами понимаете
Неуместное сравнение.

Black Cat / Era CG
29.08.2017, 16:11
его только ленивый не напишет.
Речь о

И вот так шаг за шагом, постепенно наращивая знания, преподносится весь материал. И идеале в книге на глазах читателей последовательно создаётся какой-то проект. В нашем случаем можно было бы вместе с читателем написать какой-нибудь Tetirs, Pacman или Galaxians.
То есть в качестве именно примера. Серьезная игра сама на книгу потянет, тупо размерами листинга.

helcril
29.08.2017, 16:16
Так получилось, что за последнее время в поле моего зрения попадалось довольно много книг по обучению с нуля различным языкам программирования. Те их них, что мне понравились, строятся примерно по одному плану и методика подачи материала, ну, в корне отличается от того, что у нас есть по Z80. Материал даётся последовательно, шаг за шагом для людей, которые до этого никаким боком не сталкивались с вопросом. В конце каждой главы обязательно приводятся упражнения для закрепления материала. И вот так шаг за шагом, постепенно наращивая знания, преподносится весь материал. И идеале в книге на глазах читателей последовательно создаётся какой-то проект. В нашем случаем можно было бы вместе с читателем написать какой-нибудь Tetirs, Pacman или Galaxians.

Вот это, на мой взгляд, и есть идеальная книга для обучения ассемблеру. Очень бы хотел такую хотя бы прочесть. В принципе я видел подобное для x86 и DOS, это книга Олега Калашникова (хоть там и не об играх совсем). Возможно знающие люди ее раскритикуют, но мне, как человеку несведующему очень понравилось.
Так же хороша и обучалка от Джонатана Коулдвелла, перевод которой, я, к сожалению так и не смог закончить. Но она скорее именно о том, как написать игру, а не о кодинге на ассемблере в принципе.

Shiny
29.08.2017, 17:38
о5 25 (: вся суть материала - создание игр.

Andrew771
30.08.2017, 09:54
Почему я подумал про ассемблер Z80? Потому что, когда я хотел обучить этому языку своего сына, то с помощью существующей литературы у меня это сделать не получилось.
Нескромный вопрос, а зачем современное дитя учить ассемблеру для давно устаревшего компьютера? Лучше уж тогда ассемблеру сразу для PC, это точно может пригодиться. Или, если сложно, начинать с какого-нибудь JavaScript/Pithon.


А разве "Как написать..." не по такому принципу построены? Просто там кое-чего нет, есть очепятки, да и готовый Тетрис в итоге в книгу не вошел.
А разрозненные, оторванные друг от друга, сферические примеры в вакууме, которые принято обычно юзать в подобных пЦ-книгах, только навевают тоску и желание бросить это грязное дело и больше к нему не возвращаться.
Тоже считаю эту книгу удобной для обучения с нуля (я по ней как раз учился). А в одном Тетрисе/Пэкмане не получится показать все возможности, так что приходится разрозненные примеры. В этой книге примеры как раз из возможных игр.

Black Cat / Era CG
30.08.2017, 10:15
А в одном Тетрисе/Пэкмане не получится показать все возможности, так что приходится разрозненные примеры. В этой книге примеры как раз из возможных игр.
Все возможное ваще не выйдет уместить в книгу :) Само собой и разрозненное относительно что-то должно быть, но... какбэ это сказать... с минимальным отрывом от реальности. А законченный готовый проект, пусть и простой - это очень полезная психологическая фича.

Shiny
30.08.2017, 11:40
Лучше уж тогда ассемблеру сразу для PC, это точно может пригодиться
Неверно. Слишком трудоемкая разработка. msdos - это старье класса "навоз мамонта". Удобнее посадить на Си со справочником win32api. Хотя, это насилие над детьми (:


Нескромный вопрос, а зачем современное дитя учить ассемблеру для давно устаревшего компьютера?
Все проще со старыми компьютерами. Сын ознакомился с Атари, поиграл в игрушки, начал изучать Бейсик. Сейчас никаких проблем с изучением программирования нет пока.

Alex Rider
31.08.2017, 16:08
а зачем современное дитя учить ассемблеру для давно устаревшего компьютера?

добнее посадить на Си со справочником win32api. Хотя, это насилие над детьми (:
А очень просто. 90% современных программистов не понимает как работает стек, что такое указатель, передача параметров по ссылке, что происходит при вызове деструкторов, зачем надо закрывать файлы и все такое. Да, я согласен, разработчику пользовательского интерфейса сайта можно прожить без этих знаний. Но эти самые разработчики вырастают до техлидов, разработчиков ядра, переходят со своим таким вот опытом работы на дргуие проекты... И постепенно становится некому оптимизировать и отлаживать на низком уровне. Кроме того, традиционно разработчик встраиваемых систем (нативные языки, ассемблер) - тоже хлебное место с низкой конкуренцией. А С/С++ без ассемблера (считай, понимания работы процессора) неглубоко заходят. Z80 + Спектрум хороши тем, что на них на ассемблере можно за приемлемое время написать на ассемблере что-то работающее, законченное. На 8086 тоже можно, а вот напсиать что-то реально интересное на ассемблере под Win32... Не уверен.

Shiny
31.08.2017, 16:22
https://www.youtube.com/watch?v=qBan2wtuR20
Похожая шляпа написана вроде бы на ассемблере, наткнулся на исходник, когда музон выдирал.
Под win32 писать очень трудоемко - посмотреть, как вызывается функция, пошуровать со структурами, нудно. в PureBasic удобнее - функции и структуры и справка есть, отладчик работает.

На Спектруме с помощью ассемблера можно писать до посинения, вряд ли что-то испортишь - диски там и прочее.

Sinner
08.09.2017, 03:51
OK. Вопрос, для кого книга.

Попробуем сформулировать.

Для начала - глупо начинать изучать Ассемблер, не зная языков программирования высокого уровня. У читателя должны быть базовые знания о Spectrum Basic 48 и 128 - знания относительно развитые, он должен сделать что-то на Spectrum Basic, пусть и не очень сложное. Это минимум. Читатель может иметь опыт работы с другими языками высокого уровня (процедурно-ориентированными, объектно-ориентированными и т.п.) на современных платформах, знать ассемблеры и системы команд для других семейств процессоров, но авторы не должны на это рассчитывать. Минимум - BASIC (и именно Спектрум-бейсик, а не иную реализацию).

Далее. Если читатель знаком со Spectrum Basic 48, Значит, этот человек должен был видеть реальную или/и виртуальную спектрумовскую клавиатуру, знать назначение клавиш, загружать программы, играть.

Я не знаю Ассемблер. Всё нет времени изучить. Но каждый пользователь бытового компьютера ZX Spectrum должен знать BASIC, ибо Бейсик - операционная система таких компьютеров. IMHO, я владею Спектрум-бейсиком на достаточном уровне, чтобы начать изучать Ассемблер. Тут (http://zx-pk.ru/threads/26938-mashkod-iz-bejsika.html?p=895224&viewfull=1#post895224) пост, позволяющий оценить моё, пусть совсем НЕ высокое, но знакомство с предметом.

Какие требования предъявить к читателю во Введении или Первой Главе книги? Ну, если он пришёл, значит он, КАК МИНИМУМ, где-то видел Спектрум или другой бытовой компьютер сходного поколения и возможностей. Если вдруг он помнит его смутно - надо:

а) посоветовать ему эмуляторы ZX Spectrum для распространённых платформ и ссылки на описания к ним. Сами эти описания не надо включать в книгу. Но надо дать точное указание, где найти описания эмуляторов. А в самой книге можно очень кратко напомнить, как самые распространённые зарубежные и отечественные модели Спектрумов подключались к телевизорам и мониторам, как сохраняли информацию на энергонезависимые носители: кассеты, дискеты, микродрайвы. Также указать списки ключевых игр, демо, музыки (каждый из 10 - 30 наименований), чтобы читатель вспомнил спектрумовкую культуру и возможности платформы.

б) когда читатель наигрался с эмуляторами - должен изучить Spectrum Basic (если ещё не). Надо дать список руководств для его изучения. Я восстанавливал навыки в прошлом году по "Диалекты Бейсика для ZX Spectrum" и "Как написать игру для ZX Spectrum" (на языке Бейсик) издательства Питер. Но я не могу назвать "Диалекты" удобным начальным руководством - книга не бесспорная. Для СОВСЕМ новичка нужно посоветовать что-то другое. Когда новичок будет полностью понимать листинг программы "Бомбы" или "Сокобан" из "Как написать игру для ZX Spectrum", IMHO - только тогда с ним можно работать дальше.


И напоследок.
В книге можно вкратце описать нюансы, "подводные камни" программирования для разных машин: классика ZX Spectrum 16, ZX Spectrum 48, ZX Spectrum+, ZX Spectrum 128, ZX Spectrum +2, ZX Spectrum +3. Также Pentagon и ZS Scorpion 256 - как самые известные российские клоны. Думаю, не имеет смысла также описывать сотни нераспространённых клонов, вроде Kay, Sprinter, ATM и т.п. (извините, если не прав). Но при этом надо рассмотреть нынешний, модный не только в России, Next, его дополнительные возможности и связанные с ним программистские трудности.)
Также можно вкратце описать западные Timex и SAM Coupe.

Описать работу с шиной ZX Bus, картриджами.

В ближайшие года, как минимум, полтора, у меня нет времени изучать Ассемблер и серьёзно работать со Спектрумом. Но ведь и книга быстро не напишется. Возможно, что я её читатель.

- - - Добавлено - - -

И напоследок. Если охота превзойти авторов старых книг, может быть имеет смысл попереводить что-то иноязычное: английское, испанское, польское и т.п. Как они пишут, не код даже - код можно глянуть, а книги, как обучают, имеют ли в этом свою "фишку". Иначе есть риск, что программисты просто перескажут стереотипные книги, по каким сами учились, но своими словами, с незначительными обновлениями и правками. :) И смысла тратить силы на новое - конспект старого - не будет.

Shiny
08.09.2017, 04:58
Для начала - глупо начинать изучать Ассемблер, не зная языков программирования высокого уровня
Угу. Можно бесконечно писать игры на Бейсике, но в определенный момент ассемблер переплюнет возможности Бейсика - к этому выводу придешь сам.


Также можно вкратце описать западные Timex и SAM Coupe

не нужно "вкратце". по Sam Coupe инфы мало.

kas29
08.09.2017, 20:48
Перед изучением программирования на асме для спектрума неплохо бы понимать принципы функционирования самого спектрума. Т.е. сначала надо понять, как это вообще всё работает, как формируется картинка, как и в виде чего она поступает на видеовыход, как потом телевизор "расшифровывает" эту картинку, как понимает что и где ему рисовать лучом на люминофоре. Т.е. от А до Я. Желательно языком понятным даже для детей. И только потом уже можно изучать асм.

Это как с игрой на гитаре. Можно конечно просто сказать: ставь пальцы так, это будет "А эм", а теперь вот так, это будет "С", а теперь давай "Белый снег, серый лёд, На растрескавшейся земле...". И это сработает, в какой-то степени. Но гораздо лучше сначала объяснить теорию. Что такое звук, как он зарождается. Как зависит частота колебания струны от её длины, от натяжения. Интервалы. Что такое минор и мажор. Что С - это не эс и не цэ, а до ))) Что такое доминанта, субдоминанта, тоника... ну и т.д. И это будет во сто крат лучше.

Так же и со спектрумом. Если сначала понять от А до Я как и что происходит в связке "клавиатура/накопитель -> спектрум-> телевизор", то потом и асм как по маслу зайдёт. А если не понять, то при изучении асма будешь жёстко тупить. Для меня например спектрум - это магический чёрный ящик )))

ZX_NOVOSIB, что-то вроде вот этого...? https://pbs.twimg.com/media/C6JuwAOXQAAqCKn.jpg
https://disk.yandex.ru/client/disk

Может для начала тогда перевести эту книгу?
А затем по такому же принципу и продолжение делать...

Shiny
09.09.2017, 10:10
Может для начала тогда перевести эту книгу?
А затем по такому же принципу и продолжение делать...

да-да и с Zaks'ом объединить (:

ZX_NOVOSIB
09.09.2017, 11:27
Может для начала тогда перевести эту книгу?
А затем по такому же принципу и продолжение делать...
Выглядит интересненько )) Ссылка правда не рабочая у тебя на яндекс. Перевести было бы неплохо, ведь чем больше инфы - тем лучше (тем более если эта инфа с картинками)))) Только где взять переводчика?..

goodboy
09.09.2017, 12:10
https://drive.google.com/open?id=0Bxv0SsvibDMTcHNXalEtYkVtU00
картинок там действительно много,
но конкретно про программирование инфы мало,
скорее общие сведения про систему команд/работу процессора

Sinner
09.09.2017, 14:37
Буду обращаться на "ты", а не на "Вы". Предполагается, что мы все здесь товарищи.

2 CityAceE
Набралось много новых комментариев, будет время - прокомментируй пожалуйста.

- - - Добавлено - - -


Imho, ещё одна книга про ассемблер не нужна: их и так достаточно, а трудозатраты на написание просто чудовищные.

2 SaNcheZ

Да говоря прагматично и цинично - вообще ничего на Спектруме не нужно. Малая аудитория, ещё меньшая вероятность заработать деньги. Время, затрачиваемое на Спектрум, можно потратить на что-то другое: отдыхать на югах, дегустировать вина, заниматься спортом, совращать студенток, собирать грибы и рыбачить по всей России (Украине, Белоруссии - кто откуда) и т.п. Однако мы все здесь зачем-то собрались.

О книге. Когда человек пишет книгу или набор статей, он систематизирует свои знания и собирает дополнительную информацию, сам изучает предмет более глубоко. Игры, демо, книги по Спектруму пишут в первую очередь для себя.

- - - Добавлено - - -

Кстати, когда изучаешь программирование (любое) всегда лучше работать параллельно с двумя-тремя книгами. Так что лишних книг не бывает.

Shiny
09.09.2017, 14:38
Вот что, как мне кажется, нужно написать, так это книгу по геймдизайну, с разбором хороших и не очень спектрумовских игр, с объяснением, почему лучше написать игру для спектрума, чем миллионую для pc

Сравнение неуместно: для подростка пейси доступнее, быстрее и краше, чем Спектрум.

А если писать подобную книгу, то автор накопит столько сведений. что начнет зарабатывать на обучении, чем на создании игр.

И вообще, прежде чем говорить, что книга не нужна, не лучше ли начать коллективную работу?

Sinner
09.09.2017, 14:42
Том Первый.
CityAceE сотоварищи. "Программирование на языке Assembler для ZX Spectrum. Подробное руководство.".

Том Второй.
SaNchez сотоварищи. "Удачный игровой дизайн на платформе ZX Spectrum." ??????????????? ;):v2_dizzy_roll:

PATHNK
09.09.2017, 14:48
... с объяснением, почему лучше написать игру для спектрума, чем миллионую для pc.
Серьезно? :) Ну тогда "объясните".

Sinner
09.09.2017, 14:58
Хмм, вырванная из контекста фраза действительно тупо звучит. Но я совсем другое имел ввиду. Для кого писать книгу? Для нового поколения. Какого хуана новому поколению сдался спектрум? Как стартовая площадка для проверки на вшивость. Это как для начинающего режиссёра снять классическую чёрно-белую короткометражку.

Мало таких будет, молодых программистов-историков.

Почему здесь многие что-то делают? Потому что 10 - 20 - 25 лет назад не хватило времени реализовать мечту: сделать игру/демо для ZX Spectrum. По принципу "лучше поздно, чем никогда".
И книги им не помешают. Даже новые.

Почему здесь многие так ничего и не делают? До сих пор не имеют времени: основная работа, семья, ухудшение здоровья. У кого что.

Наверно так.

Sinner
09.09.2017, 15:38
Возможно. Но писать книгу для 40-50 летних мужиков, это imho тот ещё подвиг. Проще в темах на конкретные вопросы отвечать. Мне кажется, если начинать такой глобальный труд, то хоть цель себе ставить соответствующую.

Ну, мне ещё не 40. Скорее, что аудитория 29-50.

По теме. Ещё раз процитирую себя.



О книге. Когда человек пишет книгу или набор статей, он систематизирует свои знания и собирает дополнительную информацию, сам изучает предмет более глубоко. Игры, демо, книги по Спектруму пишут в первую очередь для себя.

Кстати, когда изучаешь программирование (любое) всегда лучше работать параллельно с двумя-тремя книгами. Так что лишних книг не бывает.

CityAceE её для себя, по-ходу, пишет. Это называется "вдохновение". ;) Сам знаешь, творишь ведь. )

- - - Добавлено - - -

Вот скажи мне, кому нужны демы? В игры хоть играют. А демы раза три посмотрят. А работы там - огогого. Себе, себе вызов бросают. Так и с книгой.

- - - Добавлено - - -


ZX_NOVOSIB, что-то вроде вот этого...? https://pbs.twimg.com/media/C6JuwAOXQAAqCKn.jpg
https://disk.yandex.ru/client/disk

Может для начала тогда перевести эту книгу?
А затем по такому же принципу и продолжение делать...

У старых книг, кроме перечисленных CityAceE, есть ещё один недостаток: изначально нужно было написать недорогую, не очень толстую книжку в мягкой обложке. Делая сейчас PDF, можно писать сколь угодно подробно, с большим числом примеров, часть из которых можно и вовсе свести в отдельный trd-файл.

И, да - можно использовать переводы и листинги из зарубежных книг, в 90-ые нам не доступных.

Sinner
09.09.2017, 16:20
Программистов и так дофига, и спектрум им нафиг не нужен, а вот геймдизайнеров мало, и вот как раз их можно заинтересовать.

С дизайном, как и с программированием, у тебя полный порядок.


Том Первый.
CityAceE сотоварищи. "Программирование на языке Assembler для ZX Spectrum. Подробное руководство.".

Том Второй.
SaNchez сотоварищи. "Удачный игровой дизайн на платформе ZX Spectrum." ??????????????? ;):v2_dizzy_roll:

Даёшь книгу? ))

OrionExt
09.09.2017, 16:31
Ну, вы даете:D Книг полно. Кому интересно на русском, английском, итальянском, арабском и папускаком. Было бы желание.

Вот толковых книг мало, это да.

Shiny
09.09.2017, 16:31
Почему здесь многие что-то делают? Потому что 10 - 20 - 25 лет назад не хватило времени реализовать мечту: сделать игру/демо для ZX Spectrum. По принципу "лучше поздно, чем никогда".
И книги им не помешают. Даже новые.

Да ладно. Демы были давно сделаны, игра "Сталкер" начата давно и заброшена.

Shiny
09.09.2017, 16:34
Вот толковых книг мало, это да

А какие "толковые"? Любое программирование начинается со знакомства с процом и с железом.
А потом можно сесть за комп и не пытаться выдавить из себя "шыдевр".

Sinner
12.04.2018, 14:30
Жив проект? Закрыт?