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

User Tag List

Страница 8 из 36 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 354

Тема: Корвет: ExtROM Open Source extender

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

    По умолчанию


    ну мне уже и нечего добавить

    как конкретно - будем пробовать.
    проверим на пц, выберем минимум байт....

    микродос - тоже будем пробовать, но это после всех cp/m

    пока на всех наших дисках нашлось 10 версий уникальных биосов
    и штук к 6 микродосов
    4 только оптс1
    2 только оптс2
    и один универсальный.

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

    По умолчанию

    rom5 - тест на RAW чтение/запись F0/F1
    rom6 - тест на посекторную чтение/запись 01/02
    32к данных

    в ром6 - засекаем сколько полных прерываний заняло считать 256 секторов
    первая цифра
    треки 100...
    сектора перебираются от 0, 1, 2, 3, ...

    вторая цифра
    треки 100...
    сектора перебираются от 0, 9, 18, ...
    т.е. заведомо прыгаем за 1к, проверка как поведет себя карточка.

    испортит хвост диска с 100 трека

    понял что надо было делать CP/M тест чтоб читал не рав а через биос
    но это уже носле....
    можно было бы сравнить флоппи ...
    Вложения Вложения

  3. #73
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    rom5 - тест на RAW чтение/запись F0/F1
    rom6 - тест на посекторную чтение/запись 01/02
    32к данных
    Вот результат на железе:

    R: 0084 0091 01F1 | 54 51 2b
    W: 004e 0039 01F1 | 62 68 2b

    Если пересчитать по твоей таблице, получаем так:

    Код:
    to Korvet					from korvet
    Bytes in one int					
    84	132		6600		4e	78		3900
    91	145		7250		39	57		2850
    1f1	497		24850		1f1	497		24850
    frames when transfer 0x8000								
    54	84	390.1	19504.8		62	98	334.4	16718.4
    51	81	404.5	20227.2		68	104	315.1	15753.8
    2b	43	762.0	38102.3		2b	43	762.0	38102.3
    Что интересно, по 3 варианту скорость записи и чтения полностью идентичны. Это вполне предсказуемо - все процедуры похожи как близнецы. По 2 варианту в подпрограммах сидят лишние push af/pop af, они и гадят результат.

    Правда, по нынешним временам цифра даже в 37 кб/с выглядит весьма убого. Блин, да у меня интернет-канал в 100 раз быстрее И это еще без учета тормозов SD-карты и VinxFS. Но, пожалуй, для тех времен и это неплохо.Учитывая, что ОЗУ у нас всего 64К - вся память перекидывается через интерфейс меньше чем за 2 секунды.


    в ром6 - засекаем сколько полных прерываний заняло считать 256 секторов
    А вот этот тест у меня вообще не пошел. То есть контроллер повис на первой же операции чтения, причем именно внутри процесса передачи, судя по индикатору. Попозже я соберусь с силами и попробую разобраться, что ты там такое напрограммировал. Тест-то интересный, он должен учесть и скорость SD-карты,

    испортит хвост диска с 100 трека
    Не понял... У нас треков-то всего 80. Физические и логические треки совпадают по нумерации, разница только в отсутствии номера стороны и другом SPT. Я не знаю, что там будет делать эмулятор, но контроллер не сможет работать за границей файла образа KDI. Похоже, я теперь понял, что там виснет.


    понял что надо было делать CP/M тест чтоб читал не рав а через биос
    но это уже носле....
    можно было бы сравнить флоппи ...
    Вот это точно. Плюс биос и особенно BDOS тоже вносят свои тормоза, которые надо бы измерить.

    Пожалуй, настало время впилить в контроллер поддержку 2 дисков, чтобы второй диск подсовывать чистый, и портить его в любом месте в процессе теста.
    А то тебе проще - накидал свежих файлов в каталог extrom и готово, а мне надо вынуть карту из контроллера, вставить в PC, записать файлы, размонтировать и вернуть в контроллер. А это лишние телодвижения, которых хочется избежать.

    Надо только понять, как в этой vinxfs переключаться между файлами. Пока я об этом даже не задумывался.
    Последний раз редактировалось forth32; 09.07.2014 в 07:26.

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

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Не понял... У нас треков-то всего 80. Физические и логические треки совпадают по нумерации, разница только в отсутствии номера стороны и другом SPT. Я не знаю, что там будет делать эмулятор, но контроллер не сможет работать за границей файла образа KDI. Похоже, я теперь понял, что там виснет.
    Тут речь идёт в терминах апи
    Треки с 0 по 159
    Сектора с 0 по 39
    Для биоса то диск односторонний
    Я в эмуляторе lseek пря из твоего кода и взял.

  5. #75
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Все правильно, для биоса есть 160 дорожек. И все должно работать. Но виснет. В эмуляторе работает, а на реальной железке подвисает.

    Я посмотрел - ты взял новые оптимизированные процедуры EXR_GETSEC. Попробовал поменять их на старые GETSEC - результат тот же. Виснет. Причем контроллер нормально воспринимает команду чтения дорожки 0 сектора 0, и более команд от корвета не поступает. Такое ощущение, что твоя программа пытается прочитать более 128 байт из интерфейса - а контроллер больше не отдает, вот и ждет. В эмуляторе, скорее всего, в этой ситуации отдается мусор.

    Ладно, пока не буду ломать мозг над этой загадкой, тут есть более актуальные переделки. Сейчас доделаю работу с 2 дисками, и далее придется думать насчет API.

  6. #76
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все, прошивку контроллера я доработал:

    1. Теперь она полноценно работает с 2 независимыми образами дисков A и B, выбирает их через поле DRV командного пакета. Чтобы не создавать на карте кашу, все образы дисков я перенес в каталог DISK на карте. Сейчас монтируются файлы DISKA.KDI и DISKB.KDI. Добавить в API смену образов на лету нетрудно, но пока нет особого смысла, ибо параллельно с этим придется написать и клиентскую утилиту под CP/M.

    2. Я реализовал алгоритм автоматической подстановки системных дорожек при загрузке системы. Если происходит обращение к любому сектору дорожек 0 или 1, то вместо смонтированного образа диска A сектора берутся из файла SYSTEM.BIN в корне карты. В этот файл кладется образ системы, полученный при трансляции моего вчерашнего файла exrsystem.asm. Такой режим позволяет в качестве диска А выбирать абсолютно любой образ KDI, не трогая содержимого его системных дорожек. При этом запись на дорожки 0 и 1 диска А блокируется - контроллер принимает данные, но ничего с ними не делает.
    Поскольку микродос использует 3, а не 2 системные дорожки, то образы дискет микродоса в устройстве А работать не будут (но они и раньше не работали). В устройстве B они будут работать вполне нормально.

    Поскольку ESL собирается написать универсальный загрузчик различных систем, то такое поведение контроллера я сделал отключаемым. Для этого в API добавлена команда A0. Поле TRK командного пакета определяет - запретить (0) или разрешить (1) подстановку системы.

    Архив с прошивкой прилагаю. Там, в extrom.c, полное описание API.

    ESL, тебе придется доделать эмулятор для поддержки второго диска. Или ты его уже доделал? Функцию подстановки биоса можно пока не реализовывать, в эмуляторе она на данный момент не особо нужна.

    Теперь о грустном. Похоже, придется несколько доделать базовую функциональность API. Я тут налетел на то, что некоторые программы самым наглым образом срут в порты PPI3. Ладно бы ОПТС, но, например, тест OLD тоже туда лезет. Я могу предположить, что и программы, работающие с джойстиком, полезут в этот порт.
    В результате порт или вылетает из режима 2, или нарушается командная последовательность передачи данных. А у на слишком простой протокол - 4 любых байта, записанных в порт А, воспринимаются как команда, что сносит нафиг крышу бедному контроллеру. Я так уже несколько раз портил образы файлов на карте из-за случайных команд записи.

    Поэтому протокол придется немного усложнить:

    1. В командный пакет ввести 5 байт - контрольную сумму предыдущих 4. Если КС в пакете неправильная - контроллер просто игнорирует такой пакет и ничего не делает.

    2. После передачи командного пакета, из контроллера в корвет передается 1 байт ответа - подтверждения команды (1) или отказа выполнять команду (0). Отказ может производиться, например, при неправильном коде команды, при ошибке чтения с карты, или если образ диска смонтирован с защитой от записи. Такой шаг позволяет не посылать команды в контроллер вслепую, а поддерживать двухсторонний диалог.
    Если контроллер не дает подтверждения выполнения команды, то обмен данными не производится. Например, процедуры READ и WRITE биоса просто вернут флаг A=FF.

    Данную переделку я уже готов внести в контроллер. Но, кроме контроллера, придется еще исправить BIOS (процедуры sendcmd, read и write), а также исмерители скорости, написанные ESL (также в процедуру sendcmd). Ну и, конечно, придется доделать эмулятор.
    Если есть какие возражения и дополнения, высказывайте их сейчас. Потом поздно будет - весь код уже будет изменен.
    Вложения Вложения

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

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

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    2. Я реализовал алгоритм автоматической подстановки системных дорожек при загрузке системы.
    отличная идея.

    ---------- Post added at 13:07 ---------- Previous post was at 13:05 ----------

    Цитата Сообщение от forth32 Посмотреть сообщение
    ESL, тебе придется доделать эмулятор для поддержки второго диска. Или ты его уже доделал? Функцию подстановки биоса можно пока не реализовывать, в эмуляторе она на данный момент не особо нужна.
    пока нет, но дело 5 минут
    там сейчас файл открывается/закрваается на каждое чтение сектора, так что вообще просто

    в эмулятор подстановку тоже сделаю, а как без этого отлаживать

    ---------- Post added at 13:09 ---------- Previous post was at 13:07 ----------

    Цитата Сообщение от forth32 Посмотреть сообщение
    В результате порт или вылетает из режима 2, или нарушается командная последовательность передачи данных.
    может его стоит инитиь при в SENDCMD ?
    потерь особых не будет по скорости.

    ---------- Post added at 13:14 ---------- Previous post was at 13:09 ----------

    Цитата Сообщение от forth32 Посмотреть сообщение
    Поэтому протокол придется немного усложнить:

    Если есть какие возражения и дополнения, высказывайте их сейчас. Потом поздно будет - весь код уже будет изменен.
    контроль таки да, имеет смысл.
    жду новых версий.

  9. #78
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    может его стоит инитиь при в SENDCMD ?
    потерь особых не будет по скорости.
    Да, я тоже так подумал. Правда, не будут ли при перенастройке ВВ55 дергаться линии порта С? Это придется проверить.
    Во всяких загрузчиках, пожалуй, так делать не стоит - они работают недолго и вполне предсказуемо.

    контроль таки да, имеет смысл.
    жду новых версий.
    Уже начал писать. В контроллере все сделал, загрузчик 2 фазы сделал, а вот биос стал выдавать disk read error. Пока разбираюсь. Сам понимаешь, в реальном корвете нет встроенного отладчика...

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

    По умолчанию

    вроде нашел ошибку в тесте rom6
    там получилось что я посылал комманду чтения, и не читал данные
    а потом новая комманда чтения уже с чтением данных.
    очень может быть что по этому.

    ---------- Post added at 13:41 ---------- Previous post was at 13:40 ----------

    это ты напсал что он виснет на чтении 0 трека/сектора
    и я удевился, не должен он его читать в тесте ...
    и полез смотреть

  11. #80
    Activist
    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    324
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот видишь, что бывает, если не защищать пакет контрольной суммой. Ты нечаянно насрал в порт, а контроллер это воспринял как команду. Если бы первой шла цифра 2 - затер бы мне нафиг инфосектор
    Последний раз редактировалось forth32; 09.07.2014 в 14:50.

Страница 8 из 36 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Open source firmware for the Spectrum
    от zx-kit в разделе Разный софт
    Ответов: 60
    Последнее: 29.05.2014, 13:53
  2. open-source эмуляторы под .NET
    от Sawyer в разделе Эмуляторы
    Ответов: 1
    Последнее: 04.01.2011, 17:47
  3. GP2X F100 Open Source Gaming Console
    от CodeMaster в разделе Зарубежные компьютеры
    Ответов: 3
    Последнее: 12.06.2010, 23:51
  4. Open Source эмуль...
    от rg_software в разделе Эмуляторы
    Ответов: 50
    Последнее: 06.12.2006, 11:57

Ваши права

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