Юра, на твое предложение есть сразу несколько "нет" - "идеологическое" и техническое:
Первое: ну представь себе какой-нибудь относительно современный и хоть сколько-нибудь серьезный компьютер - да хоть ПиСи, начиная с IBM XT: можешь ли ты себе представить, чтобы игра или какая-нибудь иная MS-DOSная программа потребовала бы для выхода из нее нажатие спец-кнопки на корпусе для выхода в систему? Или была бы написана так, чтобы выйти из нее можно было бы по ресету (который как минимум есть у всех), а по иной кнопке, только если она имеется? Я вот такого не припомню.
А вот на спектруме еще со времен ленточный такое норма. Исключения крайне редки. Это культура программирования - люди привыклю еще тогда, что вот есть только бейсик в ПЗУ и все. И все игры были сделаны и делаются до сих пор в расчете на выход по "сбросу". Но это неправильное восприятие спектрума как игрушки, "приставки с клавиатурой". Тогда как я всегда был за то, чтобы воспринимать его, особенно "продвинутые" модели как нормальный полноценный комп. Особенно если на нем установлена, помимо TR-DOS какая-либо ОС - CP/M, iS-DOS и др. ИМХО, полагаю, что нормально работать с системной средой и выходить в нее без "спецкнопок" - это признак хорошего тона. И, например неплохо бы в программировании и адаптации игр это учитывать, что, кстати, сильно облегчит адаптацию к иным системам или зарубежным клонам, у которых TR-DOS нет. Насчет последнего уже, слава богу, входит в моду выпускать не только "бесиковские моноблоки", но и TAP-версию игр (как правило, где нет подгрузок в процессе игры) с бейсик-загрузиком - такие игры очень легко адаптировать в т.ч. и в среде ОС TASiS. Но осталось еще ввести в культуру программирования введение в играх опцию "выход из игры", по которой произойдет даже не переход на RST 0 со сбросом, а (в тех случаях когда не была затерта область системных переменных, например из-за нехватки памяти под игру) выход обратно в бейсик в ту точку, откуда и была игра запущена по RANDOMIZE USR. от тогда вообще буде класс - ничего переделывать не надо будет (как минимум, в 48К-варианте) - просто "пришил" к кодовому блоку вместо бейсик-части свой загрузчик, а потом из игрушки мы выходим в него же. Вот ты, Юра, занимаешься адаптациями игр - почему бы первому не применить такой прием?
Ну а техническое: это в ZX-Evo можно "перепрограммировать" NMI. В АТМ - это MAGIC и только MAGIC (если только паяльником не припаять дополнительную кнопку NMI -но ведь это же глупо паять ради запуска софта. А если кто паять не умеет?), причем схема построена так, что кнопка не сработает, если экран - не стандартный, спектрумовский, а расширенный - там к одновибратору, в качестве условия срабатывания сигнал RG0 подведен, отвечающий за переключение режимов.
Теоретически универсальным можно-таки сделать кнопку RESET - ибо в АТМ1 и 2(+) в ПЗУ по нулевому адресу расположен перехватчик резидента. Если в верхних страницах памяти разместить со специальной меткой "корешком" и посчитанной контрольной суммой программу, то по сбросу сначала происходит проверка наличия этой программы в верхней памяти, и сброс происходит только если ее не нашли или битая КС. В противном случае выполняется именно эта программа. Таким образом можно сохранить систему вверху и по сбросу вернуться из любой игры/программы, при условии, что она не залезет в те верхние страницы. Учитывая, что эти страницы располагаются сильно выше стандартный 128Кб, то 99% софта резидент не затрут. Более того, именно так работа с ZX-софтом в АТМ и построена - возврат по сбросу - TRD-образ маунтится в верхнюю память к одной и букв дисковода vTR-DOS, идет ее загрузка с виртуальной дискетки, но в любой момент пользователь может нажать сброс и вернуться в ОС TASiS. В ZX-Evolution поддержки резидента пока нет, но только потому, что при создании ERS для бэйзконфы Савелий сначала не обратил внимание на такую "фичу" АТМ, а после того как я обратил его внимание на это, все обещает это сделать, но пока не сделал.
Но опять большое НО: кнопка сброса - это опять-таки "аппаратная примочка на корпусе" (даже если это теперь делается по Ctrl+Alt+Del) во-первых, а во-вторых, опять все то же использование TRD/SCL/FDI-образов как неких картриджей (пусть и виртуальных) для некоей приставки - вставил, поиграл, сбросил. На нормальных компьютерах есть ОС, есть программы, с этой ОСью работающие, есть вход и выход из этих программ. Все мои адаптированные игры (их пока семь) и демки (их две большие и две маленькие) это демонстрация того, что иная культура программирования под Спекки (пусть даже пока под АТМ) возможна. Та же дема "BRAIN CRASH" мной была успешно адаптирована под TASiS опять-таки из-за ПРАВИЛЬНОГО написания - бейсик-загрузчик, "распихивающий" куски кода по страницам, запуск через RANDOMIZE USR и выход обратно в незатертый бейсик в исходную точку. В итоге теперь можно не притрагиваться к сбросу при ее просмотре. Правда, из этой демы нельзя выйти в любой момент по ESC - там несколько частей, я не вникал в код, чтобы везде вставлять опрос на предмет выхода. Но вот если кому-то СРОЧНО, не досмотрев дему, потребуется выйти в систему, вот на этот случай эта система продублирована в резиденте, и тогда из нее можно будет выйти по сбросу - но это лишь подстраховка.
Кстати, надо будет записать видеоролик с демонстрацией запуска ZX-софта - демок и игрушек как на "серьезных машинах" - по выбору COM-файла и его старта, а потом выход обратно в ОС.







Ответить с цитированием