PDA

Просмотр полной версии : vTR-DOS для Pentagon1024SL



TmK
29.01.2007, 01:11
Начал написание vTR-DOS для Pentagon1024SL + NEMO_IDE

В процессе наткнулся на некоторые неясности

1. Где четко почитать про методы выполнения команд Beta-Disk
(прямое программирование без TR-DOS)
Типа:
а)Посылаем в порт #1F команду записи сектора
б) Проверяем то-то (такой-то бит-защита от записи)
в)Ждем того-то (точно не знаю, может надо дождатся какого-то бита чего-то)
г)Ждем сего-то (запрос данных DRQ - откуда читается #ff или #1f или можно из любого)
д)Кидаем в порт данных байт
е) уменьшаем счетчик, если не ноль, переход на г)
ф) ... еще чего-то

и.т.д...

2. Интересуют временные задержки по сигналам (а еще лучше временные диаграммы сигналов)
Т.е. фраза: На каждый запрос DRQ необходимо записать в рег.данных очередной байт. - Сколько секунд (а лучше тактов между соседними запросами DRQ)???
через сколько тактов повторяется индексная метка?

boo_boo
29.01.2007, 01:45
см аттач

deathsoft
29.01.2007, 01:54
Фирменая документация от WD на контроллер fd179x (ВГ93).

TmK
29.01.2007, 05:47
Спасибо, ценная информация.
Но еслиб я сначала подумал :v2_clapp: разобрался еще проще:

скорость диска 300об/мин -> 5 об/сек
полный размер дорожки со служебными данными - 6250 байт
За 1сек диск прокручивает 31250байт

на Пентагоне - 71680тактов в прерывании -> 358400 тактов в секунде
время, между соседними DRQ - 358400/31250 = 114.6 такта
Время чтения/записи tr-dos сектора = 114.6*256 = 29337.6 такта


Попросил у ukms_z исходники vTRDOS для ATM. - возможно много чего почерпну:-)

CHRV
29.01.2007, 10:03
Попросил у ukms_z исходники vTRDOS для ATM. - возможно много чего почерпну:-)
Желательно чтобы была совместимость, хотя бы по стандарту электронного диска.

Sonic
29.01.2007, 10:28
Начал написание vTR-DOS для Pentagon1024SL + NEMO_IDE

В процессе наткнулся на некоторые неясности


А исходники самой TR-DOS посмотреть слабо?
Там все просто до безобразия.

TmK
29.01.2007, 17:13
А исходники самой TR-DOS посмотреть слабо?
Там все просто до безобразия.

Уже смотрел:-)
Именно на основе них и буду делать. Версия 5.04T

KingOfEvil
30.01.2007, 01:23
Начал написание vTR-DOS для Pentagon1024SL + NEMO_IDE


Нужна ли какая-либо тех. информация по Pentagon-1024SL?
Версии 1.4 и 2.x отличаются друг от друга весьма значительно, более того в ноябре прошлого года я прекратил сборку плат версии 1.4. Поддерживать надо в первую орчередь платы 2.x.

newart
30.01.2007, 01:38
Желательно чтобы была совместимость, хотя бы по стандарту электронного диска.
А у ATM есть совместимость с KAY?

KingOfEvil
31.01.2007, 00:01
Желательно чтобы была совместимость, хотя бы по стандарту электронного диска.

Как раз не надо делать совместимость с АТМ, т.к. нужна совместимость по RAM-диску с Gluk 6.x. Совместимость с АТМ не даст никаких преимуществ не для АТМ, не для Пентагона, т.к. RAM-диск всегда находится внутри компа, его нельзя вынуть, например, из Пентагона и вставить в АТМ.

CHRV
31.01.2007, 10:08
Как раз не надо делать совместимость с АТМ, т.к. нужна совместимость по RAM-диску с Gluk 6.x. Совместимость с АТМ не даст никаких преимуществ не для АТМ, не для Пентагона, т.к. RAM-диск всегда находится внутри компа, его нельзя вынуть, например, из Пентагона и вставить в АТМ.
Как всегда давайте мульен стандартов плодить :).
УРа товарищи :)

demon_zx
31.01.2007, 11:30
Никто не плодит мульен стандартов, стандарт по Gluk'у существует, потому как существует Gluk.

KingOfEvil
31.01.2007, 18:02
Как всегда давайте мульен стандартов плодить :).
УРа товарищи :)

Для Пентагона ЕСТЬ СТАНДАРТ RAM-диска. Он используестя в Gluk reset service и TR-DOS 6.10. Если сделать RAM-диск как в АТМ, теряем совместимость с Gluk reset service. В Pentagon-1024sl 2.x старт идет из 0-й страницы ПЗУ, там Gluk reset service. Если vTR-DOS будет не совместим по RAM диску с глюком, то какой от последнего толк??? Значит, вместо глюка надо писать что-то новое. Что? Кто это сделает? Ты сделаешь?

TmK
31.01.2007, 18:13
1) А какой формат RAM-диска у Gluk`а у KAY и у ATM???
2) По информации о Пентагоне: надобы знать скока страниц ПЗУ задействовано в схеме и как переключаются.

TmK
31.01.2007, 18:27
И собственно вопрос по поводу стандартов:
А зачем вообще совместимость по рам диску?
Я расчитываю убить васик-128, поместить туда
стартовое меню:
trdos boot
vtrdos boot
ide master boot
ide slave boot
options
utilities

в опциях
выбор v-disk (trd, scl) с ide master/slave
настройки окружения vtrdos
... Пока точного списка нет, тока набросок 6 функций
(можно также добавить встроенный boot к диску)

утилиты
partition magic - некий минимальный набор функций из аналогии на ПЦ
коммандер

TmK
31.01.2007, 18:30
Имелось ввиду, что ПЗУ будет иметь в себе все необходимое для работы vtrdos, и никаких внешних утилит не понадобится!

acidrain
31.01.2007, 20:13
на Пентагоне - 71680тактов в прерывании -> 358400 тактов в секундеЕсли не ошибаюсь, то 3584000 tackts/sec. ?

jtn
31.01.2007, 20:26
Для Пентагона ЕСТЬ СТАНДАРТ RAM-диска. Он используестя в Gluk reset service и TR-DOS 6.10. можно поподробней, что это такое? я лишь знаю трдос5.12f и производные, которые работают с рамдиском D по #3d13. неужели глюк сам лезет в память в независимости от трдоса??

KingOfEvil
01.02.2007, 01:45
1) А какой формат RAM-диска у Gluk`а у KAY и у ATM???
2) По информации о Пентагоне: надобы знать скока страниц ПЗУ задействовано в схеме и как переключаются.

1. Про формат RAM-диска в KAY и ATM я ничего сказать не могу, в Gluk-e и в TR-DOS 6.10e формат RAM-диска, если не ошибаюсь, как в TR-DOS 5.12 и TR-DOS 6.05, но перевернутый, т.е. растет сверху-вниз. В прилагаемом архиве Gluk 6.3 вместе с исходниками и описаниями (взято с сайта http://alonecoder.narod.ru), там можно посмотреть более подробно, а еще лучше спросить у Alco, если потребуется.
2. По поводу страниц ПЗУ. Задействованы все страницы. Те страницы, где находятся basic48, basic128, TR-DOS, переключаются стандартным образом, но старт происходит из дополнительной страницы (в которой находится Gluk). Т.е. после reset-a включается дополнительная страница ПЗУ, которая отключается автоматически при извлечении кода операции вне ПЗУ (т.е. если сделать CALL или что-то подобное в адрес старше 16384), после чего переключение страниц ПЗУ ничем не отличается от обычного Spectrum-128.

Для нужд vTRDOS можно использовать либо страницу Basic128, либо доп. старницу, но исключать Gluk не очень хочется, т.к. в него встроен коммандер, диск доктор и много дополнительных функций. С помощью глюка можно форматировать RAM-диск и работать с ним, поэтому желательно сохранить существующий формат RAM-диска.

KingOfEvil
01.02.2007, 01:55
неужели глюк сам лезет в память в независимости от трдоса??

Он делает форматирование RAM-диска, причем на разный объем. Судя по всему, это делается без привлечения TR-DOS. Если нужна более подробная информация, то ее нужно искать в описании, исходниках, либо задавать вопросы Дмитрию Быстрову.

Максагор
01.02.2007, 02:10
Он делает форматирование RAM-диска, причем на разный объем. Судя по всему, это делается без привлечения TR-DOS. Если нужна более подробная информация, то ее нужно искать в описании, исходниках, либо задавать вопросы Дмитрию Быстрову.

Сомневаюсь, что он при этом лезет во все страницы. Для "виртуального" форматирования достаточно очистить и проинициализировать только нулевою дорожку - область каталога и системный сектор.А это максимум 4Кб в одной единственной странице.

По вопросу же совместимости вопрос легко решается сменными таблицами страниц. На 640Кб-диск нужна таблица всего в 40 байтов.

Соответственно на Пентагоне будет одна табличка, а в АТМ - другая. Точнее она там уже есть. И приэтом ее можно менять как угодно. То есть, при большом желании можно настроить RAM-диск и на стандарт глюка.

demon_zx
01.02.2007, 08:58
А зачем нужна совместимость по рам-диску с АТМ, что это дает? По моему это ничего не дает.

TmK
01.02.2007, 09:27
Он делает форматирование RAM-диска, причем на разный объем
1) Вот как раз разный объем в случае использования образов нам нафиг не сдался.
Т.к. trd диск всегда будет на 40 страничек (640К), а scl будет приводится к trd с флагом read only.
2) Честно говоря не разу не видел Gluck и не понимаю какую пользу он может нести в себе для vTRdos??? Хотя если надо - не проблема, но проблема в том, что первой должна стартовать НОВАЯ прошивка, при первом запуске создавать свои переменные, определять параметры IDE и т.п. Так что возникает еще одна проблема - как их с Глюком подружить???
3) Пока есть исходники, переделать формат рам диска не проблема!!! Так что на данном этапе я подумаю лучше о точности эмуляции dos`a т.к. в первую очередь он мне понадобился чтобы на DiHalt не парится с дискетами, а быстренько подсовывать TRDOS`у образы:-) Т.е. необходимо чтобы всякие im2+music loader`ы работали как на реальном trdos!!!

2acidrain: Естественно 3584000 tackts/sec - просто опечатка

Дальше вопрос:
Как защитить рам-диск от посягательств программ???
1 вариант) использовать соответствующий бит дополнительного порта, ограничивая память 128к

2 вариант) Более продвинутый. При чтении/записи сектора проверяем целостность рам-диска. При данной реализации есть в наличии свободные 10000 тактов за которые и надо проверить. Естественно контрольная сумма отпадает - слишком долго... У кого есть предложения?

KingOfEvil
01.02.2007, 21:20
1) Вот как раз разный объем в случае использования образов нам нафиг не сдался.
Т.к. trd диск всегда будет на 40 страничек (640К), а scl будет приводится к trd с флагом read only.
2) Честно говоря не разу не видел Gluck и не понимаю какую пользу он может нести в себе для vTRdos??? Хотя если надо - не проблема, но проблема в том, что первой должна стартовать НОВАЯ прошивка, при первом запуске создавать свои переменные, определять параметры IDE и т.п. Так что возникает еще одна проблема - как их с Глюком подружить???



Это вопрос не ко мне, а к AlCo. Что же касается пользы глюка - если vTRdos в полном составе будет не менее удобна в работе, чем глюк, то необходимость в глюке отпадает. Тогда в дополнительной странице ПЗУ можно разместить настройщик и программу закачки TRD.




Дальше вопрос:
Как защитить рам-диск от посягательств программ???
1 вариант) использовать соответствующий бит дополнительного порта, ограничивая память 128к

2 вариант) Более продвинутый. При чтении/записи сектора проверяем целостность рам-диска. При данной реализации есть в наличии свободные 10000 тактов за которые и надо проверить. Естественно контрольная сумма отпадает - слишком долго... У кого есть предложения?

Первый вариант уже реализован в Pentagon-1024SL 2.x.
Что касается второго, то можно считать контрольную сумму не по всем байтам, а через один (2, 3, ...). Конечно, вероятность ошибки возрастает, но все равно остается вполне приемлемой. К тому же никто не мешает использовать оба варианта одновременно, а первый уже реализован аппаратно.

TmK
01.02.2007, 23:58
ВАРИАНТ1 не очень удобен в том плане, что свободной памяти больше чем 128к.
Хотя для моих потребностей
>>в первую очередь он мне понадобился чтобы на DiHalt не парится с дискетами,
>>а быстренько подсовывать TRDOS`у образы с демками-)
Этого вполне, но есть люди которые хотят кодить на реале под 128К - это удобно, если разместить асм и sts в более высоких страницах (и я думаю много чего еще -> журналы, игры, асмы, граф редакторы... ) - тут либо надеятся на то, что все ОК!!! и зпбить на проверку, либо использовать вариант2

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

Напиши процедуру и посчитай скока тактов она сожрет!!!!!!!!!!!!!!!!!!!!!!!!!!!
(не забудь!!!!! например при записи проверили CR - сошлось, пишем файл, снова считаем CR!!! - т.е. практически двойная операция!!!)

Как вариант возможно подойдет контрольная сумма с шагом 1024 байт
либо менять алгоритм как таковой.

demon_zx
02.02.2007, 08:44
Учитывая что большинство программ обычно занимают страницы памяти с начала (с адреса #c000) то можно проверять только целостность в начале страницы.

Sonic
02.02.2007, 10:25
Т.е. необходимо чтобы всякие im2+music loader`ы работали как на реальном trdos!!!
Они могут работать лучше и быстрее чем на реальной TRDOS. Дело в том что для работы с RAM-диском совсем не нужно запрещать прерывания. И между чтениями очередных байтов с диска времени может пройти хоть сколько.

acidrain
02.02.2007, 12:18
2acidrain: Естественно 3584000 tackts/sec - просто опечаткаАга, опечатка. Но это лишь часть проблемы просто опечатка, но есть еще и мат часть -
кварец в пентагоне РОВНО 14 мгц, а значит тактов в секунде
РОВНО 3500000 (три с полтиной мульёна)!
и кадровая там не 50гц а чуть меньше (ибо строчек не 312 а 320).
=))) (сенкс, дружище (зы. друг понял;))))

TmK
03.02.2007, 09:37
Они могут работать лучше и быстрее чем на реальной TRDOS
А прикинь как тогда будет например тот же Refresh смотреться???
Там чтение видео с диска...
Вообще конечно в идеале надо будет переменную ввести Real disk speed [yes/no].

KingOfEvil
03.02.2007, 21:06
Сомневаюсь, что он при этом лезет во все страницы.

А я разве сказал, что он лезет во все страницы? Я только сказал, что он делает это без помощи TR-DOS.

Sonic
06.02.2007, 10:24
А прикинь как тогда будет например тот же Refresh смотреться???
Там чтение видео с диска...
Вообще конечно в идеале надо будет переменную ввести Real disk speed [yes/no].

А в чем там фишка? Вывод кадров синхронизируется с чтением секторов с диска? То бишь следующий сектор - следующий кадр?
Впрочем я имел в виду не это, а то, что можно исключить в принципе потерю данных. Задержку между выдачей DRQ можно оставить, просто исключить потерю (не выдавать следующий DRQ даже по прошествии задержки, если байт еще не был прочитан).

TmK
07.02.2007, 14:13
А в чем там фишка? Вывод кадров синхронизируется с чтением секторов с диска? То бишь следующий сектор - следующий кадр?

Типа того: Там читается кадр (12 секторов вроде) потом сразу следующий. Т.е. синхронизация идет иммено со скоростью чтения с диска!!!


Впрочем я имел в виду не это, а то, что можно исключить в принципе потерю данных. Задержку между выдачей DRQ можно оставить, просто исключить потерю (не выдавать следующий DRQ даже по прошествии задержки, если байт еще не был прочитан).
дело не в этом!!! В пзу заменяется не обращение к портам, а целизом процедуры чтения/записи секторов. Т.к. в варианте с портами не хватит тактов!!!

Sonic
07.02.2007, 14:29
Типа того: Там читается кадр (12 секторов вроде) потом сразу следующий. Т.е. синхронизация идет иммено со скоростью чтения с диска!!!

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



дело не в этом!!! В пзу заменяется не обращение к портам, а целизом процедуры чтения/записи секторов. Т.к. в варианте с портами не хватит тактов!!!

Интересно, а если приложуха сама напрямую обращается к портам, используя известные трюки для чтения из #1F (в одном из вариантов используется как раз функция чтения сектора, там хитро устанавливаются параметры и она запускается с середины) ?

CHRV
07.02.2007, 16:54
Может перекинуть тему в ОСи, всетаки по смыслу она больше там подходит чем здесь?

KingOfEvil
08.02.2007, 08:35
Может перекинуть тему в ОСи, всетаки по смыслу она больше там подходит чем здесь?

Ну если vTRDOS можно присвоить гордое звание ОС. А вообще я этот раздел редко читаю.