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

User Tag List

Страница 20 из 34 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 332

Тема: ПК8000 - Софт: Старый и Новый

  1. #191
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,917
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    695
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от scaraby Посмотреть сообщение
    Поковырял программы, которые выложил камрад Mick в другой ветке. В принципе, там повторы в основном того, что имеется уже в Интернете, но вот тренажёр-инструкцию клавиатуры такую раньше не видел, поэтому решил сюда бросить ссылку на cas.
    А можешь еще сделать список прог на кассетах, чтобы соспоставить с производственными номерами, указанных на кассетах.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  2. #192
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    93
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну вот как-то так получилось. Файл BOOL - это игра МЯЧИК, файл без имени - это TEST, в котором название "Хобби" в начальной заставке заменено на "СУРА", KV - однобитная программа на бейсике, которая что-то вычисляет, ХИМИЯ - набросок на будущую таблицу Менделеева, а HELP - англо-русский словарь, построенный по принципу IF A$="CAT" THEN PRINT "КОТ".

    Есть у меня такое подозрение, что вторая кассета была перезаписана владельцем. На WAV очень явно видны различия между сигналами, уровни у каждой пары файлов сильно отличаются.

    Нажмите на изображение для увеличения. 

Название:	ПХ_20008-0112_01_N292_XII-87.jpg 
Просмотров:	316 
Размер:	87.5 Кб 
ID:	58700Нажмите на изображение для увеличения. 

Название:	ПХ_20008-0112_01_N503_II-89.jpg 
Просмотров:	305 
Размер:	84.6 Кб 
ID:	58699
    Последний раз редактировалось scaraby; 08.11.2016 в 23:11.

  3. #193
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,917
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    695
    Поблагодарили
    368 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от scaraby Посмотреть сообщение
    Есть у меня такое подозрение, что вторая кассета была перезаписана владельцем. На WAV очень явно видны различия между сигналами, уровни у каждой пары файлов сильно отличаются.
    Скорее всего объяснение гораздо проще. Одна кассета датируется 87 годом, а вторая 89.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  4. #194
    Member Аватар для scaraby
    Регистрация
    06.06.2015
    Адрес
    г. Раменское, Московская обл.
    Сообщений
    93
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поскрёб тут по всем сусекам и сложил в одну папку все программы, которые у меня имеются для ПК8000. Набралось на сегодняшний день 300 файлов с хвостиком. Отсортировал по алфавиту, чтобы можно было в любой момент добавить файлы, если что-то новое отыщется. WAV не стал выкладывать, потому что есть утилита cas2wav. Выложил CAS. Кому надо, берите.

    На Google Disk.

    Там же в архиве zip.

  5. #195
    Junior Аватар для Valentinus
    Регистрация
    19.12.2016
    Адрес
    г. Пенза
    Сообщений
    7
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в 1992году написал игру Space Wings - она в архиве Алексея под названием (SWING.HEX.cas)
    Нажмите на изображение для увеличения. 

Название:	s_wings.jpg 
Просмотров:	342 
Размер:	21.3 Кб 
ID:	59073

    в ней мной была сделана защита от копирования (при запуске с чужого диска, на втором этапе игра вылетала; при запуске с кассеты - на первом). к сожалению, ее так и не сломали.

    в принципе, я помню, на чем основывалась защита, можно было бы ее убрать
    к сожалению у меня уже нет ПК8000 (да и знаний не осталось),
    но может кому-то из форумчан будет интересно подарить людям возможность поиграть в еще одну игру?

    смысл защиты был в том что в дисковой системе (не синей с панелью файлов, а черно-зеленой, с командной строкой) менялся цвет символов; он где-то кодировался байтом, насколько помню там по умолчанию был 0x02 (зеленые буквы) на 0x03 (светло-зеленые буквы), или наоборот, сейчас уже не помню, но это можете посмотреть.

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

    как я уже говорил, все было рассчитано так, что первый уровень запускался, а на втором программа вылетала (но если используется файл с кассеты, то в этой ячейке наверное не 0x02 и не 0x03, а просто 0x00 или 0xff, поэтому вылет происходит сразу, на первом уровне).

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

    ЗЫ. в игре пять этапов. после последнего - небольшой сюрприз
    Последний раз редактировалось Valentinus; 21.12.2016 в 15:18. Причина: дополнил

  6. #196
    Activist
    Регистрация
    18.02.2010
    Адрес
    г. Пенза
    Сообщений
    401
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цвет текста и фона в системе МДОС задается командами:
    mvi A, 2
    out 88h
    расположенными по адресам 0DA93h и 0DA95h соответственно. В образе диска это смещение 1713h и 1715h соответственно. То есть для изменения цвета достаточно поменять байт в файле образа по адресу 1714h. Например в файле DISK9.FDD. Цвет вполне себе меняется.
    Однако, программа все равно вылетает после заставки. Как будет время - разберусь. Может даже сегодня вечерком попробую.

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

  8. #197
    Junior Аватар для Valentinus
    Регистрация
    19.12.2016
    Адрес
    г. Пенза
    Сообщений
    7
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Однако, программа все равно вылетает после заставки. Как будет время - разберусь. Может даже сегодня вечерком попробую.
    хм. Алексей сказал, что он пробовал дважды считывать файл с кассеты, сравнил - ошибки при считывании нет. может кто-то уже наковырял до записи на кассету

    а есть ли в программе чтение памяти по адресу 0DA94h (т.е. кода цвета)? хотя , признаться. я по молодости еще тот затейник был, мог не напрямую адрес использовать, а вычислять сложением.
    может лучше пробежаться в турбодебаггере, до перехода к черту на кулички - по адресу вне адресного блока программы - понятно что где-то там и стоит эта "защита" (чорт бы ее побрал)

    PS спасибо, что взялись !
    Последний раз редактировалось Valentinus; 29.12.2016 в 21:47.

  9. #198
    Activist
    Регистрация
    18.02.2010
    Адрес
    г. Пенза
    Сообщений
    401
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запустил и даже немного поиграл. Итак, защита была не по цвету, а по байту в копирайте строки "МДОС 1.0 ". После версии стоит пробел, вот в этой ячейке и хранилось что-то нужное. Что именно - я пока не разобрался. Вообще складывается ощущение, что игрушка уже была кем то покоцана, либо попорчена. Например такой фрагмент:
    Код:
    RAM:F007                 mvi     a, 82h
    RAM:F009                 nop
    RAM:F00A                 nop
    RAM:F00B                 mvi     a, 0FCh
    RAM:F00D                 out     80h
    Говорит о том, что здесь забили нопами запись в какой-то порт.
    Или:
    Код:
    RAM:917E do_GAME:
    RAM:917E                 mvi     a, ' '
    RAM:9180                 lxi     bc, 768         ; 32*24
    RAM:9183                 lxi     hl, 0
    RAM:9186                 call    sv_FILLCHAR     ; clear screen
    RAM:9189                 call    sub_9E74        ; clear variables
    RAM:918C                 ei
    RAM:918D                 nop
    RAM:918E                 nop
    RAM:918F                 nop
    RAM:9190                 nop
    RAM:9191                 nop
    RAM:9192                 nop
    RAM:9193                 nop
    RAM:9194                 nop
    RAM:9195                 nop
    RAM:9196                 nop
    RAM:9197                 nop
    RAM:9198                 nop
    RAM:9199                 nop
    RAM:919A                 nop
    RAM:919B                 nop
    RAM:919C                 nop
    RAM:919D                 nop
    RAM:919E                 nop
    RAM:919F                 nop
    RAM:91A0                 nop
    RAM:91A1                 nop
    RAM:91A2                 nop
    RAM:91A3                 nop
    RAM:91A4                 nop
    RAM:91A5                 nop
    RAM:91A6                 nop
    RAM:91A7                 nop
    RAM:91A8                 nop
    RAM:91A9                 nop
    RAM:91AA                 nop
    RAM:91AB                 nop
    RAM:91AC                 nop
    RAM:91AD                 nop
    RAM:91AE                 nop
    RAM:91AF                 nop
    RAM:91B0                 nop
    RAM:91B1                 nop
    RAM:91B2                 nop
    RAM:91B3                 nop
    RAM:91B4                 nop
    RAM:91B5                 nop
    RAM:91B6                 nop
    RAM:91B7                 nop
    RAM:91B8                 nop
    RAM:91B9                 nop
    RAM:91BA                 nop
    RAM:91BB                 nop
    RAM:91BC                 nop
    RAM:91BD                 nop
    RAM:91BE                 nop
    RAM:91BF                 nop
    RAM:91C0                 nop
    RAM:91C1                 nop
    RAM:91C2                 nop
    RAM:91C3                 nop
    RAM:91C4                 nop
    RAM:91C5                 nop
    RAM:91C6                 nop
    RAM:91C7                 nop
    RAM:91C8                 nop
    RAM:91C9                 nop
    RAM:91CA                 nop
    RAM:91CB                 nop
    RAM:91CC                 nop
    RAM:91CD                 nop
    RAM:91CE                 nop
    RAM:91CF                 nop
    RAM:91D0                 nop
    RAM:91D1                 nop
    RAM:91D2                 nop
    RAM:91D3                 nop
    RAM:91D4                 nop
    RAM:91D5                 nop
    RAM:91D6                 nop
    RAM:91D7                 nop
    RAM:91D8                 nop
    RAM:91D9                 nop
    RAM:91DA                 nop
    RAM:91DB                 lxi     bc, 64
    RAM:91DE                 lxi     de, word_8F80
    RAM:91E1                 lxi     hl, word_8FC0
    RAM:91E4                 call    sv_MEMCOPY
    RAM:91E7                 nop
    RAM:91E8                 nop
    RAM:91E9                 nop
    RAM:91EA                 mvi     a, 26
    RAM:91EC                 sta     tmpData
    RAM:91EF                 lxi     de, 0
    RAM:91F2
    RAM:91F2 loc_91F2:
    RAM:91F2                 lxi     bc, 32          ; bc = screen width
    RAM:91F5                 lxi     hl, screenBuffer ; 832 bytes
    RAM:91F8                 call    sv_MEMCOPY
    RAM:91FB                 lda     tmpData
    RAM:91FE                 dcr     a
    RAM:91FF                 sta     tmpData
    RAM:9202                 jnz     loc_91F2
    RAM:9205 ; put sprite Heroes
    Собственно сам подозрительный код:
    Код:
    RAM:F07F                 mvi     a, 0
    RAM:F081                 sta     byte_DA82
    По адресу DA82h как раз тот самый пробел в копирайте МДОС. Если заменить 0 на 3, то игра запускается. В файле CAS это смещение 011Eh. Одно но, на экране лезут какие-то артефакты
    В принципе можно дальше поковыряться, да попробовать подправить код. Но это после праздников. Ну или заново написать, таблицы знакогенераторов и цветов сохранились и я могу их легко вытянуть.
    PS: определять оставшуюся жизнь игрока по цвету его корабля - это оригинально

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

    Вот теперь полностью разобрался в защите.
    Защита в следующем. Из ячейки 0DA82h берется байт. К нему прибавляется 7Fh и полученный результат пишется на адрес 9BC8h. В этом адресе находится старший байт параметра команды CALL (младший байт постоянный и равен 1Bh). То есть, происходит вызов подпрограммы по адресу (([0DA82]+7Fh) << 8) | 1Bh.
    Пробежался по все адресам XX1Bh, начиная с 7F1Bh. По адресу 9B1Bh весьма "подозрительная" подпрограмма. Поставил в ячейку DA82h значение 9Bh-7Fh = 1Ch. И все, работает
    Для не программистов. В файле SWING.CAS нужно в ячейку по адресу 011Eh прописать значение 1Ch.

  10. #199
    Junior Аватар для Valentinus
    Регистрация
    19.12.2016
    Адрес
    г. Пенза
    Сообщений
    7
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Red face

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Запустил и даже немного поиграл. Итак, защита была не по цвету, а по байту в копирайте строки "МДОС 1.0 ". После версии стоит пробел, вот в этой ячейке и хранилось что-то нужное. Что именно - я пока не разобрался. Вообще складывается ощущение, что игрушка уже была кем то покоцана, либо попорчена.
    возможно это уже кто-то разобрался в защите и модернизировал ее, за собой я такого не помню, хотя давно было, может просто забыл ("позор на мои седины!"(С)). помню что когда продавал ее, покупатель попался дотошный хитрющий мужик, заставил меня показать где менять системный файл, чтоб он тоже мог ее копировать

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    PS: определять оставшуюся жизнь игрока по цвету его корабля - это оригинально
    сэкономил байт и бесконечное кол-во жизней сложнее вписать

    Цитата Сообщение от DemonId7 Посмотреть сообщение
    Для не программистов. В файле SWING.CAS нужно в ячейку по адресу 011Eh прописать значение 1Ch.
    попробовал
    swings.hex.zip

    ура, работает!

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

    Андрей, большое вам спасибо и от меня, и от лица всех тех, кто еще играется с ПК8000!
    Это просто шикарный Новогодний Подарок всем нам!!!!
    Последний раз редактировалось Valentinus; 31.12.2016 в 09:16.

  11. #200
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Valentinus Посмотреть сообщение
    и в emu скорость эмуляции не понизить , к сожалению
    Ну, в принципе, можно понизить CPUclock в конфиге. Должно замедлиться.

Страница 20 из 34 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. ПК8000 - Утилиты
    от XobbiMan в разделе ПК8000
    Ответов: 103
    Последнее: 22.06.2023, 00:09
  2. ПК8000 - Общие вопросы
    от Mick в разделе ПК8000
    Ответов: 596
    Последнее: 19.04.2023, 21:02
  3. Ответов: 183
    Последнее: 21.07.2022, 07:20
  4. Ответов: 206
    Последнее: 30.05.2022, 17:15
  5. Новый софт
    от Vitamin в разделе Софт
    Ответов: 0
    Последнее: 25.01.2005, 00:35

Ваши права

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