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

User Tag List

Страница 1 из 13 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 122

Тема: Скорпион ZS с большим ПЗУ

  1. #1
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Скорпион ZS с большим ПЗУ

    есть у кого-нибудь схема включения проф-ПЗУ?
    а то непонятно, как страницы переключаются

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

  3. #2
    Junior Аватар для Neu Animal
    Регистрация
    17.01.2005
    Адрес
    Великий Новгород
    Сообщений
    23
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я так понимаю от этого напрямую зависит будет твой эмуль работать с винтом scorpa или нет?!
    Если так то давай вместе искать ! Очень надо!

  4. #3
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,544
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    384
    Спасибо Благодарностей получено 
    1,170
    Поблагодарили
    381 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Схема включения тебе ни о чем не скажет, так как она основана на Альтере... Помнится, авторы эмулятора Z80stealth долго бились над раскрытием секрета переключения страниц внутри ПрофПЗУ. Сами не имея реального Скорпиона, они присылали мне короткие программки, которые я запускал на своем Скорпионе, а полученные логи работы этих программ отсылал обратно им. Обращались они и к разработчикам эмулятора RealSpeccy, который первым начал эмуляторвать ПрофПЗУ Скорпиона, однако авторы этого эмулятора не пожелали раскрывать секрета. Я уже не помню как, но секрет переключения страниц ПрофПЗУ всё же был раскрыт и, на сколько я помню, авторы Z80stealth даже поделились этим секретом с общественностью. Правда я уже успел забыть каким именно образом организовано это переключение

    Если ты действительно тот самый SMT, который автор UnrealSpeccy и у тебя есть желание сделать эмуляцию ПрофПЗУ, то я могу постараться узнать всё, что необходимо для создания подобной эмуляции.
    С уважением, Станислав.

  5. #4
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,149
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот два мнения на проблему (одно из них мое):
    = Реально на реальном! (2:5030/827.2) =========================== REAL.SPECCY =
    Msg : 1012 of 1019
    From : Vassili Klimov 2:5054/37.28 30 Jul 01 00:22:16
    To : All 30 Jul 01 01:19:58
    Subj : CRC и коммутация ПрофПЗУ в скорпе
    ================================================== =============================
    у здравствуй, All !

    Yahoo!!!!!!!! Убив несколько часов на изучение ПрофПЗУ довожу до вашего
    сведения общий принцип управления. Итак, начнем с описания: ППЗУ 512кб состоит
    из 2х половинок по 256кб никоим образом не связанных с друг другом и
    переключающихся тумблером. Соответственно в каждой из этих частей полностью
    содержится система (по моим оценкам она занимает 70-80кб).
    Далее, каждая часть побита на блоки по 64кб. Переключение внутри блоков банков
    по 16кб стандартное: если в 1FFD бит D1=1, то включено ПЗУ монитора (при любом
    значении бита D4 7FFD), иначе если D4=1 (7FFD), то басик48, если D4=0, то
    басик128. Чтобы, включить пзу трдоса нужно при включенном басике48 сделать
    JP #3DXX.
    Теперь о переключении блоков. Сначала врубается область теневика (D1=1,
    1FFD). Пусть номер блока (0-3) задан в А, тогда у МОА видим следущее:
    ld hl,#0110:add a,l:ld l,a:jr nc,m1:inc h
    m1 ld l,(hl):ld l,(hl):ret
    в строке с m1 видим 2 ключевые команды ld l,(hl)! Первая просто читает значение
    из таблицы (всего там их 4 штуки: #00,#04,#08,#0c), а вторая врубает блок.
    Вроде все тривиально, однако непонятно зачем нужна таблица? Причем в каждом из
    блоков таблицы разные: используются те же значения 0,4,8,c, но порядок их
    расположения другой! Также отмечу, что ячейка #0101 используется для
    идентификации текущего блока. Пример: запомнили число из #0101, включили
    какой-нибудь блок, выполнили какие-либо операции, для восстановления
    предыдущего блока использовали запомненное значение и т.п.


    = Кул-кодеры на спектруме (500:812/1.507) =========================== CODE.ZX =
    Msg : 195 of 195
    From : Vlad Sotnikov 500:812/8.9 21 Mar 01 21:30:50
    To : All 23 Mar 01 00:04:06
    Subj : Переключение страниц ПрофПЗУ.
    ================================================== =============================
    Привет, All!

    Я подготовил сабж для автора эмулятора Z80Stealt.
    Однако я подумал, что она будет небезинтересна и
    реальщикам, поскольку до сих пор о данной проблеме
    ходят лишь слухи и не существует мало-мальски
    достоверной информации. Поэтому я надеюсь, что в
    ходе обсуждения, проблема переключения страниц
    ПрофПЗУ более-менее прояснится.


    ----------------- mail begin here --------------------

    Извини, что отвечаю тебе так поздно - признаться, твоя
    просьба заставила меня достаточно помучаться, чтобы выяснить,
    как же все-таки переключаются страницы в ПрофПЗУ. Вначале я
    начал копать эмулятор MOA SPM. И напоролся там на команду,
    названную им SPM. Она имеет код #ED,#10 - и мне потребовалось
    немного времени, чтобы понять, что этот способ не имеет ничего
    общего с тем, как переключаются страницы на реальном спеке. А
    на реальном Скорпионе все происходит так:

    Известно, что для выполнения подпрограмм в дополнительных
    страницах используется команда RST #30, которая вызывается при
    включенном ПЗУ Монитора и 8-й странице. При этом она имеет
    следующий формат:
    RST #30
    DW адрес подпрограммы
    DB номер страницы (0...15)
    ...

    После выполнения подпрограммы снова включается основная
    страница монитора, и 8-я банка памяти. Hомера страниц имеют
    следующие соответствия:

    0 - 128 ПЗУ.
    1 - 48 ПЗУ.
    2 - Монитор (основная страница)
    3 - TR-DOS.
    ...

    С 4 по 15 - дополнительные страницы Монитора. Hо это все
    внешний уровень. Чтобы узнать, что же происходит на самом деле,
    я последовал за RST #30. Там управление передается в 8-ю
    страницу, и помещается собственно подпрограмма переключения
    страниц ПЗУ, причем очень запутанная. При желании можно ее
    посмотреть, но вот тот конечный результат, который я получил из
    анализа этого путанного кода MOA.

    Вся память ПрофПЗУ делится на определенное количество
    сегментов, в каждом из которых находится по 4 страницы. В
    ПрофПЗУ 27010 таких сегментов 2, в 27020 - 4 и в Пзу 27040
    вероятно тоже 4 сегмента, но основные страницы там
    продублированы. Однако это ни что иное, как догадка.
    Я копал ПЗУ 27020, и поэтому описываю имеющиеся в нем 4
    сегмента. Как все происходит в других ПЗУ, я точно не знаю.
    Внутри каждого сегмента страницы переключаются стандартным для
    них способом - через порты #1FFD,#7FFD и обращением к адресу
    #3D30 (sic у MOA!) для 3-й страницы сегмента. То есть,
    допустим, 7-я страница ПЗУ, которой соответствует 3-я страница
    1-го сегмента, включается помещением адреса подпрограммы на
    стек и обращением к ней по адресу #3D30, где у нее стоит
    команда RET. И, наконец, самое главное: каким образом
    происходит переключение сегментов. Для этого необходимо считать
    значение из определенного участка памяти при включенном ПЗУ
    Монитора, т.е. при установленном 1-м бите порта #1FFD. Вот
    адреса для этих сегментов:

    0 - #0100
    1 - #010C
    2 - #0108
    3 - #0104

    Старшее значение - #01. Младшие значения адреса в памяти для
    переключения сегментов находятся опять-таки в основной странице
    Монитора по адресу #0110. Для получения младшего значения
    адреса необходимо к числу #0110 прибавить номер сегмента. Этот
    абзац я написал для того, чтоб ты мог посмотреть, какие адреса
    соответствуют сегментам в других версиях ПрофПЗУ (27010 и
    27040). Хочу заметить, что прошивка ПрофПЗУ 27040 (512К),
    которая ходит по сети, скорее всего битая. Однако ты вроде бы
    мне об этом уже писал.

    Как это не пародоксально, но такое переключение страниц -
    факт. Убедится в этом можно, написав такую подпрограммку:

    DI
    LD BC,#1FFD
    LD A,#12
    OUT (C),A

    LD A,(#010C)

    LD BC,#1FFD
    XOR A
    OUT (C),A
    EI
    RET

    И компьютер уходит в ступор. Теперь что касается прошивки
    ПЗУ: к сожалению, у меня ее нет. Hо для эмулятора я бы
    порекомендовал использовать прошивку ПрофПЗУ 27010, поскольку
    все эти дополнительные программы, сидящие в ROM памяти, страшно
    допотопные и никому на фиг не нужны - никто из реальщиков
    практически никогда их не запускает. В принципе прошивку можно
    выдернуть программно с реального спека таким образом:


    ORG #7000

    DI
    LD BC,#1FFD
    LD A,#12
    OUT (C),A

    RST #30
    DW COPY_PAGE
    DB страница.

    LD BC,#1FFD
    XOR A
    OUT (C),A
    RET

    COPY_PAGE LD HL,0
    LD DE,#8000
    LD BC,#4000
    LDIR : RET

    Подставляем номера страниц и снимаем их из ОЗУ. Hо здесь есть
    маленькая проблема: каждая четвертая страница сегмента
    (3,7,11,15). Дело в том, что для спека это страницы TR-DOS'а, и
    в случае, если выполняемый код выходит за пределы ПЗУ, то
    включается "ПЗУ 48" - 1-я страница сегмента. И если 3-ю страницу
    взять очень легко (стандартный TR-DOS), то страницы 7,11 и 15
    вызывают затруднение. Однако в случае эмулирования прошивки
    27010 нам потребуется лишь 7-я страница.

    Вот, собственно, и все. Если возникнут какие-либо вопросы,
    пиши. Обязательно напиши, как - помогла тебе моя информация или
    ты все это уже знал? И напиши, удалось ли тебе вытащить 7-ю
    страницу. Если нет, то я что-нибудь придумаю.


    Счастливо, Влад (Vega, ex Style Group).

    --------------------- mail finished here ---------------------


    С уважением, Vega.

    --- Dos-Navigator_v1.50
    * Origin: SPbZXNet'2001 (500:812/8.9)

  6. #5
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    тепер расскажу, что сам за сегодня накопал...

    Z80S переключает банки по команде ld l,(hl) именно по адресу #E4B4. берет страницу из регистра L. то есть как-то подозрительно и слишком искуственно

    ещё собираюсь дизассемблировать real spectrum, там нет такого маразма, как этот вшитый адрес (да и вообще он славится точностью эмуляции железа). если там подтвердится чтение из специальных адресов #1xx, буду значит так и делать

    следующий вопрос - где взять большие прошивки, дайте ссылок. у меня есть только проф-ПЗУ на 128кб

  7. #6
    Veteran Аватар для jtn
    Регистрация
    15.01.2005
    Адрес
    Kievska Rus
    Сообщений
    1,149
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2SMT: по другому и быть не может, поскольку профпзу вставляется в платку, на которой Альтера, а сама плата вставляется в панельку обычного ПЗУ. Т.е. сигналы выбора старших банок могут формироваться только из частично адресной шины (a0-a13), шины данных, выбора ПЗУ и сигналов переключения банок внутри 64к.

    p.s. а нельзя ли сделать специальную модификацию (версию) Unreal'а для меня? (мне нужно изменений совсем чуть, но сам вряд ли скомпилю...)

  8. #7
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    посмотрим... чего изменить?

  9. #8
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию вот что я нашел в RAMSOFT Real Spectrum

    переключение окон выполняется при включенной системной странице
    (независимо, включение через out[#1FFD],2 или jp #3Dxx+out[#7FFD],0)

    дополнительно проверяется #7FFD bit 0 = 0
    переключение срабатывает при чтении по адресам #0104,#0108,#010C

    в таблице:
    адрес чтения/старое значение окна => новое значение окна | считанный байт

    0 1 2 3 0 1 2 3
    #0100 - - - - 00 0C ?? ??
    #0104 3 3 3 2 0C 00 ?? ??
    #0108 2 2 0 1 08 08 ?? ??
    #010C 1 0 1 0 04 04 ?? ??

    прочерк означает, что переключения не происходит вообще,
    вопросы - нет данных (у меня нет ПЗУ больше 128k)

    странное поведение RS: если в ПЗУ 1 банк таблица выглядит так

    0 1 2 3
    #0100 - - - -
    #0104 - - - -
    #0108 - - 0 1
    #010C 1 0 1 0

    хотя
    1. казалось бы, банки независимы и тумблер выбора старшего адреса не должен влиять на логику переключения.
    2. логично для аппаратуры использовать только младший бит от номера страницы, а не городить такие проверки

    это можно объяснить только тем, что у RAMSOFT не бывает ПЗУ 256k, только 128 или сразу 512 (как это соотносится с действительностью, были ли прошивки на 256кб?)

    вопрос - что такое CMOS и NVRAM в SMUC (неохота всё из RS выдирать, совсем не факт, что там правильно)

    и всё-таки, если есть схема SMUC, дайте ссылку. хотя бы буду знать, какие сигналы используются и что выходит на IDE (подключены ли INTRQ и CS1)

  10. #9
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию ещё пара вопросов

    у кого есть настоящий SMUC? проверьте, действительно ли после
    out (7FFD),1 окна ПРОФ-ПЗУ не переключаются

    и кто такой GMX? это только скорпионовский зверь?

  11. #10
    Junior Аватар для Neu Animal
    Регистрация
    17.01.2005
    Адрес
    Великий Новгород
    Сообщений
    23
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да GMX это действительно только Скорпионовская примочка.
    По иронии судьбы у меня есть прошивка большой ПрфПЗУ .
    ирония в том что она у меня на скорповом винте а скорп приказал жить долго

Страница 1 из 13 12345 ... ПоследняяПоследняя

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

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

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

Ваши права

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