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

User Tag List

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 88

Тема: Контроллер дисковода для "Львов ПК-01"

  1. #31
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Информация по портам Львова.

    Любая операция IN или OUT в порты 0 - 191 будет подвешивать компьютер, из за снятия сигнала READY на CPU.
    В руководстве по Бэйсику для команды OUT указано, что разрешенные порты 192 - 255.
    Плохо, что:
    - не пояснили причин
    - не сделали проверки и защиты от подвисания.

    Причина кроется в следующем:
    Арбитр доступа к видео ОЗУ построен на микросхемах D1.1 D1.2 D5.2 D4
    Он Реагирует на доступ по адресам A14 = A15 = 1 но неразличает доступ к ОЗУ или портам!
    CPU на командах IN и OUT дублирует A0-A7 на A8-A15

    Почему так сделано? Х.З.
    Доработать можно включением пары вентилей в цепь сигнала D5.2-12
    Но думаю такой цели нет. Надо просто знать и правильно эмулировать.

    PS сканировать порты ненадо!
    во Львове нет ничего кроме двух ВВ55 по адресам
    С0-С3 и D0-D3
    + при эмуляции надо учесть, что A2 игнорируется !
    т.е. С0-С3 эквивалентно С4-С7
    и D0-D3 эквивалентно D4-D7

    + есть безадресный порт на запись
    триггер D5.1

    устанавливается при сбросе
    и сбрасывается при первой записи в любой порт

    это схема начального старта
    процессор ВМ80 стартует с нулевого адреса, соответственно выбор ПЗУ на старте не такой как в нормальном состоянии.
    триггер блокирует участие в выборе А14 и А15.
    т.е. код из ПЗУ которое в нормальном состоянии C000 времменно сидит на 0000
    первые команды должны быть типа

    jmp C003
    out A,(xx)

    но совсем необязательно переключать сразу

    для коректной эмуляции надо продолжать мапить адреса по другому пока не пройдет первая команда out
    ----------
    2 дополнения:
    - на схеме Львова ОПЕЧАТКА D28-3 подключен не на А3, а на А5 !!!
    - D28 выбирается так же как и D9 схемой начального сброса,
    т.е. после сброса до прохождения первой команды OUT дешифрация адреса для портов неработает. Думаю на практике это ничего незначит.
    Первая команда типа OUT C3,xx достигнет своей цели, просто сигнал CS
    будет немного задержан.
    -----------
    ответы на вопросы:
    > что происходит на реале, когда мы обращаемся к портам
    > 0xE0 - 0xFF? В эмуляторах они есть зеркалятся на порты 0xC0 - 0xDF.
    > Насколько верно такое поведение?

    отвер на вопрос: неверно.
    там есть 4 линии выбора портов на D28
    С0-С7
    D0-D7
    E0-E7
    F0-F7

    первые 2 заведены на ВВ 55 и поскольку А3 игнорируется, то
    С0-С3 = С4-С7
    D0-D3 = D4-D7

    все 4 линии выведены на коннектор ВНЕШ1

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

  3. #32
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обновлен софт

    http://zx-pk.ru/showpost.php?p=738375&postcount=240

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

  4. #33
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попала ко мне в руки игра Дракула в виде teledisk образа диска.
    HxC софт понимает TD0 формат, поэтому все было просто переброшено на эмулятор дисковода и сразу заработало на живом львове.

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

    Это было все очень интересно и заставило потратить пару часов на дизассемблирование хамелеона :-)

    Вот как это работает.
    Сам диск интересно размечен. Установить структуру очень просто: берем HxC софт, загружаем TD0 и сохраняем как XML.

    Вот небольшая выдержка:
    Код:
    <number_of_track>83</number_of_track>
    
    <number_of_side>2</number_of_side>
    
    <format>IBM_FM</format>
    
    <start_sector_id>1</start_sector_id>
    
    <sector_per_track>3</sector_per_track>
    
    <sector_size>1024</sector_size>
    
    <formatvalue>0</formatvalue>
    
    <gap3>255</gap3>
    
    <bitrate>250000</bitrate>
    
    <pregap>0</pregap>
    
    -<sector sector_size="1024" sector_id="1">
    
    -<sector sector_size="1024" sector_id="16">
    
    -<sector sector_size="128" sector_id="19">
    <data_fill>0x00</data_fill>
    т.е. по 3 сектора на дорожке
    номера секторов 1, 16, 19
    размеры секторов 1024, 1024, 128
    сектор 128 байт всегда заполнен нулями, два других неcут информацию.

    Хамелеон пытается прочесть первый сектор каталога в буфер 0xBD00
    ВГ93 читает сектор целиком, все 1024 байта.
    Получается buffer overflow attack :-)
    Начало стека известно из листинга хамелеона 0xBE80
    0xBE80-0xBD00 = 0x180

    вычислять положение указателя на момент чтения сектора совсем необязательно, можно просто пробить стек нужным адресом на некоторую глубину. В Дракуле 16 раз повторяется адрес 0xBD00

    Вот такие люди в стране советской были! :-)
    Справедливости ради стоит заметить, что авторы Хамелеона и Дракулы - одни и те же люди.
    Последний раз редактировалось kapitan-u; 23.09.2014 в 22:14.

  5. #34
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прилагаю IDA64 project file
    дизассемблированный и откоментированный Хамелеон.
    Все адреса переменных и переходов идентифицированны и прописанны текстом.
    + просто текстовый файл кому лень IDA64 ставить
    Вложения Вложения
    Последний раз редактировалось kapitan-u; 29.09.2014 в 23:55.

  6. #35
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видимо есть смысл еще внимательнее посмотереть на листинг хамелеона. В будущем обновлю его.
    Как минимум нашел одну багу: при смене драйва хамелеон сначала переключает драйв, а потом прерывает текущую команду ВГ93. Так можно диск испортить во время команды записи. Но вероятность маленькая. В самом хамелеоне драйв можно поменять только из командной строки, когда ничего не выполняется. Это только для внешних програм использующих вызовы хамелеона может быть проблемой.
    Последний раз редактировалось kapitan-u; 24.09.2014 в 10:03.

  7. #36
    GOD MODE Аватар для DATAsoft
    Регистрация
    25.02.2006
    Адрес
    Нижний Новгород
    Сообщений
    2,696
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    18 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #37
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #38
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обновил
    http://zx-pk.ru/showpost.php?p=739589&postcount=34

    неизвестные системные вызовы сократились с 11 до 5, выяснены все командные клавиши

  10. #39
    Member Аватар для liberation
    Регистрация
    02.05.2010
    Адрес
    г. Запорожье, Украина
    Сообщений
    57
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от kapitan-u Посмотреть сообщение
    неизвестные системные вызовы сократились с 11 до 5, выяснены все командные клавиши
    Удалось описать четыре из пяти оставшихся процедур. Последний из могикан - процедура 0xE043. Возможно, кто-нибудь захочет показать свое кунг-фу и разберется, что она точно делает. Пока ясно, что это "хвост" процедуры теста ОЗУ (во "Львове" оказывается и такой есть). Вероятно, это тест видеоОЗУ. Но явного выхода из этой процедуры нет.

  11. #40
    Activist
    Регистрация
    07.03.2014
    Адрес
    Vancouver, Canada
    Сообщений
    401
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    скоро можно будет обрабатывать напильником и компилировать назад :-)
    вопрос зачем это надо?

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Контроллер дисковода для "Ленинград-2"
    от freddy в разделе Ленинград
    Ответов: 49
    Последнее: 02.10.2014, 09:27
  2. Опознать клон Спектрума ("Мико", возможно, г. Львов)
    от alexshap в разделе Несортированное железо
    Ответов: 6
    Последнее: 10.12.2012, 20:12
  3. Эмулятор "Львов ПК-01" на "Dingoo A-320"
    от Tim0xA в разделе Львов
    Ответов: 3
    Последнее: 03.07.2012, 10:51
  4. Аукцион. Компьютер "Львов"
    от riogen в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 28.03.2011, 10:52
  5. Продам печатные платы: от "Львов-48" и клавиатуры
    от Tim0xA в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 27.12.2008, 16:41

Ваши права

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