Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Cash Remember - сервисный монитор (512K, cache)

  1. #1
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    Post Cash Remember - сервисный монитор (512K, cache)

    Flyman512 разработал уникальную программу для пентагона, которая превращает пентагон из "просто спектрума" в зверскую хаккерскую/игровую zx-машину. Программа сугубо по случайному недоразумению осталась незамеченной широкой публикой. Исправим же это недоразумение!

    Если вы являетесь счастливым обладателем классического пентагона-128, то, почитав о возможностях этой программы, вы станете ещё счастливее. Вы позабудете обо всём на свете, и с такой скоростью ломанётесь за паяльником, что будете сшибать табуретки, сея панику среди котов и прочей домашней живности. А паяльник вам понадобиться почему? А потому, что для работы программа требует 512 Kb RAM и доработку типа "кэш".

    То есть, если до сей поры вы не удосужились сделать эти доработки на своём пентагоне, ибо не было софта, ради которого эти доработки были бы целесообразны, то считайте, что теперь появился достойный повод, ведь с помощью Cash Remember можно:

    - сохранять игровой прогресс практически в любой игре. Сохранение возможно не только в RAM, но и на дискету. Таким образом, в любую игру можно будет "доиграть потом". И всё это не выходя за рамки "тёпло-ламповости" (доселе этой привилегией обладали лишь владельцы +2AB/+3 спектрумов с Multiface-3, да владельцы Scorpion ZS 256/1024 c Проф.Ромом).

    - реализовать на своём пентагоне псевдомногозадачность (как в скорпионовской проге MagOS, только лучше).

    - "копаться во внутренностях" игры или программы благодаря интегрированному в программу теневому монитору-отладчику STS.

    - "обессмерчивать" практически любые игры (добавлять энергию, время, жизни, патроны и т.п.) даже не обладая глубокими познаниями в ассемблере Z80. В общем, как ArtMoney, только на спектруме!

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

    Ниже под спойлером авторское описание программы.

    Скрытый текст


    Written by Flyman512 in 2013 Apr.

    Оглавление.

    1. Вступление.
    1.1. Что юзер может делать этой прогой легко.
    1.2. На каких компах эта прога может работать.
    1.3. Как использовать программу.
    2. Описание функций casher'a.
    2.1. Внешний вид программы.
    2.2. Описание основных функций casher'а.
    2.3. [D] Дисковые функции.
    2.4. [M] Вызов STS'а.
    2.5. [I] Обессмерчиватель.
    2.6. [U] Вызов посторонних программ.
    2.7. [H] Помощь.
    3. Кое-что для кодеров.
    4. Краткая история версий.
    5. Контакты.


    1.1. Что юзер может делать этой прогой легко.

    1. Сохраняться (и считываться) в любой игре в любой момент в любом месте. Можно "быстро" сохраниться в расширенную память или "медленно" на диск в файл.

    2. Сохранять в одно положение одну игру/прогу, а во второе положение - другую игру/прогу. И заниматься по очереди то одним, то вторым. Т.о. получается своебразный быстрый переключатель задач.

    3. Прервать любую игру/программу в любой момент, и "полазить" по памяти STS'ом от Stalker'а.

    4. Делать "вечные жизни" за несколько минут почти в каждой игре.

    5. Запускать второстепенные программы, которые можно "подключить" к этой.

    6. Запускать вот-этот-текст-помощи во время работы проги.


    1.2. На каких компах эта прога может работать.

    1. Проге нужно 512 Кб оперативной памяти, страницы которой переключаются портом #7FFD (32765). Как в пентагоне.

    2. Проге нужно хотябы 2 Кб кэш памяти, которая включается и выключается портами #FB (251) и #7B (123) соответственно.

    3. Кнопка типа "magic", которая вызывает прерывание основной игры/проги и запускает программу в кэш памяти (по адресу 102).


    1.3. Как использовать программу.

    Сначала программа должна быть загружена в память: расширенную и кэш. Для этого нужно запустить файл cash2_00.B, который проверит доступность нужной памяти, загрузит свои части по этой памяти и перезапустит комп.

    В дальнейшем программа никак себя не проявляет пока не нажать на "cash-magic". Так что можно запустить какую-нибудь трудно-проходимую игру, и в процессе игры нажать на "cash-magic". Игра остановится, бордюр станет зеленым - программа сообщает, что она жива и все хорошо (если бордюр красный, то что-то не так: может прога запоролась, может вы отключили 512Кб память, или находитесь в 48-м режиме).

    !!! Внимание, это критично. !!! -> Жмите на пробел, только после того, как полностью отпустили "cash-magic", иначе это может привести к повторному срабатыванию функции, что сделает невозможным возвращение к тому, что происходило до нажатия на "cash-magic", а то и вовсе снесет кэшер.

    Итак, зеленый бордюр, пробел, программа запущена. Пользуемся функциями программы (подробнее о которых ниже), и выходим из нее до следущего нажатия на "cash-magic" кнопку.


    2. Описание функций casher'a.

    2.1. Внешний вид программы.

    1. (c) 2013 F... - строка, показывающая: название программы, версию программы, название того, кто эту программу написал и год выхода.

    2. Escape: Bank... - строка, обозначающая текущее действие. Это может быть прогресс записи на диск, требование подтвердить или отказаться от выбранного действия, это может быть предложение выбрать вариант дальнейшего действия... Каждому действию соответствует цвет, так что с опытом можно по цвету мгновенно ориентироваться: попали ли мы быстро по нужной клавише или промахнулись. Например, всякое чтение - синее, запись - красная, дисковые опции - желтые, нейтральные операции - голубые. В отличии от предыдущей версии (v1.1), в этой нет нужды быть аккуратным насчет того, что делаешь. Например, хочешь записаться - жмешь по кнопке "1", если попал, то сообщение будет красным, тогда жмешь по всем кнопкам пока не попадешь по "y" (yes). А если промахнулся, то тогда уже можно аккуратно нажать на "n" (no) и повторить попытку попатсь по кнопке "1". :-]

    3. Основные три строчки показывают возможные варианты действий, и какими кнопками их выбирать.

    4. Disk, Monitor, Infinitizer, Utilites, Help_txt.
    Эта строка напоминает о возможности вызвать соответствующие дополнительные функции с помощью клавиш, буквы которых выделены цветом.


    2.2. Описание основных функций casher'а.

    Основные функции действуют на текущее положение (далее 128Kb-State). 128Kb-State - это место, где находится наша игра/программа, которую мы прервали нажатием "cash-magic" кнопки. Важные параметры выводятся в строку сообщения.

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

    Org... - по какому адресу находилось выполнение программы в 128Kb-State.

    Ei/Di; IM1/IM2 - Запрещены или разрешены были прерывания, и какого они были типа - первого или второго.

    Position: 1/2 - С какой позицией будут выполняться операции над 128Kb-State'ом - с 1й или со 2й. Есть Position 1 и Position 2 - это области в расширенной (512Кб) памяти, которые по размеру совпадают со 128Kb-State'ом.

    Теперь сами функции.

    1 - Save. Записывает 128Kb-State в выбранную Position. Например, 48/128Кб игра будет сохранена для дальнейших считываний. При этом содержимое 128Kb-State остается без изменений.

    2 - Load. Считывает 128Kb-State из выбранной Position. Таким образом мы получаем то положение, которое было перед сохранением. При этом содержимое Position остается как было (можно неограниченное кол-во раз считываться), а то что было до этого в 128Kb-State'е затирается.

    3 - Escape. Запуск того, что находится в данный момент в 128Kb-State'е.

    Что бы ни происходило в границах 128Kb-State'a: глюки, зависания, зброс, потеря жизней - мы в большинстве случаях можем вернуться в тот момент, когда мы создали контрольную точку в которой все было прекрасно, и запустить процесс опять с этой
    точки. Исключения связаны с порчей содержимого 512Кб памяти и кэша программами, которые активно их используют.

    4 - Select Screen. Некоторые игры/программы используют 2-ю экранную область памяти для вывода изображения на экран. Программа определить какая экранная область используется в 128Kb-State'е не в состоянии. Эта опция переключает выходной банк (вы можете видеть это в строке сообщения). Число прыгает между двумя вариантами, которые соответствуют экранным областям: меньшее число - это 1-я (стандартная) экранная область, большее - 2-я. В большинстве случаях эта функция не нужна. И определить когда ее нужно использовать легко: cash rememeber всех версий во время работы использует 1-ю экранну область; и если на экране во время работы cash..er'а что-то несоответствующее тому, что было на экране во время работы 128Kb-State'а, то 128Kb-State'у нужно задать в выходном банке, что ипсользуется 2-я экранная область. Смотри также 7-ю функцию.

    5 - View Another Org. Функция полезная для кодеров. Позволяет видеть не только адрес запуска 128Kb-State'а, но и следующий адресс, взятый со стэка. Нужна для того, чтобы в STS'е посмотреть, чем программа в 128Kb-State занималась.

    6 - Select Position. Тут все просто: выбор позиции для Save/Load операций. !!! Важное замечание. !!! Когда мы прерываем работу какой-нибудь игры/проги, вероятность, что это прерывание не навредило содержимому 128Kb-State'а не всегда равно 100% и зависит от этой игры/проги. Поэтому сохраняться можно попеременно то на одну, то на другую позицию.
    @@ Если при выходе с игрой/прогой все хорошо, то ту позицию, на которую только что записались, при следующей записи мы бережем, и записываемся на другую, которая может оказаться испорченной. Тогда можно считаться с проверенной позиции. Если и с ней все хорошо то перейти в тексте назад к месту, помеченному символами @@.

    Обычно проблем не возникает - многие игры/программы прекрасно прерываются. В противных случаях можно попробовать выбирать более удачные для прерывания моменты - например, во время паузы или меню.

    7 - View 2nd Scr. Эта функция позволяет взглянуть на вторую экранную область памяти (пока удерживается клавиша "7").

    8/9/0 - Tytle Move/Remove. Casher Загораживает треть экрана своим внешним видом. Чтобы посмотреть экран, можно сдвигать кэшер вверх/вниз или временно его убирать (пока удерживается кнопка "0").


    2.3. [D] Дисковые функции.

    Дисковые операции действуют на специальные файлы отгрузки (далее - slot'ы). Slot'ы бывают двух видов: 48-е и 128-е.
    48-й - это файл с любым именем, расширением slt и длинной в 193 секторов.
    128-й slot состоит из 48-го слота, и имеет еще 5 файлов по 64 сектора, которые должны располагаться сразу за ним и иметь определенные имена.
    128-й slot т.о. занимает 513 сектора.
    Слоты можно создавать casher'ом, потом - копировать, удалять и прочее любым командером. Переименовывать же можно только файл slot'а у которого размер 193 сектора.

    Перед сохранением чего-либо на диск, нужно сделать один или несколько slot'ов. На чистый диск влазит 4-е 128-х слотов или 13-ть 48-х, хотя программа увидит в таком случае только первые 12-ть. Можно комбинировать.

    Для использования дисковых функций нужно выбрать несколько параметров.

    Кнопки 1,2,3 задают то, что мы собираемся сделать: записать, прочитать, создать новый slot.

    Кнопки 4,5,6 задают область памяти, которая будет сохранена в файл или прочитана из файла.
    Сохранять можно как Position 1, Position 2, так и содержимое стандартной 128Кб памяти (128Kb-State).

    Кнопки 7,8 указывают нужно ли сохранять все 128 Кб, или достаточно только 48-и.
    Если вы уверены, что игра/прога, которую вы намереваетесь сохранить, использует только 48 Кб, то есть возможность сохранить только их, что быстрее и съедает меньше дискового пространства.

    В случае создания нового слота, этот параметр указывает какой именно слот будет создан - 48-й или 128-й.

    Кнопка "0" циклически перебирает буквы дисководов: A,B,C,D. Если у вас больше одного дисковода, то это может быть полезным.

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

    В случае записи/чтения, casher обнаружит слоты на диске и предложит выбрать один из них. Управление - sinclair, cursor, q/a/o/p/space/enter. Отказ от дисковой операции и выход в главное меню - edit или break.

    После выбора слота, программа в строке состояния покажет какая заряжена операция и еще раз попросит подтвердить (yes/no).

    В случае создания слота, программа проверит есть ли на диске свободное место для этого, и попросит ввести имя (если вы передумали - жмите edit/break).

    !! Важно !! От начала и доконца дисковых операций не меняйте диск. Захотели использовать другой диск - отказались от дисковой операции, поменяли диск, запустили дисковую операцию заново.


    2.4. [M] Вызов STS'а.

    Вызов STS'а старой версии 4.3, несколько байт в котором изменено, чтобы можно было возвращаться в cash'ер, а из него в свою очередь в прерванную игру/прогу. При этом банк #17 запоминается в банк #92. При выходе из STS'а обратно, все станет на место.

    С STS'ом можно, например, использовать "словарик POKE", чтобы обессмерчить игрушку. Его функциями SAVE/LOAD можно сохранить в файл экран например. Интересующимся, как там все внутри устроено, можно "поковыряться" в кодах прерванной игры/проги.


    2.5. [I] Обессмерчиватель.

    От этой функции, откровенно говоря, я не перестаю тащиться, особенно после того, как я ее слегка "наворотил" по сравнению с тем, что было в v1.1.
    Этим infinitizer'ом можно (проверено на многих десятках игрушек) запросто сделать "вечные" жизни в большинстве случаях за несколько минут.

    Подготовка.

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

    2. Жмем на magic и сохраняем игру на Position 1.

    3. Тратим немного ресурса: одну жизнь, пару секунд времени, чуть-чуть энергии или еще чего-нибудь.

    4. Жмем на magic и сохраняемся на Position 2.

    5. Пятый шаг необязателен, но с ним драматически сужается поиск нужных адресов, часто даже до одного
    - правильного! Тратим еще жизнь, время или что там у вас. И жмем на magic в последний раз.

    Применение.

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

    Жмем "I", указываем как изменялся наш ресурс.

    1. Changes - адреса, по которым содержимое как-то менялось (143,87,0 или 203,0,5). Самый плохой вариант, но если ничего другого не остается, то это последний шанс.

    2. Decrease - адреса, в которых было каждый раз уменьшение на единицу (5,4,3; 1,0,255; 57,56,55). Лучший вариант для всего, измеряющегося в штуках. 3. Increase - противоположна предыдущему пункту. Некоторые игры могут отсчитывать что-либо вверх.

    4. Subtaction и 5. Addition - это грубые варианты пунктов 2 и 3. Они отслеживают просто уменьшение (9,6,3; 4,3,1) и увеличение (2,3,7; 49;51;55). Помогают найти изменение ресурсов, выраженных полосочками или еще чем-либо не цифровым; или цифровым, но трудно отлавливаемым на уменьшении по единицам.

    Кнопкой "0" можно выбрать следующие варианты:
    Pos1?Pos2?128k - обычный, вышеописанный режим.
    Pos1=Pos2?128k - адреса, данные в которых в 1-й и 2-й позиции не отличались, а в 3й раз - изменились.
    Pos1?Pos2 - обрубленный вариант обычного режима.

    Итак, выбрали тип поиска. Жмем "Y". Ждем несколько секунд. Переходим в просмотровщик адресов.
    В левой панели - список найденных адресов с их содержимым в трех вариантах. В правой панели - ссылки на какой-то из адресов из левой панели.

    Управляется все sinclair'ом, cursor'ом или кнопками Q/A/O/P/ENTER/SPACE.
    Edit (CS+1) или Break (CS+Space) - выход.
    CS+3/4 - постраничное перемещение.
    W/S - листать ссылки (если их много).

    Если ткнуться в какой-то адрес на левой панели, прога найдет в 128Kb-State'е места, которые ссылаются на этот адрес. Эти места в виде строк ассемблера выводятся на правую панель.

    Остается только найти что-то типа следующего:
    30000 LD A,(34567)
    30003 DEC A
    30004 LD (34567),A
    30007 JP NZ,45678
    навести курсор на команду, которую вы подозреваете в уменьшении жизней, и "ткнуть" в нее, отметив для себя соответствующий адрес, чтобы потом не повторять поиск, а пользоваться STS'ом.


    2.6. [U] Вызов посторонних программ.

    Cash..er найдет в памяти утилиты (до 255 штук) если они там есть, выдаст список, из которого можно запустить какую-то одну. Утилиты загружаются отдельно от cash..er'а. Тут уже нужно смотреть на инструкции от автора конкретных утилит: как их загружать, и как их использовать.


    2.7. [H] Помощь.

    То, что вы сейчас читаете, может быть вызвано прямо во время использования программы. Состояние Position 1, 2 и 128Kb-State'а сохраняются при этом без изменений.


    3. Кое-что для кодеров.

    Вы можете расширять функции основной программы за счет написания своих утилит.
    Для ясности покажу расположение памяти:

    Bank Mem What
    #10 - #17 Первые 128 Кб. Текущее положение
    #50 - #57 Вторые 128 Кб. POS 1 (отгрузка 1)
    #90 - #97 Третьи 128 Кб. SYSTEM!
    #D0 - #D7 Четвёртые 128 Кб. POS 2 (отгрузка 2)

    С текущим положением (128Kb-State'ом) и Позициями все просто. Теперь о том, как устроен SYSTEM.

    Bank 144 (#90) - Основная часть Casher'a, регистры для Pos.1 и Pos.2, копия системных переменных для дисковых операций (23552...23871), font5x8 и пр.
    Bank 145 (#91) - #C000,6912 - сюда запоминается экран из 128Kb-State'а - 56064...#FFFF - STS4.3.
    Bank 146 (#92) - Рабочий банк, просто 16Кб для разных операций: временно сохранить сюда целый банк для работы STS'а; построить таблицу из ~8000 адресов в infinitizer'е; сюда сохраняется область 16384...32767, чтобы сделать правильно дисковые функции, а тaкже перед запуском любой утилитки.
    Bank 147 (#93) - Банк вот этого help.txt'а
    Bank 148 (#94) - Еще один рабочий банк, который используется в этой версии только в случае запуска help'а.
    Bank'и 149-151 (#95-#97) Casher'ом не используются. Т.о. это самые удобные банки для любых утилит, хотя ничего не мешает загружать их на место Pos.1, Pos.2 или даже в обычную 128Kb-State - функция вызова утилит найдет утилиты, куда бы вы их не засунули. Можно также под утилиты использовать банки 147,148 (#93,#94), которые используются help'ом, в таком случае help запускаться не будет. Да и кому он нужен, после небольшого опыта использования проги?!

    Помимо банков 512Кб-памяти, casher использует первый килобайт cash памяти для кода (#000...#3FF), а второй килобайт - как рабочий. Т.о. область #400...#7FF может использовать ваша утилита. Например, удобно лдирить туда код, который будет переключать банки, оставляя без изменений данные по адресу #4000...#BFFF.

    Теперь требования к утилитам.

    1. Утилита должна начинаться с круглого (в hex) адреса (для того, чтобы сканер утилит быстро их находил): #C000, #C020, #C040 ... #FFE0.

    2. Начинаться утилита должна следующим кодом.

    JR LOOP1 ; - Признак утилиты
    DB "cash utilite" ; /
    DB "CALL MY UTILITE" ; не более 40 символов имени в символах с кодом от 32 до 127.
    DB 0 ; код конца текста.
    LOOP1: ; далее идет код вашей программы.

    Теперь что нужно учитывать, чтобы ваша утилита нормально возвращалась туда, откуда она была вызвана.

    1. Casher на всякий случай сохраняет область 16384...32767 в банк 146 (#92) перед вызовом вашей утилиты. Так что вы можете использовать эту область как угодно. Тогда при выходе сами востанавливайте ее из #92 банка, поскольку мне не известно, вдруг это изменение и было целью вашей утилитки. :-]

    2. SP будет указывать на область в кэш памяти где-то в районе 70-80. Если вы захотите включить прерывания, по адресу 56 должен быть ret, а стэк должен быть в этот момент выше. Т.е. если вы делаете что-то навороченное, лучше запомнить стек и переместить его куда-нибудь в #7FF например. Если ваша утилита будет юзать TR-DOS, то кэшу прийдется закрыть, а стек тем более убрать куда-нибудь в #7FFF например.

    3. При запуске вашей утилиты регистр A содержит банк памяти вашей утилиты.

    Ваша утилитка может и не возвращаться в casher. Можно написать утилитку, которая копирует себя в 128Kb-State в адреса #4000...#BFFF, блокирует кэш (для сохранности кэшера), распаковывается на весь 48Kb объем и запускается там. Таким образом можно наделать утилиток из 48-х программ, которые можно загнать в объем 16Кб каким-нибудь паковщиком, и запускать их из casher'а.


    4. Краткая история версий.

    Началось все в 1998 году с маленькой (632 байта) программки 128REMEM, сидящей в банке 144 (#90). У нее была лишь одна цель. Сохранить/вспомнить содержимое 128-й памяти в верхние страницы 512-й - банки 208-215 (#D0-#D7). Тогда еще я в TASM4.0 Supaplex писал. Приходилось загружать сначала сам TASM, STS. Потом один asm-файл, ассемблировать его, затем другой файл, тоже его ассемблировать, потом всякие уже готовые кодовые блоки (уровни, музоны, спрайты) загружать... А потом запускаешь, что-то глючит, и опять дисковод и нервы мурыжить. Само собой возникло желание написать что-то, что сохраняет все рабочее хозяйство, чтобы быстро можно было возвращаться после глюков и зависаний. Запускался 128REMEM командами бэйсика: OUT 32765,144: RANDOMIZE USR 49152.

    В 1999 был написан Cash Remember v1.0, где уже были все основные функции. Версия v1.1. привнесла лишь несколько мелких изменений: сама научилась IM1 от IM2 отличать, портить 4 байта (а не 8) стека, может еще что-то...

    Теперь 2013 год! Мне захотелось вспомнить навыки программирования на спектруме, и это оказалось на удивление легко: у меня сохранилось много trd файлов основных моих дисков. Alasm v4.2, прочий любимый софт, исходники того, что я раньше писал. Даже более того, сейчас мне легко делать то, что раньше давалось с большим трудом, но все-равно требует много времени.

    Теперь особенности именно Cash Remember'а v2.00.

    * Шрифт 5x8, и, как следствие, больше опций, и более содержательные сообщения.
    * Save/Load/Escape требует подтвеждения.
    * Можно перемещать окно casher'а, смотреть на обе экранные области.
    * Дисковые опции теперь более удобные.
    * Вы(за)гружать на диск можно даже 128Kb-State без предварительного копирования на Position.
    * Можно сделать новый слот.
    * Адекватная реакция на отсутствие или сбойность диска - retry/abort контролируются прогой, вместо "всяких tr-dos глюков".
    * Можно пользовать 4 дисковода.
    * Навороченный обессмерчиватель. Раньше находил только адреса, к которым потом нужно было в STS самому искать места обращения. Теперь это делается автоматически! Само находит места, вам остается только курсором ткнуть в команду DEC A или (HL).
    * Раньше внешние утилиты можно было грузить только по адресу #C000 в три определенных банка. И casher не проверял наличие утилиты перед запуском. Теперь утилиты можно целыми пакетами грузить куда попало в больших количествах, и casher запускает только то, что распознано как утилита.
    * Хэлп стал встроенным.


    5. Контакты.

    I-Net. В интернете я бываю редко и в режиме чтения только (read-only): скачать что-нибудь. Всяких асек, мыл и прочего не использую. Заглядываю на сайт virtual tr-dos'а. Так что можете писать в какую-нибудь спектрумовскую газету/журнал - я это скорее всего прочитаю (их сейчас мало выходит). :-]

    Cell-Phone: <плюc тридцать восемь, нyль дeвять дeвять, ceмь дeвять шecть, 93-84> (это Украина, МТС).
    Телефон я настроил так, чтобы реагировать только на звонки конкретных людей (кажется, это белым листом называется) - концептуальный иммунитет от разного рода спамеров. Так, что шлите sms, чтобы я вас распознал (с сайта mts.com.ua это можно бесплатно). Этим же способом можно указать мне на нечто крупное в i-net'е (дать ссылку).
    [свернуть]

    А теперь я, пользуясь случаем, хочу обратиться к автору. Во-первых, со словами благодарности! ) А во-вторых, с просьбой либо доработать немного программу, либо выложить исходники, чтобы другие смогли безгеморно её доработать в соответствии с пожеланиями. (Если что, исходники можно выложить на любой файлообменник, советую http://dropmefiles.com , ссылку можно отправить мне смс, бесплатно, с билайновского сайта на мой номер < + 7 - 9OЗ - 9OI - З5 - 9I >

    Программу я пока тестировал только на эмуляторе Unreal 0.38.2, но, думается, на реальном пентагоне она должна вести себя также. А значит пожелания будут такие:

    1.) Если сразу после сброса, находясь в 128-меню, вызвать программу, а потом попытаться вернуться, то вместо 128-меню мы увидим сброс компа в 48-ой бейсик, что печально. Однако, если после сброса, зайти в 128-ой бейсик, а потом выйти, а потом вызвать рэмэмбер, то он потом нормально возвращает нас в 128-меню. В общем, неплохо было бы это исправить. Например из мультифейса, и из скорпионовского теневого монитора можно запросто вернуться к 128-меню.

    2.) В программе слишком много совершенно излишних подтверждений действий. Это выносит мозг напрочь. По нажатии на кнопку NMI желательно сразу появление окна программы, не стоит сигнализировать юзеру зеленым бордером, что всё окей, а потом ждать от него нажатия на пробел. Ибо само появление окна и будет свидетельствовать, что всё окей. Если же убрать лишний шаг с зеленым бордером и пробелом нельзя (может это будет стек портить или ещё чего), то надо хотя бы убрать ожидание пробела, пусть меню само появляется, через 1-2 секунды, безо всякого пробела. Появление окна программы круто было бы озвучить бипером, примерно вот таким вот "та-да-дам":
    Код:
    1 BEEP .06 , 0
    2 BEEP .06 , 5
    3 BEEP .07 , 10
    Подтверждение возврата к игре по любому нужно убрать + продублировать клавишу "3" клавишей "Q".

    Там, где убрать подтверждения действий нельзя, просьба продублировать опрос клавиши "Y" опросом клавиши "Enter"! Ибо "Y" надо искать глазами, а на "Enter" мизинцем правой рук любой вслепую попадает не задумываясь. Опрос "N" просьба везде продублировать опросом "BREAK".

    3.) В поле ввода имени слота есть проблема: там зачем-то сохраняется имя предыдущего слота, а при попытке стереть это имя Delete, стирание не всегда происходит, довольно часто нажатие на Del приводит не к стиранию символа, а к появлению нового символа "0"!

    4.) Слоты. Может можно как-то уйти от системы слотов? Зачем лишние телодвижения? Почему нельзя просто задать имя файла и сохранить снапшот, почему перед этим нужно создавать ещё и какой-то слот?..

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

    Это были основные пожелания. Помимо этих пожеланий есть и второстепенные:

    - сделать опционально функцию сжатия для снапшотов, всё-таки всего лишь четыре 128-ых снапшота на чистую дискету - как-то маловато ))

    - сделать функцию "обмен содержимого 128-state и Pos 1". Допустим у нас заняты Pos 1 и Pos 2. Мы нажали сброс и загрузили в основную память ещё "что-то". Теперь, если мы загрузим содержимое Pos 1 в основную память, то это "что-то" затрется, а неплохо было бы, если бы оно не затиралось, а попадало на освободившееся место в Pos 1. (Для пущей многозадачности )

    - сделать Light-версию программы для спектрумов с 128-ой памятью (если полный функционал не влезет, то оставить только: функции выгрузки/загрузки снапшота на диск; "POKE-вводилку"; переключалку экранов; переключалку цвета бордюра )

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

    И ещё у меня такой вопрос 4 all: можно ли Real Commander 2.6fr приспособить к кэшу, чтобы в кэше он мирно уживался с рэмэмбером, и чтобы из рэмэмбера можно было вызывать этот командер? Эти ссылки возможно помогут прояснить вопрос:
    - http://zxspectrum.it.omegahg.com/rom...26/READ_ME.TXT
    - http://zxsoft.zxby.org/ZXWAREZ/rc_2_6f.zip

    P.S. Программа Cash Remember была выложена на виртуал тр-дос в далёком 2013 году, но программу Striker не снабдил нормальным описанием, не пояснил толком, для чего она. В связи с чем, программа словно канула в небытиё. Но товарищ baxter несколько дней назад обратил внимание общественности на существование этой чудесной программы, за что ему огромное спасибо.
    Последний раз редактировалось ZX_NOVOSIB; 20.07.2017 в 17:56.
    Куплю корпус и материнку от Spectrum +2/+3

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тэкс... А всё-таки, какой есть красивый вариант, чтобы не грузить рэмэмбер каждый раз с дискеты? Энергонезависимая память в кэше естественно нам не поможет в этом. Допустим куда-то в пзу зашить? Типа ROM-диск, а там лежит remember. Старт программы будет происходить с помощью отдельного пункта в 128-ом меню (всякие madRom не хочу, хочу "ламповое" 128 меню при старте компа)... насколько реализация этого будет трудоёмкой? )

    И ещё вопрос, почему, если в unreal выставить кэш не 16, а 32 кб, то по NMI в рэмэмбер мы не попадаем?

    Flyman512 , может можно урезать размер/функционал рэмэмбера так, чтобы он работал чисто в кэше, а не в "третьем 128 пространстве"? Тогда не надо было бы ничего мудрить с ROM-диском, а можно было бы просто установить в качестве кэша энергонезависимую микросхему памяти, и при отключении питания не надо было бы рэмэмбер каждый раз с дискеты грузить.

  4. #3
    Activist Аватар для gurfunkel
    Регистрация
    28.02.2006
    Адрес
    г. Тольятти
    Сообщений
    434
    Спасибо Благодарностей отдано 
    107
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    50 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Flyman512
    Такого пользователя на форуме нет, есть только упоминание о том, что он был в IRC в этом году.
    http://zx-pk.ru/content/167-Obnovlen...-ot-15-03-2017
    Последний раз редактировалось gurfunkel; 20.07.2017 в 18:53.

  5. #4
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    gurfunkel, да я в курсе ) Не совсем же я в прострации. Я смс ему напишу, ссылку на тему дам.
    Куплю корпус и материнку от Spectrum +2/+3

  6. #5
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    Ну вот, Flyman512 прислал исходники! TRD в аттаче. Может кто глянет? Это годные исходники? Или они "не в том формате", или в них ещё чего-нибудь "не то"? Я просто в этом не соображаю )

    Ещё прислал версию 2.01 (там правда почти нет никаких изменений). Всё в аттаче.

    Примечание от автора: "На дискете Alasm v4.2 настроенный под пентагон-512. Запускаете Alasm, жмете W, Enter. Alasm попросит указать файл. Выбираете INCLUDER.H, который при ассемблировании понаинклюдит кучу других файлов (потому он так и называется - includer). Я в код пока не вникал, на это нужно желание и время, но проверил - работает. Ассемблируется, после запуска ведет себя также, как уже собранная версия."
    Вложения Вложения
    Последний раз редактировалось ZX_NOVOSIB; 22.07.2017 в 14:30.
    Куплю корпус и материнку от Spectrum +2/+3

  7. #6
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так же автор прокомментировал мои пожелания. Не могу ни запостить.

    Flyman512:

    1) глючит при 128-Basic меню.

    Это понятное дело. Кэшер не смотрит какой ПЗУ подключен - 128й или 48й. Поэтому при выходе включает ПЗУ 48-го. Не думал, что кому-то нужен 128-й Basic, поэтому и в голову не приходило это делать, но идея теоретически легко воплощается - просто глянуть на содержимое первых байтиков по адресу 0000 и т.д.

    С другой стороны, на реальном (когда-то давным давно у меня был...) я помню кнопка magic не срабатывала, когда программа выполнялась в адресах #0000-#3FFF, Т.е. кнопка бы просто не работала. Хотя я уже не уверен. Давно это было. Но указанный баг я наблюдал - действительно сбрасывается - видимо ему надо, чтоб 128-е пзу было при выходе из casher'а.

    2) В программе слишком много совершенно излишних подтверждений действий.

    В версии v1.1 не было вообще никаких таких подтверждений. Приходилось быть очень аккуратным, иначе можно было сохраниться вместо считывания. Хорошо, когда спокоен и делаешь что-то планомерно. А что если заиграешься и начнешь нетерпеливо торопиться... Программу я писал прежде всего для себя, мне так было на тот момент удобно. Не глядя на клавиатуру - попадешь не попадешь. И безопасно. А в 2013-м году... Скажем так, с 2013-го вы являетесь первым, кто хоть что-то мне рассказал о своих впечатлениях о проге, а то "ни привета, ни ответа". Давным давно, где-то в 2000 плюс-минус у меня были несколько "советчиков"/"тестеров", а сейчас - сам себе доктор, со всеми вытекающими.

    3) Про зеленый бордюр.

    Когда у меня был реальный спектрум, у меня была кэш 8 Кб, и я слышал, что самая популярная кэша была с 2 Кб. Это сейчас в эмуляторах - 16 Кб кэш и даже 32 Кб. Немного отклонюсь. Когда программируешь кэш, то там есть две комманды (сейчас не помню, in a,(цифра1) и in a,(цифра2)), одна кэш включает, другая - выключает. Когда кэш включена, то у нас по адресам #0000...#3FFF вместо одного из ПЗУ бэйсиков теперь кэш, можно туда читать, писать, лдирить программы и там запускать. Но это же 16 Кб, а как работает 32 Кб кэш мне непонятно, потому Cash Remember и не работает с 32 Кб кэшем. Что-то такое происходит, чего я не учитываю.

    Возвращаемся к зеленым бордюрам. Cash Remember задумывался так, чтобы работать и на компах с 2 Kb кэшем. И он устроен так, что кода и данных в кэше как можно меньше, основная часть в банке 144 (#90), включая фонт и окновыводилку. Конечно, при желании можно кардинально переделать программу - сделать 16/32 Кб кэш версию, где больше данных и кода будет в кэше. Исходники есть, если будут энтузиасты, то вперед.

    Кнопка-мэджик (NMI) срабатывает когда код выполняется в адресах #4000 (16384) и выше (мне только непонятно, почему эта кнопка в бэйсике срабатывать стала. Похоже, что сейчас защита срабатывает, только когда код именно в кэши выполняется). Поэтому Casher ждет нажатия пробела в расчете, что пользователь будет достаточно благоразумен, чтобы жать на пробел после того, как отпустит мэджик-кнопку. Однако ваша идея заменить ожидание нажатия пробела на одну-две секунды ожидания скорее всего сработает. Пользователь жмет мэджик, видит зеленый бордюр, отпускает мэджик, и через секунду появляется меню. Что мне не нравится: 1) страх, что передержишь меджик, тогда словишь глюка. 2) Паузу придется делать каким-нибудь холостым циклом, так что время задержки будет отличаться для компов с разным кол-вом МГц. 7 МГц будут срабатывать быстрее. Хотя это хорошая идея придумать вообще что-то другое. Какую-нибудь "ловушку" для повторного срабатывания... Хм... Если буду делать версию 2.02, то там не будет пробела вообще, ни паузы. Жмешь меджик, отпускаешь - и окно. Если у меня получится придумать, конечно. И если я соберусь делать следующую версию. Всегда нужно быть готовым, что я больше не сделаю ничего. Оттого и исходники отдаю.

    4) Появление меню как-нибудь озвучить.

    Ага можно. Тут один исторический прикол. Изначально (в версии 1.1), я вообще AY музыкальный сопроцессор не учитывал. Было это так. Проходишь игру, играет музон. Жмешь мэджик - зеленый бордюр, все дела, а музон как звучал на какой-то ноте в данный момент, так и продолжает противно пищать - тянуть последний звук, который он на тот момент видимо проигрывал. Хорошо хоть в "новых" версиях casher'a AY "глохнет". Я тогда еще считал эту "тишину" "великим достижением". :-] Естественно, следующий шаг сделать какое-нибудь пик-пик, причем разное в разных ситуациях, особенно в чрезмерных местах подтверждений.

    5) Дублирование клавиш.

    Хорошая идея. Это легко. Просто в голову не пришло: "Enter" = "Y", "Q" = "3", "Break/Edit" = "N". А вот убирать подтверждения - мне это не нравится. Но опять таки, что теперь помешает вам скомпилировать свой собственный cash remember "с покером и девицами"? :-] Главное после компиляции смотрите содержание меток, начинающихся с быквы "e"-маленькой - это делается Y, затем указание маски e*, и Enter. Ато наворотите, а в память куда-нибудь что-нибудь не поместится, хе-хе.

    6) Input filename bug.

    Бэкспейс на спектруме - это одновременное нажатие на shift и 0. Вернее не одновременное, а сначала нажимаешь на shift, потом на 0. В таком случае все работает вроде бы хорошо. Когда на эмуле вы жмете на del или backspace, или что там у вас, чтобы стереть символ, то эмуль скорее всего просто-напросто поступает - сигналит программе, что обе кнопки теперь нажаты (по хорошему, надо бы задержку делать). Попробуйте поиграться в Alasm'е всякими "двойными" кнопками типа "PageUp/Down", тем же бэкспейсом. Тоже иногда этот баг "словите". Да, мой cash remember гораздо чаще проявляет этот баг, и да, если подумать можно как-нибудь его обойти.

    7) Слоты. Почему нельзя сразу задать имя файла и сохранить снапшот туда?

    Тут разница в психологии. На тот момент мне так было естественно. Я и сейчас не понимаю зачем делать по-другому. Вот вы сохранили снапшот сразу в файл, но теперь этот файл и будет слотом! Следующий раз куда сохраняться будете? После нескольких таких операций диск будет полностью заполнен файлами/слотами, единственный выход будет сохраняться в уже имеющийся файл, или как я его называю - слот. Со слотами как-то проще. А с именами файл... Что-то мысль у меня забуксовала. Наверное я что-то не понял. "Лишние телодвижения"... При сохранении на диск, файл/слот указать надо? Надо. Если файл/слот уже там есть, то casher его предложит выбрать. Вроде бы без лишних телодвижений. Если файла/слота нет или мы хотим создать новый, то указываем имя... Так, щас запущу, вспомню как оно там работает... Ага. Понял про "лишнее телодвижение". Когда мы хотим сохраниться в новый файл, а на диске уже есть хотя бы один слот, то единственная опция - сохраниться туда, иначе надо делать "новый слот". Да, вместо опции "создать новый слот", можно бы сделать "сохраниться в новый слот". Действительно, для чего делать пустой слот? Т.е. нужно размыть разницу между слотом и файлом. Таким образом есть три опции (в воображаемой версии 2.02+): считаться из уже имеющегося файла/слота, сохраниться в уже имеющийся файл/слот и сохраниться в новый, тогда и имя нужно ввести. Вводим имя и оно сразу начинает создавать слот и без лишних вопросов сохраняться туда... Да, это всего-лишь вопрос психологии. Сейчас я бы наверное так бы и сделал. Я этот текст пишу не только для вас и для возможной публики (я буду только рад, если больше спектрумистов его прочитают), но и для себя - на случай если мне захочется попрограммировать на спектруме - будет откуда инструкции и идеи почерпнуть, поскольку уже были моменты пару лет назад - а не сделать мне новую версию cash remember'а, дак вроде все там уже есть, да и кому это надо кроме меня, да и мне это как-то особо и не надо.

    8) Сжатие снапшотов.

    Ой, вот тут как-то все сложным мне представляется. Это уже надо какой-то файловый менеджер городить. Ведь файлы будут разной длинны, постоянно надо будет удалять и двигать, удалять и двигать, прямо как Perfect Commander или другой какой коммандер...

    9) Обмен содержимым между 128-state и Position 1 и 2.

    Хорошая идея. В случае близкой к 100%-й уверенности, что данная игра/прога хорошо прерывается, менять ее с какой-нибудь позицией вместо простого Load/Save. Тогда мы имеем 3 псевдо процесса в нашей псевдо многозадачности вместо 2-х. А еще отдать исходники какому-нибудь любителю пентагона-1024 (или самому в эмуляторе попробовать поиграться (в случае, если будет настроение - фаза спектрума)), так это ж сколько позиций будет?.. Так: Стандартная 128 Кб, Pos1, System, Pos2, ага, еще 4 дополнительных слота! Можно себе представить все тоже самое, только слотов не 2, а 6. Круто? Хмм... и что? Мне как-то и 2-х хватало. А ладно, надо еще узнать какими портами нужно в пентагоне-1024К щелкать страницами. Плюс сейчас я очень далек от своей же программы. Это надо кучу времени потратить, чтобы вникнуть чего это я там написал в 2013-м. 2017-й год не считается, я тогда по-быстрому один мелкий баг убрал, которого вроде бы там и не было. Может тестировал что-то, а затем забыл при сборке вернуть... Да и буду ли я вообще этим заниматься? Да я уже говорил.

    10) Light-версия Cash Remember'а для 128-х спетрумов с кэшем.

    Вполне можно сделать такой вариант для прохождения 48-х игр. Расположить casher и STS в 128-х банках. Тогда получется очень даже не Light, а вполне почти полная версия, только без сохранений в память. Хотя можно так: 128Кб - это 2 раза по 48Кб и еще 32Кб. Втиснуть кэшер в 32Кб и кэш, тогда мы имеем почти полный кэшер, только с одной позицией для сохранения в память, без инфинитизера (или с каким-то дико упрощенным вариантом).

    Или кардинально переделать прогу так, чтобы она использовала 16 Кб кэша и по минимому другой памяти. Хмм... да, думаю можно что-нибудь придумать. Вопрос в том, что нужно оставить, а что выкинуть. Но я как-то не думал в этом направлении. Насколько себя помню всегда у меня был Pentagon-512K. 128-й был очень не долго. Еще давным давно был ленточный 48К. LOAD ""... R-Tape Loading Error. Или это был R-Type Loading... Ох давно это было. Помню как нужно было подгадывать когда холодильник включится, чтобы начать грузить минут 5 какую-нибудь игрушку. Нельзя холодильнику включаться, комп с ошибкой кассету... Эх. Бедный несчастный холодильник бывало лишался питания, чтобы злобный Flyman игру загрузил. Нет, работать компьютеру он не мешал, просто сигнал мог (вероятность где-то 60-70%) с магнитофона "хромануть". На вид незаметно, полоски дальше по бордюру бегают. Но в конце может быть "R - Tape loading error" или что-то типа того.

    11) Насчет прошивки Cash Remember'а в ПЗУ.

    Тут есть одна (как минимум) серьезная проблема. Что на спектруме, что теперь иногда и на писюке (под WinApi32) у меня есть одна особенность программирования. Я не использую память под переменные. Код какбы самомодифицирующийся. Т.е. первый раз, когда переменная считывается, она это делает непосредственной инструкцией LD a,10; или LD hl,500; или mov eax,dword 0; или mov al,10. А когда я эту переменную считываю во второй раз, то я это делаю так... Хмм. лучше на "бесполезном" примере покажу:

    Код:
    ZX{
    A01     LD A,0          ;читаем первый раз.
            ...
            ...
            LD A,(A01+1)    ;читаем еще раз ту же переменную.
            ...
            LD (A01+1),A    ;записываем прямо в код, под метку A01.
                            ;+0 - это код команды LD A,N (вроде код - 62)
                            ;+1 - это уже значение переменной.
    }
    PC              ;тут тоже самое, только mov вместо ld и другие регистры.
    {
    Variable:       mov eax,dword 0
                    ...
                    ...
                    mov eax,[variable+1]    ;и скобки квадратные для чтения
                    ...                             ;из памяти.
                    mov [variable+1],eax
    }
    И у меня в коде постоянно такая вот... так вот у меня в коде постоянно. Это нужно аккуратно каждую переменную извлекать, переделывать, чтобы из памяти откуда-то. В ПЗУ ж ведь так нельзя. Оно на то и ПЗУ, что не изменяется. Хотя закапсулировать все, сожмаканное hrust'ом. Сделать инсталлер, без хэлпа. Не... что-то мысль не идет. Я как-то по прошивкам ПЗУ без опыта. Та и резать прийдется... делать Light версию, надо решать что оставить, что переделать, что выбросить. Опять таки. Исходники есть, если будут энтузиасты...
    Куплю корпус и материнку от Spectrum +2/+3

  8. Этот пользователь поблагодарил ZX_NOVOSIB за это полезное сообщение:

    USERHOME (05.01.2021)

  9. #7
    Master Аватар для Northwood
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    804
    Спасибо Благодарностей отдано 
    43
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проверил "кеш ремембер" на своём доработанном Пентагоне. Работает чудесно, за исключением одного недостатка - в ней не предусмотрено переключение видеорежимов через стандартный пентагоновский порт #EFF7. Запустил игру "Сакура 16 Colors", которая использует видеорежим "16 colors" (каждый пиксель своим цветом), жму Magic - бордюр зелёный, но видеорежим остаётся "16 colors", в результате вижу цветные пиксели вместо текста меню, работать не получится. Нужно чтобы при входе по кнопке "Magic" в меню "кеш ремембера" отключался расширенный видеорежим - в пентагоновский порт #EFF7 нужно посылать число 0, а при возврате в прерванную программу, чтобы спрашивало, какой видеорежим включить (какой был до прерывания программы).
    С уважением, Александр

  10. #8
    Master Аватар для Northwood
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    804
    Спасибо Благодарностей отдано 
    43
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Снял видео с демонстрацией программы "кеш ремембер". Не вижу каких-либо проблем с поддержкой 32Кб кеш, кроме единственного момента,- инсталлируется программа в одну страницу кеша, а при нажатии на кнопку "Magic" из Menu-128, открывается другая страница кеша, из-за чего из Menu-128 кеш-ремембер и не стартует. Как вариант решения, можно при инсталляции кеш-ремембера дублировать его в обе страницы теневого озу. Но есть ли в этом смысл, если недостаток проявляется только в Меню-128 ? А вот добавить поддержку других конфигураций верхней памяти и больший её объём, не мешало бы. Ещё не помешало бы при вызове кеш-ремембера кнопкой Magic отключать расширенные видеорежимы, а при возврате в прерванную программу, спрашивать, какой видеорежим был включен и включать его.

    С уважением, Александр

  11. #9
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Northwood, не раскрыта главная фишка проги - сохранение текущего состояния на дискету Играл-играл в любую игру, нажал паузу, нажал NMI, записал, вырубил комп, через неделю включил, загрузил - доиграл

    И не всегда, когда прога кажет красный бордюр, она требует реинизилизации. Например из под 48-ого режима она точно покажет красный бордюр, и точно после ресета будет работать как ни в чём не бывало.
    Куплю корпус и материнку от Spectrum +2/+3

  12. #10
    Master Аватар для Northwood
    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    804
    Спасибо Благодарностей отдано 
    43
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Northwood, не раскрыта главная фишка проги - сохранение текущего состояния на дискету Играл-играл в любую игру, нажал паузу, нажал NMI, записал, вырубил комп, через неделю включил, загрузил - доиграл
    Надо будет проверить. Порты ВГ93 в моём Пентагоне при нажатии на Magic открываются, так что должно работать.

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    И не всегда, когда прога кажет красный бордюр, она требует реинизилизации. Например из под 48-ого режима она точно покажет красный бордюр, и точно после ресета будет работать как ни в чём не бывало.
    Красный бордюр означает, что кеш-ремембер не нашёл своё тело в странице верхней памяти. В 48-м режиме конечно будет красный бордюр именно по этой причине, а после ресета снова будет работать, потому что содержимое верхней памяти осталось не тронутым. Но в моём случае, когда я запустил игру "Сакура 16 colors", страничка ОЗУ с телом кеш-ремембера была перетёрта игрой.
    С уважением, Александр

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. remember our lives
    от scl^mc в разделе Музыка
    Ответов: 3
    Последнее: 13.10.2013, 17:10
  2. macintosh 512k
    от bigral в разделе Apple
    Ответов: 24
    Последнее: 18.05.2013, 09:13
  3. ESE-SCC 512K
    от dhau в разделе MSX
    Ответов: 5
    Последнее: 14.04.2009, 18:17
  4. CACHE SRAM versions
    от VELESOFT в разделе Несортированное железо
    Ответов: 11
    Последнее: 28.10.2008, 07:33
  5. RS232 и Cache
    от Sonic в разделе Несортированное железо
    Ответов: 8
    Последнее: 13.07.2007, 14:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •