Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:learning_msx_machine_code:learning_msx_machine_code [2021-04-29 10:34] GreyWolf [Кривая обучаемости] |
msx:learning_msx_machine_code:learning_msx_machine_code [2022-09-09 22:33] (текущий) GreyWolf |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Изучение машинного кода MSX (Learning MSX machine code) ====== | ====== Изучение машинного кода MSX (Learning MSX machine code) ====== | ||
- | Перевод этого материала: [[https://learningmsxmachinecode.blogspot.com|Blog : Learning MSX machine code]] | + | <WRAP center round box 60%> |
+ | Данная статья является переводом материала [[https://learningmsxmachinecode.blogspot.com|Blog : Learning MSX machine code]] | ||
+ | |||
+ | Некоторые части оригинального материала опущены или заменены. | ||
+ | </WRAP> | ||
FIXME | FIXME | ||
Строка 14: | Строка 18: | ||
Что ж… это хороший вопрос. Лучшая причина: просто для удовольствия. Вы не заработаете денег, изучив это, вы не получите с этим работу. Вы должны делать это, потому что вам это нравится, в качестве хобби. Для меня, человека, которому почти 50 лет, компьютеры MSX — это ностальгия. Я получил компьютер [[msx:msx_1|]] в восьмидесятых, когда мне было около 12 лет, и он мне очень понравился. Не только для игр, но и для написания собственных программ. Я изучил [[msx:basic:|]], читая компьютерные руководства, компьютерные книги и журналы. Это был мой первый язык программирования, и через некоторое время я достаточно хорошо овладел им, чтобы создавать (простые) программы, такие как текстовое приключение(квест), простая игра с графикой или редактор спрайтов. | Что ж… это хороший вопрос. Лучшая причина: просто для удовольствия. Вы не заработаете денег, изучив это, вы не получите с этим работу. Вы должны делать это, потому что вам это нравится, в качестве хобби. Для меня, человека, которому почти 50 лет, компьютеры MSX — это ностальгия. Я получил компьютер [[msx:msx_1|]] в восьмидесятых, когда мне было около 12 лет, и он мне очень понравился. Не только для игр, но и для написания собственных программ. Я изучил [[msx:basic:|]], читая компьютерные руководства, компьютерные книги и журналы. Это был мой первый язык программирования, и через некоторое время я достаточно хорошо овладел им, чтобы создавать (простые) программы, такие как текстовое приключение(квест), простая игра с графикой или редактор спрайтов. | ||
- | Когда я стал старше, я потерял интерес к компьютеру MSX. Я купил другой, более быстрый компьютер и продолжал увлекаться программированием как хобби, изучая новые языки, такие как Pascal, Actionscript, Javascript и Python. В какой–то момент продал свой старый [[msx:msx_1|]]. Так уж обстоят дела, но, тем не менее, MSX по–прежнему для меня особенный. Когда я вижу в продаже старый компьютер MSX, мне всегда интересно, и я хочу его купить. То же самое и с книгами по MSX, журналами, играми и прочим. Я не покупаю его, потому что знаю, что на самом деле не собираюсь его использовать. К счастью, сейчас есть эмуляторы, и время от времени я играю в некоторые из моих любимых старых игр для MSX, например, Kings Valley или Boulderdash. | + | Когда я стал старше, я потерял интерес к компьютеру MSX. Я купил другой, более быстрый компьютер и продолжал увлекаться программированием как хобби, изучая новые языки, такие как [[pascal-programming_language:pascal-programming_language|Pascal]], Actionscript, Javascript и [[python:python|Python]]. В какой–то момент продал свой старый [[msx:msx_1|]]. Так уж обстоят дела, но, тем не менее, MSX по–прежнему для меня особенный. Когда я вижу в продаже старый компьютер MSX, мне всегда интересно, и я хочу его купить. То же самое и с книгами по MSX, журналами, играми и прочим. Я не покупаю его, потому что знаю, что на самом деле не собираюсь его использовать. К счастью, сейчас есть эмуляторы, и время от времени я играю в некоторые из моих любимых старых игр для MSX, например, Kings Valley или Boulderdash. |
- | Так почему я хочу вернуться к теме программирования на MSX и особенно программированию машинного кода? Просто потому, что это было для меня слишком трудным, когда мне было 12–13 лет. Я прочитал книгу и несколько статей о машинном коде, но не смог понять это. Я немного напортачил с изменением видеопамяти моего MSX с помощью команды ''[[msx:basic_programming_guide:11#vpoke|VPOKE]]'' в [[msx:basic:|]], которая дала некоторые забавные графические эффекты, но я не мог понять, как это на самом деле работает. В то время не было Интернета, чтобы получить информацию или задать вопросы на форуме, поэтому я придерживался [[msx:basic:|]]. В настоящее время доступно много информации, и я хочу посмотреть, смогу ли я научиться этому. Просто для развлечения ;-) | + | Так почему я хочу вернуться к теме программирования на MSX и особенно программированию машинного кода? Просто потому, что это было для меня слишком трудным, когда мне было 12–13 лет. Я прочитал книгу и несколько статей о машинном коде, но не смог понять это. Я немного напортачил с изменением видеопамяти моего MSX с помощью команды ''[[msx:basic_dialogue_programming_language:011#vpoke|VPOKE]]'' в [[msx:basic:|]], которая дала некоторые забавные графические эффекты, но я не мог понять, как это на самом деле работает. В то время не было Интернета, чтобы получить информацию или задать вопросы на форуме, поэтому я придерживался [[msx:basic:|]]. В настоящее время доступно много информации, и я хочу посмотреть, смогу ли я научиться этому. Просто для развлечения ;-) |
- | ===== Кривая обучаемости ===== | + | ===== Кривая обучения ===== |
Как я уже говорил, машинный код — не самая простая вещь для изучения. Машинный код сам по себе на самом деле довольно прост и понятен, но для выполнения задач вам понадобится много коротких инструкций, а также немало технических знаний компьютера. Например, возьмем простую задачу, такую как отображение текста на экране. В [[msx:basic:|]] это можно сделать, просто введя простую команду и нажав <key>'Ввод '⏎</key>: | Как я уже говорил, машинный код — не самая простая вещь для изучения. Машинный код сам по себе на самом деле довольно прост и понятен, но для выполнения задач вам понадобится много коротких инструкций, а также немало технических знаний компьютера. Например, возьмем простую задачу, такую как отображение текста на экране. В [[msx:basic:|]] это можно сделать, просто введя простую команду и нажав <key>'Ввод '⏎</key>: | ||
Строка 24: | Строка 28: | ||
print "Hello world! | print "Hello world! | ||
</code> | </code> | ||
- | {{image_001.png|}} | + | {{helloworldmsx1.png|}} |
+ | /* {{image_001.png|}} */ | ||
Но с машинным языком (который используется для создания машинного кода) это будет выглядеть примерно так: | Но с машинным языком (который используется для создания машинного кода) это будет выглядеть примерно так: | ||
Строка 51: | Строка 56: | ||
После написания этой программы в редакторе вам необходимо перевести (собрать) её в машинный код, затем перенести на свой компьютер или эмулятор, загрузить и выполнить. Это в конечном итоге даёт тот же результат: | После написания этой программы в редакторе вам необходимо перевести (собрать) её в машинный код, затем перенести на свой компьютер или эмулятор, загрузить и выполнить. Это в конечном итоге даёт тот же результат: | ||
- | \\ {{image_002.png|}} | + | \\ {{:msx:learning_msx_machine_code:001.bin|}} |
+ | \\ [[+tab|wmsx>?DISK_FILES=/_media/msx/learning_msx_machine_code/001.bin&BASIC_BRUN=001.bin|Открыть в WebMSX]] | ||
+ | |||
+ | /* \\ {{HelloWorldMSX1Asm.png|}}*/ | ||
+ | /* {{image_002.png|}} */ | ||
А что будет, если в вашей программе будет ошибка? Если вы ошиблись в [[msx:basic:|]], вы получите сообщение об ошибке. Просто выясните, что пошло не так, устраните проблему и попробуйте еще раз: | А что будет, если в вашей программе будет ошибка? Если вы ошиблись в [[msx:basic:|]], вы получите сообщение об ошибке. Просто выясните, что пошло не так, устраните проблему и попробуйте еще раз: | ||
- | \\ {{image_003.png|}} | + | \\ {{syntaxerrormsx1.png|}} |
+ | /* {{image_003.png|}} */ | ||
Но если в вашей программе машинного кода есть ошибка, не так очевидно, что пошло не так. Ваш компьютер может просто выйти из строя. Удачи с этим ;-) | Но если в вашей программе машинного кода есть ошибка, не так очевидно, что пошло не так. Ваш компьютер может просто выйти из строя. Удачи с этим ;-) | ||
Строка 61: | Строка 71: | ||
- Скорость \\ Машинный код намного быстрее, чем [[msx:basic:|]], который сначала должен быть «переведен» в машинный код, прежде чем он может быть выполнен. Вы не можете написать быструю графическую игру на [[msx:basic:|]]. Для этого вам действительно нужен (некоторый) машинный код. | - Скорость \\ Машинный код намного быстрее, чем [[msx:basic:|]], который сначала должен быть «переведен» в машинный код, прежде чем он может быть выполнен. Вы не можете написать быструю графическую игру на [[msx:basic:|]]. Для этого вам действительно нужен (некоторый) машинный код. | ||
- Управляемость \\ Всё, что может предложить компьютер, можно получить с помощью машинного кода. В языках программирования высокого уровня нет всех тех возможностей, которые есть в машинном коде. Машинный код даёт вам полный контроль. | - Управляемость \\ Всё, что может предложить компьютер, можно получить с помощью машинного кода. В языках программирования высокого уровня нет всех тех возможностей, которые есть в машинном коде. Машинный код даёт вам полный контроль. | ||
+ | |||
+ | ===== А что сейчас? ===== | ||
+ | |||
+ | На данный момент я настоящий новичок в машинном коде. Я собрал много информации (веб–сайты, документы, книги, …), я довольно много читал об этом и даже пробовал кое–что. Это очень маленький шаг в мире машинного кода. Итак, как этот материал может помочь кому–то изучить машинный код MSX? У этого материала две цели: | ||
+ | - Для меня это способ документировать процесс моего обучения, чтобы я мог хранить всю эту информацию на будущее. | ||
+ | - FIXME (For the reader it hopefully provides information to start creating MSX machine code with a slightly less steep learning curve. You can it learn together with me.) \\ Надеюсь, что читатель представляет информацию для начала создания машинного кода MSX с немного менее крутой кривой обучения. Вы можете научиться этому вместе со мной. | ||
+ | |||
+ | Не ждите быстрых результатов с самого начала. Этот материал (пока) не посвящен созданию полнофункциональной графической экшн–игры с классной музыкой и звуковыми эффектами. Нет, это больше о том, чтобы заставить компьютер пищать, выводя на экран один символ. Речь идет о понимании основ. Но я могу сказать вам, что даже просто услышать звуковой сигнал, созданный машинным кодом, созданным вручную, может быть очень приятным… ;-) | ||
FIXME | FIXME | ||
+ | |||
====== Ссылки ====== | ====== Ссылки ====== |