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

User Tag List

Показано с 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
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

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

Эту тему просматривают: 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

Ваши права

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