Ооо! Зер гӱт, сам давно хотел написать что-то подобное, но всё руки не доходили. Но зато тепер с чистой душой можно рассказать о создании своей интры ;)
Да, сам указатель стека 8-битный, старшая часть адреса всегда $01. В ц64-демах весьма редко встречаются трюки со стеком, я видел только запушивание данных в табличку, которая потом использовалась как, собственно, табличка.
На одинаковой тактовой частоте 6502 в большинстве задач уделает Z80. Но в комодоре частота даже меньше мегагерца. Кроме того, плотность кода 6502 меньше, чем Z80. Ну и наконец, всё же сильно универсальность 6502 ограничивают zero-page и очко стека. То есть для дем оно ОК, но для, например, ОС — это серьёзное ограничение.
В популярности с64 огромную, если не подавляющую роль играет VIC. Почти каждый демоэффект, особенно если он работает в 50фпс, это тот или иной изврат с VICом (эксплуатация его глюков, забавностей и недокументированных фич).
<Существует огромное множество кросс-ассемблеров для 6502, я буду для примеров использовать ACME /blockquote>
одно пожелание к статье — еже бы приложить ссыклу на эмулятор, а заодно и к IDE,
Всякие значки вроде # $ * < >
ы? не к месту имхо, равно как и перекрестки к z80 и 6502.
Очень крутой пост, несложно, но глубоко и от начала и до конца.
Быстрый вопрос:
BVC label ;oVerflow Clear, JP PO
BVS label ;oVerflow Set, JP PE
Эти команды 6502 и z80 точно эквиваленты друг друга? Я бы всё же думал что PO/PE означают чётность, а не переполнение.
С другой стороны, раз есть команда для теста флага переполнения — о чём это тогда тут речь?
Специально пролез в свой 3D boot, где была 8-битная математика — там одни таблички, никаких знаковых сравнений нет.
Просто не дошёл до отсечений в своё время, видимо.
22 комментария
*= — прямо Perl :)
а стек всегда жёстко задан 100-1ff?
Спасибо! Познавательно.
Теперь ясно, почему у них такая мощная сцена.
В популярности с64 огромную, если не подавляющую роль играет VIC. Почти каждый демоэффект, особенно если он работает в 50фпс, это тот или иной изврат с VICом (эксплуатация его глюков, забавностей и недокументированных фич).
ADD HL,BC, а на 6502 побайтно складывать ячейки в памяти придётся.
Быстрый вопрос:
Эти команды 6502 и z80 точно эквиваленты друг друга? Я бы всё же думал что PO/PE означают чётность, а не переполнение.
С другой стороны, раз есть команда для теста флага переполнения — о чём это тогда тут речь?
Просто не дошёл до отсечений в своё время, видимо.