User Tag List

Страница 24 из 60 ПерваяПервая ... 202122232425262728 ... ПоследняяПоследняя
Показано с 231 по 240 из 594

Тема: Компьютер "Арго ФВ-6511"

  1. #231

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Эмуляцию экрана я ещё не делал, но сам ZX стартует, правда вместо графики - идущие подряд пары символов (старший байт адреса атрибутов и символ с последовательно увеличивающимся кодом - младшие 7 бит адреса графики). Три части, перед началом каждой свой спец-символ, задающий атрибуты символов ВГ75 - тоже часть адреса.

    Опрос клавиатуры там мудрёный, используется NMI при чтении порта 0FEh плюс другая раскладка памяти в режиме NMI. Это тоже ещё не сделано. Так что смотреть пока не на что.

  2. #232

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Начал делать эмуляцию NMI при чтении порта 0FEh, но упёрся в непонимание, каким образом KBD.SNC работал на реальном Арго. Трассировка этого обработчика наводит на мысль, что написан он с ошибками. Если изменить один байт, то клавиатура в режиме ZX начинает худо-бедно работать, но я не сторонник грязных хаков. Вряд-ли кто-то разбирался с этим обработчиком. Единственный, кто это мог быть - Becoss. Понимаю, что за давностью лет, всё уже забылось, но как говорится, одна голова хорошо, а две лучше. Может кто-нибудь посмотрит на KBD.SNC? У меня просто уже идеи кончились.

    ---------- Post added at 12:21 ---------- Previous post was at 12:14 ----------

    И ещё - просьба в владельцам реала: проверьте пожалуйста, действительно ли запускается ZX.COM и клавиатура работает?

  3. #233

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    У меня просто уже идеи кончились.
    Поэтому выкладываю как есть, кому интересно - качайте с моего сайта.

    Пока работает только если хакнуть KBD.SNC:
    - после загрузки ZX запустить отладчик
    - поставить точку останова на 0066
    - нажать F5, точка сработает - можно её убрать
    - в окне дампа перейти к адресу 015D и вместо 43 записать 41
    - нажать F5

    После загрузки ZX кассету с системой нужно "вынуть" (нажать на тулбаре кнопку воспроизведения ещё раз).

    Shift в режиме ZX находится где русская буква Б, поэтому чтобы набрать LOAD "" нужно нажимать J, затем < и не отпуская её нажать P.

    ---------- Post added at 01:21 ---------- Previous post was at 01:20 ----------

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

  4. #234

    Регистрация
    08.01.2012
    Адрес
    г.Винница, Украина
    Сообщений
    94
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Возможно, это не хак, а просто при оцифровке кассеты один битик проскочил не тот?

  5. #235

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, там так задумано было. По непонятным причинам создатели решили, что IN A,(0FEh) и IN A,(C) можно обрабатывать одинаково, и что старший байт на шине адреса во время команды ввода будет равен регистру A, но драйвер клавиатуры в ZX использует именно команду IN A,(C), а там старший байт должен браться из регистра B (как впрочем и в остальных командах ввода). В имеющемся KBD.SNC считается, что нужно брать байт из регистра, куда происходит ввод. Такой обработчик правильно обрабатывает только команду IN A,(0FEh). Возможно, у создателей была какая-то версия ROM-а, в которой драйвер использовал именно эту команду (и запускали они игрушки, в которых тоже использовалась именно эта команда).

  6. #236

    Регистрация
    08.01.2012
    Адрес
    г.Винница, Украина
    Сообщений
    94
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Нет, там так задумано было. По непонятным причинам создатели решили, что IN A,(0FEh) и IN A,(C) можно обрабатывать одинаково, и что старший байт на шине адреса во время команды ввода будет равен регистру A, но драйвер клавиатуры в ZX использует именно команду IN A,(C), а там старший байт должен браться из регистра B (как впрочем и в остальных командах ввода). В имеющемся KBD.SNC считается, что нужно брать байт из регистра, куда происходит ввод. Такой обработчик правильно обрабатывает только команду IN A,(0FEh). Возможно, у создателей была какая-то версия ROM-а, в которой драйвер использовал именно эту команду (и запускали они игрушки, в которых тоже использовалась именно эта команда).
    Хммм... А какой вариант Z80 использовался в компьютере Арго? Возможно, это был не совсем точный клон, который нестандартно выставлял значение старшего байта адреса при IN A,(0xNN) ??? Или у тебя эмуляция не совсем точная. Что выставляет оригинальный Z80 при IN A,(0xNN) ?? Точно регистр В ?
    Посмотрел фотку на плате, там проц от ST Z8400AB1.

    Вот здесь http://www.z80.info/zip/z80cpu_um.pdf такое описание:
    IN A, (n)
    Operation: A←(n)
    Op Code: IN
    Operands: A, (n)
    Description:
    The operand n is placed on the bottom half (A0 through A7) of the address bus to select the I/O device at one of 256 possible ports. The contents of the Accumulator also appear on the top half (A8 through A15) of the address bus at this time. Then one byte from the selected port is placed on the data bus and written to the Accumulator (register A) in the CPU

    Просмотрел доки на ST Z8400AB1, тута: http://pdf1.alldatasheet.com/datashe.../Z8400AB1.html
    Аналогично - на старший байт адреса выставляется аккумулятор.
    Последний раз редактировалось predatoralpha; 24.10.2014 в 16:12.

  7. #237

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от predatoralpha Посмотреть сообщение
    Что выставляет оригинальный Z80 при IN A,(0xNN) ?? Точно регистр В ?
    Нет, IN A,(0xNN) выставляет регистр A.
    А вот IN A,(C) выставляет регистр B, также как и IN B,(C) и др. аналогичные команды.

    То число 43h это адрес, куда сохряняется регистр A при входе в обработчик, а регистр B сохряняется по адресу 41h.
    А место, где это число меняется - обработка команд IN A,(0xNN) и IN A,(C).
    Последний раз редактировалось b2m; 24.10.2014 в 16:45.

  8. #238

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от predatoralpha
    А в каких адресах находится KBD.SNC??
    Как я понял, его надо ловить по точке на 0066...
    С таким вопросом можно было и не в личку

    При срабатывании NMI карта памяти Арго переключается (это ж почти как защищённый режим на i386).

    Есть два банка памяти по 64Кб:
    1. рабочая память, оттуда читает символы ВГ75
    2. квазидиск + знакогенератор (он же - видео-память в режиме ZX), сюда имеет доступ подсистема видео-вывода

    Процессору же память видна в зависимости от режима по-разному. После сброса:
    0000-F800 банк 1
    F800-FFFF ПЗУ

    В режиме ZX:
    0000-3FFF банк 1, только чтение
    4000-5FFF банк 2, абсолютный адрес ОЗУ E000-FFFF
    6000-FFFF банк 1 (тут есть сомнение, возможно 6000-77FF это тоже банк 2)

    В режиме после срабатывания NMI:
    0000-3FFF банк 1, абсолютный адрес ОЗУ 4000-7FFF
    4000-5FFF банк 2, абсолютный адрес ОЗУ E000-FFFF
    6000-FFFF банк 1 (тут есть сомнение, возможно 6000-77FF это тоже банк 2)

    Т.е. KBD.SNC грузится по адресу 4000h, но после срабатывания NMI он расположен в нулевых адресах вместо ROMа спекки.

  9. #239

    Регистрация
    03.06.2009
    Адрес
    Запорожье, Украина
    Сообщений
    22
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    но ведь там же LD a, (0x0043)

    http://joxi.ru/jgmvevRhpe4raM
    http://joxi.ru/qVrwQ8oCBox2Xg

    ---------- Post added at 00:29 ---------- Previous post was at 00:17 ----------

    >(тут есть сомнение, возможно 6000-77FF это тоже банк 2)

    нет, только не забываем, что ROM 0xF800 отключаем

  10. #240

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Becoss Посмотреть сообщение
    но ведь там же LD a, (0x0043)
    Вот я и говорю, что грузится из памяти, куда сохранился регистр А (см. 007D-0081). Для in a,(0FEh) верно, а для in a,(с) - нет. А обе команды одинаково обрабатываются (см. 0120-0127, из порта 81h считывается последний считанный байт в цикле М1 до NMI).

    Цитата Сообщение от Becoss Посмотреть сообщение
    нет, только не забываем, что ROM 0xF800 отключаем
    ПЗУ я учёл, просто не стал вдаваться в детали, к тому-же не совсем ясно, какой именно бит (из старших 4-х) порта карты памяти отвечает за отключение ПЗУ.

    Сомнение моё основывается на предположении, что режим 320х200 всё-таки можно организовать, а в этом режиме для точек нужно всё пространство 4000-5FFF, однако атрибуты тоже должны считываться из банка 2. Где, в таком случае, они расположены?

    ---------- Post added at 18:33 ---------- Previous post was at 18:22 ----------

    А ещё, код системы CP/M переносится в область 5000-71FF, т.е в режиме ZX эта область банка 1 не видна. А для возврата в нормальный режим используется то, что область 7F00-7FFF не переключается при выходе из NMI и смене соответственно карты памяти.

Страница 24 из 60 ПерваяПервая ... 202122232425262728 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 1382
    Последнее: 31.10.2020, 09:49
  2. Ответов: 13
    Последнее: 24.06.2014, 14:22
  3. Меняю "Электроника МК-90" на советский компьютер
    от Sergei Frolov в разделе Барахолка (архив)
    Ответов: 69
    Последнее: 28.10.2011, 13:25
  4. продам компьютер клон спектрума "sintez-2"
    от Андрей 34 в разделе Барахолка (архив)
    Ответов: 6
    Последнее: 12.08.2008, 11:48
  5. Ответов: 0
    Последнее: 26.06.2005, 11:52

Ваши права

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