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

User Tag List

Страница 2 из 9 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 88

Тема: SD-ROM Картридж

  1. #11
    Activist Аватар для artyr_n
    Регистрация
    02.02.2014
    Адрес
    г. Одесса, Украина
    Сообщений
    337
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    esl, я почитал Вашу разработку и документацию к ней. Читать только A0 это интересная идея, но просматривая листинг загрузчика я там увидел что проверка наличия ПЗУ в векторе это вычитывание с какогото адреса подряд 55 АА, так что в первый момент все равно нужно будет анализировать больше чем одну линию, еще и сброс системы туда не выведен и отдельного сигнала как в корвете нет (запрос наличия картриджа в разъеме), поэтому понять что в системе произошёл сброс и идет проверка наличия картриджа можно видимо анализируя еще и старший адрес. Соберу железо попробую разные варианты.

    ---------- Post added at 06:32 ---------- Previous post was at 05:43 ----------

    Дизассемблированный код загрузчика

    Код:
    ; проверка наличия модуля ППЗУ
    M0107H: MVI     A,82H           ; код управления порта
            OUT     04              ; записать в РУС
            MVI     B,0FFH          ;
    M010DH: MOV     A,B             ;
            OUT     05              ;
            MVI     A,0FEH          ;
            OUT     07              ;
            IN      06              ;
            CPI     55H             ; проверка ключевого кода 55
            JNZ     M012EH          ; код не совпал
            MVI     A,0FFH          ;
            OUT     07              ;
            IN      06              ;
            CPI     0AAH            ; проверка ключевого кода AA
            JNZ     M012EH          ;
            MOV     A,B             ;
            ANI     7FH             ;
            INR     A               ;
            MOV     D,A             ;
            JMP     M0136H          ; МППЗУ подключен - на выход
    M012EH: MOV     A,B             ;
            SUI     20H             ;
            MOV     B,A             ;
            JM      M010DH          ;
            XRA     A               ; обнулить А - МППЗУ не подключен
    M0136H: ORA     A               ;
            RET
    из него видно что по адресу 0xFFFE в ПЗУ должно быть 55, а по 0xFFFF должно быть AA. А если по адресу 0xFFFE нет 55 то начинает вычитать 0x20 и опять проверять, это видимо на случай если ПЗУ меньшего объема.
    Последний раз редактировалось artyr_n; 23.12.2014 в 05:40.

  2. #12
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    esl, приношу свои извинения, глючу...
    По не понятной причине, не воспринял используемую в Ваших текстах "А0" - как младший бит шины адреса. Поэтому ошибочно предположил о необходимости дополнительного тактового выхода.

    Цитата Сообщение от artyr_n Посмотреть сообщение
    ...
    Дизассемблированный код загрузчика
    Код:
    ; проверка наличия модуля ППЗУ
    ...
    из него видно что по адресу 0xFFFE в ПЗУ должно быть 55, а по 0xFFFF должно быть AA. А если по адресу 0xFFFE нет 55 то начинает вычитать 0x20 и опять проверять, это видимо на случай если ПЗУ меньшего объема.
    Вот и получается, что если загружать как ПЗУ, то минимальный размер 8Кб, можно конечно отдать только 2Кб, потом выставить на шине 00 и ждать когда Вектор считает остальные "пустые" данные.
    Кстати, признаком начала чтения модуля "ПЗУ" со стороны Вектора соответственно является перебор адресов, соответственно на выходе "ПУ" будут перебираться старшие байты адреса:
    FF DF BF 9F 7F 5F 3F, ну а при появлении там 1F уже нужно "идентификатор ПЗУ" подсовывать (Если я правильно понял и опять не глючу)...
    Последний раз редактировалось KTSerg; 23.12.2014 в 10:36.

  3. #13
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от artyr_n Посмотреть сообщение
    Читать только A0 это интересная идея, но просматривая листинг загрузчика я там увидел что проверка наличия ПЗУ в векторе это вычитывание с какогото адреса подряд 55 АА, так что в первый момент все равно нужно будет анализировать больше чем одну линию
    тут похоже более глубокая проблемма
    и надо дизассемблировать ВСЕ вырианты ПЗУ
    т.к. тот код что я приводил выше из одного из них, и в нём нет такой проверки!
    и похоже есть несколько вариантов !!

    Однакое если считать что у вас всегда стоит тот код что проверяет 0x55aa
    то просто сделать чтобы первые два байта что выдаёт эмулятор были именно 0x55 0xAA
    Т.о. вообще игнорируем шину адреса (кроме A0)
    и выдаём именно те байты которые ожидает загрузчик.

    Если вариантов всегда 2 то можно просто добавить кнопку "выбора типа ПЗУ".

    Врядли у реального пользователя больше 1го пзу на реальной машине и просто можно выбрать нужный.

    По поводу детекта ресета - это возможно проблемма
    как вариант забить на это дело (ввести кнопку ресета эмулятора)
    или посмотреть нет ли там на разъеме чего-то что таки зависит от ресета.

    По поводу главного заргузчика:

    как вариант написать более сложный код загрузчика
    который детектирует загрузились ли два "лишних байта" и обрабатывает это.

    речь вот о чём,
    если загрузчик проверяет наличие 0x55aa то загрзится код без этих байт
    если же загрузчик не проверяет то получим в памяти да лишних байта
    (и код как бы сдвинут на два байта)
    55AA ->
    mov d,l
    xra d
    т.е. ничего опасного если на них попадёт управление.

    а дальше определить есть ли эти байты и выполнить две ветки начального загрузчика.
    каждая для своего типа.

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

    Код:
            nop
            nop
            nop
            nop
            nop
            nop
            nop
    
            ld      de,0
            ld      hl,0
            ld      a,(hl)
            cp      0x55
            jp      nz,no55AA
            inc     hl
            ld      a,(hl)
            cp      0x55
            jp      nz,no55AA
    
            nop             ;если код сдвинут попадем сюда
            nop
    
    code55AA:
            ld      de,2
    
            nop             ;если код сдвинут попадем сюда
            nop
    no55AA:
            ld      hl,code
            add     hl,de   ;сдвинуть на 2 байта
    
            ld      de,newCODE
            ld      bc,LEN
    
            nop             ;если код сдвинут попадем сюда
            nop
    
    .a1:
            ld      a,(hl)
            ld      (de),a
            inc     hl
            inc     de
            dec     bc
            ld      a,c
            or      b
            jp      nz,.a1
    
            jp      newCODE
    Последний раз редактировалось esl; 23.12.2014 в 14:00.

  4. #14
    Activist Аватар для artyr_n
    Регистрация
    02.02.2014
    Адрес
    г. Одесса, Украина
    Сообщений
    337
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    т.к. тот код что я приводил выше из одного из них, и в нём нет такой проверки!
    Это похоже код который рассчитывался загружаться с магнитной ленты и грузить программу из ПЗУ модуля, поэтому в нем нет никаких проверок. В загрузчиках которые стоят на плате проверки должны быть так как в основном они мультизагрузочные КВАЗИДИСК, ДИСКОВОД, МППЗУ, МАГНИТОФОН, СЕТЬ, с пумощью F1 F2 F3 и их комбинаций можно принудительно заставить грузится с определенного устройства, но если устройство не обнаружено то загрузчик автоматически переходит на загрузку со следующего найденного устройства.
    Это видно если посмотреть весь код загрузчика который я привел выше.

  5. #15
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тем проще : )
    Тогда перед кодом пзу всегда выдаем два байта
    И все работает

    ---------- Post added at 13:35 ---------- Previous post was at 13:33 ----------

    Но проверить все загрузчики для надёжности надо бы

  6. #16
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проблема отсутствия ресета и необходимости синхронизировать передачу данных снимается если применить протокол "ЛВС"
    "Контроллер ЛВС" постоянно ждет от Вектора определенных "манипуляций" на шине.
    После чего они договариваются и переливают данные.
    Для АтМеги8 я исходник "контроллера ЛВС" вроде выкладывал...
    В них изменений-то совсем ничего, кидать в буфер данные не принятые из СОМ-порта, а из массива прошивки (или где код загрузчика будет храниться).

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

  8. #17
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    главное вгрузить загрузчик любым стандартным способом!

    а это ЛВС есть во всех загрузчиках ?

  9. #18
    Activist Аватар для artyr_n
    Регистрация
    02.02.2014
    Адрес
    г. Одесса, Украина
    Сообщений
    337
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Для АтМеги8 я исходник "контроллера ЛВС" вроде выкладывал...
    Помню что читал про такую разработку, но найти не смог. Можете пальцем ткнуть куда она спряталась?

  10. #19
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от artyr_n Посмотреть сообщение
    Помню что читал про такую разработку, но найти не смог. Можете пальцем ткнуть куда она спряталась?
    Вот, среди "Железа"
    http://zx-pk.ru/showthread.php?t=8669&page=15
    Сначала выкладывал только готовый проект, потом прошивку вместе с вариантом для 51-го проца.

    А на счет того, во всех ли загрузчиках есть ЛВС, это конечно вопрос, не могу утверждать, в "заводском" на сколько могу судить - есть...

  11. #20
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    и винкса был вариант (кажется для специалиста)
    где начальный загрузчик через магнитовон грузится
    делать как раз очень просто

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

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

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

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

Похожие темы

  1. 16КБ C64 картридж
    от greenpill в разделе Commodore 16/64/128
    Ответов: 37
    Последнее: 13.05.2015, 01:43
  2. Ответов: 2
    Последнее: 15.12.2010, 17:04
  3. Картридж NES и денди
    от REMR в разделе Nintendo
    Ответов: 3
    Последнее: 18.10.2010, 19:29
  4. Что за картридж?
    от murgatroid_79 в разделе Зарубежные компьютеры
    Ответов: 1
    Последнее: 20.05.2010, 10:01
  5. Flash-картридж...
    от Elya в разделе Память
    Ответов: 1
    Последнее: 20.08.2009, 14:49

Ваши права

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