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

User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 29 из 29

Тема: ПК8002 Эльф. Дизассемблер ПЗУ.

  1. #21
    Activist Аватар для hantarex
    Регистрация
    03.08.2010
    Адрес
    Ставрополь
    Сообщений
    286
    Благодарностей: 31
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в памяти постоянно идут повторы кодов от 0 до FF. это артефакты теста памяти, например? или что-то другое?

    ---------- Post added at 20:57 ---------- Previous post was at 20:29 ----------

    еще нубский вопрос: как сохранить листинг IDA в нечто удобочитаемое? txt, или html например?
    ПК8000 "Веста", "Сура". ПК8002 "Эльф". ПК8010,8020 "Корвет".

  2. #22
    Member Аватар для alex-eller
    Регистрация
    06.04.2015
    Адрес
    г. Красноярск
    Сообщений
    81
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Вижу волну интереса к пк8002. Выкладываю хорошие фото кое-каких документов от этого компа, авось чем-то поможет. Архив разбит на три части:
    Первая.
    Вторая.
    Третья.
    И ещё раз спасибо)

  3. #23
    Member Аватар для alex-eller
    Регистрация
    06.04.2015
    Адрес
    г. Красноярск
    Сообщений
    81
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    hantarex, Боюсь спросить, хоть какой нибудь адекватный результат есть?

    ---------- Post added at 07:30 ---------- Previous post was at 07:29 ----------

    ЗЫ А как тут посты удалять?

  4. #24
    Activist Аватар для hantarex
    Регистрация
    03.08.2010
    Адрес
    Ставрополь
    Сообщений
    286
    Благодарностей: 31
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вышел из запоя, продолжу ковыряться
    ПК8000 "Веста", "Сура". ПК8002 "Эльф". ПК8010,8020 "Корвет".

  5. #25
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    74
    Благодарностей: 69
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забавное представление о совместимости было у инженеров, которые проектировали ПК8002. Очень многие игры на ассемблере для ПК8000 использовали подпрограммы ПЗУ для своих целей. В итоге совместимость сохранилась, полагаю, только у тех, которые были написаны с использованием обращений к портам ввода-вывода самостоятельно, без обращения ПЗУ. В частности, программа ASSM на ПК8002 не завелась, увы.

    Когда-то давно написал программу COPY09, чтобы копировать программы ПК8000, оснащённые автозапуском. Сегодня встал вопрос с созданием WAV из CAS. Так вот, чтобы создать WAV-версию программы ERIC для ПК8002, запустил эмулятор ПК8000, запустил в нём COPY09, дал ей сожрать ERIC.CAS из комплекта программ ПК8002, включил режим записи в эмуляторе, создал файл ERIC.WAV, скопировал этот файл в телефон, подключил телефон к реальному ПК8002, ввёл RERIC, включил воспроизведение в телефоне и, вуаля, появилась через 5 сек надпись "Найден файл: ERIC B", а через 2 минуты игра "автостартанула" из монитора. Вывод - параметры протокола сохранения данных на магнитной ленте - одинаковые.

    Я так понимаю, чтобы запустить тот же самый ASSM, потребуется все процедуры из ПЗУ ПК8000, которые используются, перенести в адреса ОЗУ выше &H4000 и исправить все ссылки на эти подпрограммы на новые значения адресов, где будут эти подпрограммы сложены. Масштабы работы видятся нереальными просто. Закат солнца в ручную.

    Кстати, время загрузки BASIC составляет почти 6 минут. Сам факт того, чтобы пользоваться бейсиком, нужно его грузить 6 минут, как любую из игрушек, для меня выглядит дикостью несусветной. Под программу пользователю оставили всего 16 КБайт, что после 47 Кбайт ПК8000 тоже, мягко говоря, выглядит странно.

    UPD: Не подозревая про наличие аппаратной закладки, удалось обойти с помощью COPY09 защиту от копирования. Дело в том, что в этой программе тип файла определяется по принципу, что не BAS, то HEX. Содержимое заголовка сохраняется целиком в ОЗУ, оттуда берётся только имя файла (6 байт) для отображения на экране, а при записи выгружается на ленту ровно в том виде, как загружено. Со значением маркера 0a0h.
    Последний раз редактировалось scaraby; 13.02.2017 в 11:11.

  6. Этот пользователь поблагодарил scaraby за это полезное сообщение:
    XobbiMan (27.07.2015)

  7. #26
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    74
    Благодарностей: 69
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А насколько вообще актуален дизассемблер ПЗУ монитора? Мне тут нужно было найти точку для выхода из своих программ в монитор, поэтому я распотрошил ПЗУ до этого момента. По ходу действий нашёл ряд интересных системных переменных в том плане, для чего какие используются. Помимо этого разобрался с общей логикой запуска, с тем, как работают прерывания. Всё это закомментировал более-менее, чтобы было понятно, что к чему. Но нужная мне задача, в принципе, решена. Поэтому и интересуюсь - нужно ли до конца весь монитор в таком виде оформлять или такие вещи никто не использует в принципе?

  8. #27
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    74
    Благодарностей: 69
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оказывается, что в ПК8002 существует четыре маркера заголовков файлов, загружаемых с ленты. Кроме известных в ПК8000 0d0h, 0d3h и 0eah, появился ещё и 0a0h, который приводит к автозапуску загруженной с ленты программы. Интересно, а в Ямахе тоже такой маркер существовал? На мой запрос на эту тему, гугл покрутил пальцем у виска, предложил выпить корвалол и ложиться спать.

    UPD: Создатели компьютера были не так просты. Программа ERIC, к примеру, имеет маркер заголовка 0a0h, поэтому запускается автоматически после загрузки. Работает это следующим образом: берётся код второго символа в имени файла и сдвигается влево на один разряд. Полученный результат сохраняется в регистре b и является ключом к расшифровке загруженной программы. Далее вся программа от первого до последнего байта пропускается через исключающее или (расшифровка) и только после этого управление передаётся по адресу запуска, указанному в пятом и шестом байте hex-файла данных.

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

    Код:
    ROM:0605 loc_605:                                ; CODE XREF: ROM:05EAj
    ROM:0605                 pop     h               ; адрес начала загруженной программы
    ROM:0606                 pop     d               ; в hl из стека адрес начала загруженной программы, в de - конца
    ROM:0607                 lda     0FF1Fh          ; второй байт из имени фактически загруженного файла
    ROM:060A                 rlc                     ; сдвинутый влево на 1 разряд
    ROM:060B                 mov     b, a            ; является ключом к шифрованию загруженного файла
    ROM:060C
    ROM:060C loc_60C:                                ; CODE XREF: ROM:0615j
    ROM:060C                 call    0FF2Ch          ; подпрограмма чтения из VRAM байта, адрес которого в hl
    ROM:060F                 xra     b               ; расшифровка загруженной программы автозапуска
    ROM:0610                 mov     m, a            ; сохранение декодированного байта
    ROM:0611                 call    sub_23F9        ; проверка, если hl=de, то ZF=1
    ROM:0614                 inx     h               ; повторяется до конца загруженного блока
    ROM:0615                 jnz     loc_60C
    ROM:0618                 pop     h               ; загружается адрес запуска программы
    ROM:0619                 pchl                    ; и передаётся ему управление
    [свернуть]

    То есть, как я понимаю, таким образом защищали программу от копирования. С помощью ПК8000 через SKIPPY, BLOAD, BSAVE не скопируешь, так как маркер в заголовке не опознается. А если подсунешь заголовок от ERIC для ПК8000, то после перезаписи не заработает. Расшифровка происходит только при наличии маркера 0a0h в заголовке, а в ПК8000 он 0d0h. Дизассемблировать на ПК8000 тоже бесполезно, если не знаешь ключ, который привязан к имени файла.

    ПК8002 верен барыжьим традициям ПК8000. Сперва продаём игры, которые не копируются, а через некоторое время предлагаем купить копировщик для этих игр, цена которого сопоставима с десятком игр.
    Последний раз редактировалось scaraby; 25.01.2017 в 18:31.

  9. Эти 3 пользователя(ей) поблагодарили scaraby за это полезное сообщение:
    BYTEMAN (26.01.2017), Valentinus (28.01.2017), XobbiMan (05.02.2017)

  10. #28
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    74
    Благодарностей: 69
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот вроде бы закончил разбор ПЗУ. Осталось некоторое количество неизвестного кода, но, чтобы вникать в него, нужно сперва схему включения ПЗУ построить, чтобы понять, как там оно адресуется. Сейчас, по крайней мере, все процедуры, которые так или иначе затрагиваются из монитора после включения питания распознаны и более-менее описаны. За неимением никакой документации это - хоть что-то. Можно писать Хэловорды. Заодно прикрепил базу данных для IDA. Версия 5.2.0.908 (64-bit).

    PK8002ROM.zip

  11. Эти 4 пользователя(ей) поблагодарили scaraby за это полезное сообщение:
    DenSam (09.02.2017), dk_spb (01.02.2017), Valentinus (03.02.2017), XobbiMan (05.02.2017)

  12. #29
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    74
    Благодарностей: 69
    Записей в дневнике
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В детстве больше всего хотелось, чтобы у ПК8000 был режим 64 символа в строке. Помню, когда в очередном письме из МЦ "Контакт" с предложением купить очередную порцию программ увидел редактор TEXT, в котором было заявлено что поддерживается режим 64 символа в строке, пришёл в восторг. Однако, спустя примерно месяц разочарованию не было предела, потому что на экране были всё те же 40 символов в строке, а что касается обещанных 64, то это прикручена была возможность горизонтальной прокрутки видимого окна по тексту со скоростью 1 столбец в секунду. Печально.

    В ПК8002 режим отображения 64 символов в строке заявлен и реализован, но через известное место. Тем не менее, детские мечты должны сбываться и мною была набросана небольшая прога, позволяющая увидеть на экране текст. Скормить можно любой файл, кодировку тоже можно выбрать какую хочешь, но путём подсовывания нужного знакогенератора. Я ориентировался на ansi-windows. Интерфейс, разумеется, отсутствует в принципе. Кроме прокрутки вниз и выхода больше никаких функций нет, но такая задача и не ставилась. Хотелось просто увидеть, как 64-символьный текст будет смотреться на экране.

    Главная проблема с реализацией этого режима состоит в том, что один буфер экрана используется для двух наборов знакогенераторов, поэтому невозможно реализовать текстовый режим: бросил код символа в буфер, а символ отобразился на экране. Вместо этого очень быстрого способа выведения текста, нужно в буфер забить три последовательности 0-0ffh, а в знакогенераторы закидывать непосредственно 8 байт изображения символа. Работает намного медленнее. В итоге получилась скорость прокрутки, соизмеримая с LIST Бейсика ПК8000. Ещё одна странность реализации связана с тем, что нечётные знакоместа адресуются знакогенераторами, определяемыми параметром Адрес Массива Графики, а чётные - Адрес Массива Цвета. И ещё один смешной нюанс, на который у меня ушло пару дней и куча нервов, связан с тем, что цвет фона и символов в этом режиме задаётся портами 8ah и 8bh. При прочтении руководства по работе видеоадаптера и видеопроцессора про это не говорится ни слова, поэтому пока я, матерясь, не изгрыз описание всех портов, у меня упорно отображался на экране чёрный квадрат в синей рамочке.

    Из спец-кодов поддерживается только табуляция, перевод строки и возврат каретки, плюс реализован перенос слов, а-ля выравнивание текста по левому краю. В целом, выглядит забавно, когда прямо из форума копируешь текст и тут же его закидываешь в ОЗУ ПК8002 и любуешься на экране.

    Скриншоты



    [свернуть]

Страница 3 из 3 ПерваяПервая 123

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

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

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

Похожие темы

  1. ПК8002 Эльф. Что внутри?
    от Mifody в разделе Разное
    Ответов: 15
    Последнее: 10.05.2015, 13:17
  2. Ответов: 1
    Последнее: 11.08.2011, 20:49
  3. Дизассемблер BASIC-48
    от Prusak в разделе Пресса
    Ответов: 4
    Последнее: 22.06.2010, 20:52
  4. Новый дизассемблер для ZX
    от Strunov в разделе Программирование
    Ответов: 32
    Последнее: 01.08.2007, 10:39
  5. Дизассемблер TR-DOS
    от Sonic в разделе Оси
    Ответов: 5
    Последнее: 23.10.2006, 07:42

Ваши права

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