MSX в proteus

MSX-совместимые компьютеры

Moderator: Shaos

PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

В описании на SD интерфейс из упоминаемой ранее, страниц 5 назад, схемы есть такой текст:
- Disk Speed measured by DOSSCAN
HW V1 on Z80 3.58MHz mode : 40KB/Sec
HW V2 on Z80 3.58MHz mode : 130KB/Sec
HW V2 on Z80 5.37MHz mode : 180KB/Sec
HW V2 on R800 DRAM mode : 145KB/Sec
что за утилита DOSSCAN я не знаю, но цифры приблизительную картину показывают. При этом, в коде вся работа с SD в полностью развернутом виде, ни каких циклов, те для чтения 512 байтного сектора 512 раз повторяется чтение порта и тп...
Вообщем то, в драйвере nextor места много, и сделать аналогично проблем нет, может это и ускорит чтение (ну и на запись все аналогично же).
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Переделал код, отвечающий за чтение 512 байтного сектора с мнемоник ВМ80 на z80, немного развернул цикл чтения этого сектора, и получил скорость 79КБ/с. Цикл записи сектора переделал аналогично, только как проверить скорость записи не ясно, однако она раза в два должна быть выше чем чтение, так получается :). На этом с доработкой драйвера остановлюсь. Интересно, что в emu этот же тест показывает вообще 94КБ/с, скорость ограничивает реальная карта, что ли?
Во вложении каталог с драйвером, который в Nextor нужно распаковать в папку Nextor-xxx/source/kernel/drivers/
и собранный бинарник вместе с конфигом для emu.
You do not have the required permissions to view the files attached to this post.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Видимо пора писать свой тест скорости и желательно что бы он работал на MSX1 и DOS1 :)
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Не вижу смысла в новом тесте скорости. Для 8и битных машинок это уже предел.
Если в IDE для чтения сектора в 512 байт используется LDI, то это 16 тактов z80 на байт, а сейчас в SD: out (c),d - 12 тактов и ini - 16 тактов, те 28 тактов на байт, что хоть и медленнее в два раза, но соизмеримо. Понятно, что есть еще накладные расходы, но это не превалирующее время в чтении сектора. Запись так вообще одинаково получается и IDE и SD: outi - 16 тактов на байт.
Доработать SD интерфейс, что бы избавиться от out (c),d при чтении можно, но целесообразности не вижу.
Так что, для z80 с тактовой в 3.5МГц скорость чтения этого SD интерфейса ~80КБ/c.

upd:
написал out (c),d - 12 тактов и подумал, а для чего так? обычный же out (порт),a - 11 тактов ! Пересобрал прямо сейчас драйвер, прошил в ПЗУ, и получил скорость уже 84КБ/с... Всего один такт, а плюс 4КБ скорости :).
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Как оказалось в коде драйвера, выложенного выше есть ошибка, при записи пишется только один сектор на реальной карте. Пришлось эту ошибку исправлять, а заодно попробовал выжать максимум скорости чтения.
Кстати говоря, тест скорости работает с чтением по одному сектору и реализация многоблочного чтения на тесте скорости ни как не отразилась, а вот запуск реальных программ стал заметно быстрей.
очень много бликов получилось, но видно 92КБ/с!

 
Image

в драйвере остался еще момент c работой SDHC карт, они определяются, но пока не работают.
Попался мне, вообще говоря, вот такой проект, там есть готовый драйвер для SD. Можно подсмотреть некоторые моменты в реализации работы с картой, чем я и воспользовался.
давно не показывал свою макетку:

 
Image

контроллер клавиатуры на МТ8816, pic12f675 и 74hc595, usb клавиатура работает в ps/2 режиме спокойно. Есть, правда один момент, при включении питания клавиатура не всегда проходит селфтест(не мигают светодиоды) и как ее из этого состояния выводить я не знаю. Переброс питания помогает, но это же не правильно... С чистой ps/2 клавиатурой этот же глюк присутствует, так что это не в usb дело. Никто с подобным не сталкивался, как лечить?
You do not have the required permissions to view the files attached to this post.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Видимо пора мне записать в свой todo лист вашу реализацию SD – интерфейса. IDE карты меня поддастали в силу их опошления и ухода далеко вперед от параллельного интерфейса.

Как вам МТ8816? Мне нравиться такой себе мост между прошлым и настоящим. Работает просто замечательно с моей USB (нативной) клавиатурой.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:Есть, правда один момент, при включении питания клавиатура не всегда проходит селфтест(не мигают светодиоды) и как ее из этого состояния выводить я не знаю.
Баловался с ps/2 клавиатурой. Драйвер был даже без int (ардуино). Все получалось, и отослать, и принять, и инициализировать.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

На счет МТ8816 что то сказать сложно, просто работает, проблем нет :).
У меня с клавиатурой вопрос именно с ее первым стартом, сама клавиатура внутренний тест не проходит, не мигает своими тремя светодиодами и, соответственно, не отвечает на команды (экспериментировал с тремя USB и парой ps/2). Этот глюк не постоянно происходит, примерно раз на десяток включений. Сегодня, к примеру включал несколько раз, стартовала всегда... Если светодиодами мигнула, то дальше все работает отлично, я и CapsLock на ней зажигаю по нажатию, те обмен в обе стороны идет.
На счет SD.
Есть предложение сделать самостоятельный модуль, втыкаемый в слот msx машинки. Весь вопрос в адресах. Хочется сделать схему дешифрации максимально простой, на мелкой логике, без применения плис/гал. Вариант с адресацией в портах получается именно такой. Таким образом, берутся порты, к примеру, BeerIDE, ставим тм8/9 на управление ПЗУ Nextor/Sunrise и все готово. Схему могу нарисовать.
В зависимости от прошивки будет хоть BeerSD, хоть Nextor, хоть Sunrise (если удастся собрать его исходники, то, что ходит в сети на 2.04 я собрать не смог).

upd: прикинул схему, как то вообще все просто получается, необходимость U8(тм2) я так и не удосужился проверить (в исходной то схеме ее нет). Надо завтра включить SD без нее и посмотреть на стабильность работы, тогда вовсе 7 корпусов получится :).
You do not have the required permissions to view the files attached to this post.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Проверил работу без ТМ2, скопировал десяток файлов, запустил их, все ок. Так что похоже, что без нее можно обойтись...
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:У меня с клавиатурой вопрос именно с ее первым стартом, сама клавиатура внутренний тест не проходит, не мигает своими тремя светодиодами и, соответственно, не отвечает на команды (экспериментировал с тремя USB и парой ps/2).
Я принудительно сбрасывал клавиатуру. Вот кусочек кода.

Code: Select all

#include <ps2.h>

/*
 * Pin 2 is the ps2 data pin, pin 3 is the clock pin
 * Feel free to use whatever pins are convenient.
 */
PS2 kbd(3, 2);

void kbd_init()
{
  unsigned char ack;
  unsigned char val;

  kbd.write(0xff);  // send reset code
  ack = kbd.read(); 
  Serial.println(ack, HEX);
  val = kbd.read();  // self test is done
  Serial.println(val, HEX); 
.
.
.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

У меня инициализация аналогично сделана. Я же пишу
сама клавиатура внутренний тест не проходит, не мигает своими тремя светодиодами и, соответственно, не отвечает на команды
пока она свой тест не пройдет, что ей не отправляй, она не реагирует. Поразмыслил я сейчас на сей счет, и вот, что подумалось. Код для пика на 95% повторяет код от Галаксии, который в свою очередь на 95% повторяет взятый из сети, и там я таких проблем не встречал. У меня точка запитки питанием клавиатуры и вход на плату +5В на углах по диагонали платы, может в этом все дело...

Однако, тема с SD более интересна, какие есть идеи? так ли уж плоха выборка по портам 0х31 и 0х32?
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Если клавиатура не стартует после подачи питания c не подключенными data и clk (вроде так), тогда точно надо смотреть что там с питанием.
PVV wrote:Есть предложение сделать самостоятельный модуль, втыкаемый в слот msx машинки.
Буду делать под себя (MSX-EXT). Если делать под MSX, надо еще добавить сигнал /BUSDIR.
PVV wrote:Весь вопрос в адресах. Хочется сделать схему дешифрации максимально простой, на мелкой логике, без применения плис/гал.
Тут тоже мое личное мнение. Хотелось бы сохранить для себя такой конфиг.

#30...#33 - BEER IDE
#38...#39 - YM2151
#3F - SN76489

С другой стороны настаивать не на чем буду. Только минимизировал бы текущий диапазон #30-#37. Как вариант допустим #34...#37.
PVV wrote:хоть Sunrise (если удастся собрать его исходники, то, что ходит в сети на 2.04 я собрать не смог).
Нравится Sunrise с прошивкой MSX-DOS2. Думаю пересобирать все ПЗУ и не надо. Там же стандартные точки входа. Собирается низко уровневый драйвер. Так ведь?

add: Интересно почему на ПЗУ идет /CS12? Вроде /CS1 должен быть.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote:Если клавиатура не стартует после подачи питания c не подключенными data и clk (вроде так), тогда точно надо смотреть что там с питанием.
Именно так.
Alekcandr wrote:Буду делать под себя (MSX-EXT). Если делать под MSX, надо еще добавить сигнал /BUSDIR.
обкатать решение на MSX-EXT, а дальше уже может и пойдет в массы :).
Alekcandr wrote:Тут тоже мое личное мнение. Хотелось бы сохранить для себя такой конфиг.
#30...#33 - BEER IDE
#38...#39 - YM2151
#3F - SN76489
С другой стороны настаивать не на чем буду. Только минимизировал бы текущий диапазон #30-#37. Как вариант допустим #34...#37.
на дешифраторе BeerIDE адрес А2 не задействован и есть вход свободный на ЛА2, как раз остается 0х34-37.
Alekcandr wrote: Нравится Sunrise с прошивкой MSX-DOS2. Думаю пересобирать все ПЗУ и не надо. Там же стандартные точки входа. Собирается низко уровневый драйвер. Так ведь?
да, только страница с драйвером нужна для сборки, но вот ее я и не смог собрать
Alekcandr wrote: add: Интересно почему на ПЗУ идет /CS12? Вроде /CS1 должен быть.
конечно ошибка, должно быть просто /CS1.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:на дешифраторе BeerIDE адрес А2 не задействован
Как так? Задействован. A2 идет на /CS PPI.
PVV wrote:есть вход свободный на ЛА2, как раз остается 0х34-37.
Ну и отлично #34...#37 (0011 01XX). В принципе гал-ка тут и не тулиться.

Но я не ищу легких путей. Задумал я на шине избавится от анахронизма /CS1, /CS2 и /CS12. А тут проще и универсальней чем гал-ка не найти. В принципе, что там стоит логика или гал-ка, на работу схемы это не влияет.
PVV wrote:да, только страница с драйвером нужна для сборки, но вот ее я и не смог собрать
Будем решать вопросы по мере их поступления.

Вот тут такой вопрос. Смотрю, схема тактируется сигналом CLK (3.58МГц). Это частота ЦПУ. У меня в голове зреет (да не созреет) схемка турбо для ЦПУ. В общем CLK будет 7.16МГц. Работоспособность интерфейса SD сохраниться на частоте 7.16МГц?
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote: Вот тут такой вопрос. Смотрю, схема тактируется сигналом CLK (3.58МГц). Это частота ЦПУ. У меня в голове зреет (да не созреет) схемка турбо для ЦПУ. В общем CLK будет 7.16МГц. Работоспособность интерфейса SD сохраниться на частоте 7.16МГц?
Схема от частоты зависеть не должна, завязок на время распространения сигналов в элементах в ней нет. Вопрос у меня вызывает все та же ТМ2 по цепи MISO. SD карта передает и принимает данные по разным фронтам CLK, а ИР24 все по одному фронту. ТМ2, тактируемая инверсным CLK, все решает корректно. Глюки без тм2 могут вылезти скорее при уменьшении частоты, а не увеличении.
Предыдущий вариант схемы на 10МГц работал в СпециалистеМХ2.