Кому какие дисковые защиты больше всего запомнились для спектрумовских программ? Какие были необычные методы в этой области?
Я до 1997 года эксперементировал с созданием плавающих битов, псевдо-секторов #F7 на реальном Speccy (то есть без использования PC и Amiga) и был еще фокус, что при определенной разметки дорожки команда "чтение дорожки" забивала все ОЗУ, то есть универсальные копировщики, которые использовали команду "чтение дорожки" висли
Но дальше тестовых программ дело не ушло, потому что после 1997 года это направление перестало быть актуальным.
Antarex wrote:Кому какие дисковые защиты больше всего запомнились для спектрумовских программ? Какие были необычные методы в этой области?
От кнопки Магик я защищался записью в ту сторону, которую она портит(уже подзабыл в какую, но если надо пороюсь и найду) и в прерывание залил контроль этого байта, если его там нету, то RST 0 или ещё чё-нить позверскее!
Antarex wrote:
Я до 1997 года эксперементировал с созданием плавающих битов, псевдо-секторов #F7 на реальном Speccy (то есть без использования PC и Amiga) и был еще фокус, что при определенной разметки дорожки команда "чтение дорожки" забивала все ОЗУ, то есть универсальные копировщики, которые использовали команду "чтение дорожки" висли
Но дальше тестовых программ дело не ушло, потому что после 1997 года это направление перестало быть актуальным.
От кнопки Магик я защищался записью в ту сторону, которую она портит(уже подзабыл в какую, но если надо пороюсь и найд
Процедура обслуживания немаскируемого прерывания записывает в стек большой объем информации (все регистры). Если поставить указатель стека сразу за какой-нибудь важной процедурой или неизменяемыми в процессе работы программы данными, то можно гарантированной сказать было ли такое прерывание. Ещё проще можно сделать: посмотреть сколько максимум надо для стека вашей программе установить указатель в самой первой строке экрана, прикрыв эту область атрибутами. Тогда возврат из процедуры обработки немаскируемого прерывания произойдет куда угодно, только не в то место ваше программы, в котором она была прервана.