1 Отредактировано USR (14-03-2018 00:31)

Тема: "Плавная" графика...

Правильно ли я понимаю, для получения динамичной и плавной картинки надо менять кадры (переключать граф. страницы) в момент когда произошло таймерное прерывание NMI.

Проблема в том, что при fps=50 на программу построения кадра будет примерно 20500 тактов процессора на кадр.

Для fps=25 (переключение страниц на каждое второе NMI) 41000 тактов на кадр...

Это мало!

А для fps=17 (переключение на каждое третье NMI) я не могу понять, кажется картинка уже начинает двигаться рывками... и вся "плавность" теряется... Или я неправ? На эмуляторе толком не поймешь... Что на эту тему говорят классики, при fps=17 о "плавности" можно забыть?

Вот что получается, для fps=25 в монохромном обычном могу сдвигать вертикально на 2 или 4 строчки. На 4 самолет слишком быстро летит, на 2 вроде медленно)) Область, которую сдвигаю 128х160 точек. На построение кадра и рисование самолетика  максимум для 1 кадра уходит примерно 28000 тактов. Где-то 13000 тактов минимум остаются на программирование всего остального. (максимум и минимум условные, все зависит от изрезанности берега и кол-ва объектов). Объекты неподвижны. Это просто элементы лабиринта пока.

ЗЫ. Это я в Топазе своем играюсь))
ЗЗЫ. Лабиринт по быстрому нарисовал, только чтобы скорость проверить.

Post's attachments

f1.png, 5.04 kb, 512 x 512
f1.png 5.04 kb, 34 downloads since 2018-03-13 

f2.png, 3.21 kb, 512 x 512
f2.png 3.21 kb, 31 downloads since 2018-03-13 

f3.png, 3.49 kb, 512 x 512
f3.png 3.49 kb, 33 downloads since 2018-03-13 

f4.png, 4.19 kb, 512 x 512
f4.png 4.19 kb, 40 downloads since 2018-03-13 

2 Отредактировано Voldemar0 (14-03-2018 05:42)

Re: "Плавная" графика...

Если обновлять экран по NMI (переключая уже подготовленные страницы), то это даст наиболее гарантированную плавность.
Но на агате, практически, этого можно добиться только готовя кучу кадров заранее, что в реальности имеет мало смысла.
Разве что для мультиков на 1-2 секунды хватит. 128 / 8 кб = 64 - меньше полутора секунд.

Поэтому обновлять нужно либо на очередное (а не каждое) NMI: рисуем, ждём очередного NMI, переключаем страницу, рисуем следующую.
Это если обновление большое. Если мелкое (небольшой спрайт, часть экрана в динамике, остальное - фон), то переключать проще сразу после завершения рисования, так как дефекты картинки будут только в том месте, где развёртка пересечётся с процессом программного обновления (т.е. на экран попадёт часть старого и часть нового изображения). Но чем меньший регион по высоте занят новой картинкой, тем это менее вероятно.

На эмулятор тут особо полагаться не надо, так как никто не описывал всю логику работы виртуального дисплея, что там как происходит, как происходит согласование виртуального NMI с реальной развёрткой - дело тёмное. Ладно там в ДОСовским эмуляторе что-то можно было предугадать - он писал картинку напрямую в видеоозу. А в винде - кто знает... там и драйвер видеокарты что-то делает и его настройки.

3

Re: "Плавная" графика...

Voldemar0 пишет:

Если обновлять экран по NMI (переключая уже подготовленные страницы), то это даст наиболее гарантированную плавность.
Но на агате, практически, этого можно добиться только готовя кучу кадров заранее, что в реальности имеет мало смысла.
Разве что для мультиков на 1-2 секунды хватит. 128 / 8 кб = 64 - меньше полутора секунд.

Поэтому обновлять нужно либо на очередное (а не каждое) NMI: рисуем, ждём очередного NMI, переключаем страницу, рисуем следующую.
Это если обновление большое. Если мелкое (небольшой спрайт, часть экрана в динамике, остальное - фон), то переключать проще сразу после завершения рисования, так как дефекты картинки будут только в том месте, где развёртка пересечётся с процессом программного обновления (т.е. на экран попадёт часть старого и часть нового изображения). Но чем меньший регион по высоте занят новой картинкой, тем это менее вероятно.

На эмулятор тут особо полагаться не надо, так как никто не описывал всю логику работы виртуального дисплея, что там как происходит, как происходит согласование виртуального NMI с реальной развёрткой - дело тёмное. Ладно там в ДОСовским эмуляторе что-то можно было предугадать - он писал картинку напрямую в видеоозу. А в винде - кто знает... там и драйвер видеокарты что-то делает и его настройки.

Да я собственно сделал уже. Оценить результат не могу толком))

Использую 4 граф. страницы. Переключаю их на каждое 2-е NMI (если за 1/25с успеваю построить кадр. лабиринт так сделал чтобы успевать, еще и запас небольшой остается).

Переключать на очередное (ближайшее) NMI не лучшая идея, т.к. есть простые участки лабиринта, которые быстро отрисовываются и тогда самолетик начинает вдвое быстрее лететь))
Для комфортной скорости движения лабиринта лучше переключать на каждое третье NMI, но опять же не понимаю сохранится ли "плавность".

В принципе, достаточно быстро могу подготовить образ для АГАТ-9 с доп. ОЗУ-128КБ во 2-м слоте. Если без доп. ОЗУ, тоже могу сделать образ, но через какое-то время.

Есть возможность попробовать на реальном АГАТе и потом поделиться впечатлениями?

4

Re: "Плавная" графика...

> Есть возможность попробовать на реальном АГАТе и потом поделиться впечатлениями?

Есть, конечно! И, думаю, что не только у меня.

Могу с допозу, могу без.

5 Отредактировано USR (17-03-2018 17:50)

Re: "Плавная" графика...

Выкладываю образ.

Как загрузится "Топаз" выбрать "Дисковая система"->"Загрузить файл". Загрузить "NMI2" или "NMI3" или "NMI4"

Управление стрелками. Влево/вправо - движение, вверх/вниз переключение скоростей. Надо стараться не врезаться в берег)) "РЕД"-выход.

Проверок на столкновение с берегами еще нет, так что если над берегом лететь, то будут артефакты изображения.

Скоростей всего две. Соответствуют сдвигу экрана на 2 или 4 строки.

Файлы:
NMI2      fps=25
NMI3      fps=17
NMI4      fps=12,5

TEST - исходник.

Пока все работает только на Агате с доп. ОЗУ во 2-м слоте.

Собственно интересует, получилась ли так называемая "плавность" и какой режим fps комфортнее...

Post's attachments

Attachment icon NMI.dsk 840 kb, 35 downloads since 2018-03-17 

6

Re: "Плавная" графика...

Думаю для плавности важно:
1. fps>=24 Гц (из кинематографа).
2. Время послесвечения люминофора.

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

7

Re: "Плавная" графика...

На девятке без допозу вылетает здесь:

1EDE-  F0 0F ..    "П."     BEQ   1EEF
1EE0-  C9 C8 ..    "IH"     CMP   #C8
1EE2-  F0 0F ..    "П."     BEQ   1EF3
1EE4-  E6 02 ..    "Ф."     INC   02
1EE6-  E8 .. ..    "Х"      INX   
1EE7-  E0 07 ..    "Ю."     CPX   #07
1EE9-  D0 ED ..    "PМ"     BNE   1ED8
1EEB-  20 FA D3    ".ЗS"    JSR   D3FA
D3FA-  00 .. ..    "."      BRK   
0000-  08 .. ..    "."      PHP                   <==

Это немного плохо, так как хотелось бы понятное предупреждение об отсутствии памяти.

Сейчас буду тестить на реале..... С памятью и без.

8

Re: "Плавная" графика...

Voldemar0 пишет:

Это немного плохо, так как хотелось бы понятное предупреждение об отсутствии памяти.

Сейчас буду тестить на реале..... С памятью и без.

А! не подумал я.

Просто программа еще не закончена. Будет все круче. Загрузчик определит какая есть память и если доп. ОЗУ отсутствует, предложит на выбор загружать один из трех модулей (редакторы, компилятор, запускалку файлов). Просто пока все не доделал...

Сейчас без доп. ОЗУ тестить не надо. Априори будут непредсказуемые ошибки.

9 Отредактировано Voldemar0 (18-03-2018 16:55)

Re: "Плавная" графика...

Запустил на реале.

Дисковая система, каталог - при переходах между именами файлов экран мерцает. Вероятно, там выполняется очистка экрана и перерисовка заного. Но чистить экран вроде как смысла нет, так как есть только движение курсора. Можно при скроле выводить текст поверх, а в конце строк делать очистку до конца строки. И быстрее и мерцания не будет.

Выбрал "загрузить файл", NMI2, "идёт загрузка файлов..." и всё зависает. На УПР-СБР нет реакции. Перезагрузил, всё то же самое сделал, но без просмотра каталога, получил "не найден сектор". Попробовал сразу загрузить NMI3 - снова завис на "идёт загрузка файлов..."

В среднем: часто вылазит ошибка "сектор не найден", причем тут же перечитываешь этот же файл - без ошибок. И я вроде не слышу при ошибках ретрейса головы, к тому же вообще ошибка появляется подозрительно быстро. Есть предположение, что тут что-то не так со временем поиска сектора.

Тестил на двух дискетах. В "КОПИРОВЩИКЕ" ИКП оба диска проходят без ошибок, КС=13143.
Дисковод физический, не эмуляция.

УПР-СБР иногда возвращает в первое меню, иногда - нет реакции (висим). В первом меню (или хоть где нибудь) не хватает "перезагрузить систему".

Дальше "идёт загрузка файлов" продвинуться не удалось. После появления этой надписи дисковод шуршит головкой ещё около секунды, дальше только шпиндель, никаких движений.

PS Заставка как-то странно немного выглядит - квадратно-инстаграмно.
Может её дорисовать по бокам? Для сравнения - ИКП на этом же монике.

Post's attachments

dsc_0247.jpg, 142.57 kb, 792 x 664
dsc_0247.jpg 142.57 kb, 43 downloads since 2018-03-18 

dsc_0250.jpg, 117.68 kb, 732 x 663
dsc_0250.jpg 117.68 kb, 38 downloads since 2018-03-18 

10

Re: "Плавная" графика...

PPS Сейчас сразу после теста лисина попробовал загрузить: вообще улетела куда-то в текстовый режим эпла и зависла. Есть вероятность, что модуль допозу или не инициализируется или неверно распознаётся (т.е. распознавание зависит от первоначального состояния). Тоже нехорошо, так как получается, что при перезагрузке из других прог, возможно, Топаз не будет работать корректно.

11 Отредактировано Voldemar0 (18-03-2018 18:33)

Re: "Плавная" графика...

Удалось запустить проги, ошибка флопика никуда не исчезает, но где-то 1/3 раз прога нормально грузится. Причем тут заметно: если не дать дисководу остановится после ошибки и сразу попробовать снова (ввод, ввод, ввод) то файл, обычно, читается. Вероятно, в драйвере слишком короткий интервал для разгона шпинделя и/или открытия канала чтения (у некоторых флопов он открывается через небольшую паузу после набора скорости).

Движение сравнивал на физическом монике (никаких преобразований развёрток, ресемплингов, только видеосигнал уходящий на трубку). Мне так показалось: nmi3 хуже чем nmi2 чуть-чуть хуже чем nmi4.
Такое ощущение, что nmi3, хотя и быстро, но, как бы, волной обновляет картинку. Не знаю почему даже так кажется. А nmi2 этот эффект уже почти не ощущается, а на nmi4 его совсем нет. Движение рывковатое (сдвиг не на 1 пиксель, а на 4? 8?), но для этого железа - нормально. Скорость не менял, в начале нажимал только стрелку влево и смотрел.
В общем-то, разница очень малозаметная, так что можно оптимизировать по другим критериям.

Также сравнил движение через конвертор hd9800, ну там разницы (nmi2 <-> nmi3 <-> nmi4) нет. У самого конвертора картинка чуть дёрганная, видимо, какие -то биения входной и выходной кадровой частоты.

12 Отредактировано Voldemar0 (18-03-2018 18:39)

Re: "Плавная" графика...

Ещё ошибка: если вынуть дискету и вызвать какую нибудь дисковую операцию, прога зависает. Вероятно, ожидает каких-то данных, но это тоже неверно - должен быть какой-то таймаут.



Попробовал сделать разметку диска, пишет: "Сбой разметки диска".
Если это сообщение о write protect, то не совсем очевидное.

13 Отредактировано USR (18-03-2018 19:54)

Re: "Плавная" графика...

Благодарю за тестирование!


Voldemar0 пишет:

Запустил на реале.

Дисковая система, каталог - при переходах между именами файлов экран мерцает.

Это я видел, записано в тетрадку, в раздел "Переделать"))

Voldemar0 пишет:

PS Заставка как-то странно немного выглядит - квадратно-инстаграмно.
Может её дорисовать по бокам? Для сравнения - ИКП на этом же монике.

Там меню еще будет. А елки по бокам мне дочка обещала дорисовать)) Это тоже записано в переделки))

Что касается чтения файлов, то тут такое дело. Я не писал RWTS, на одном из дисков был исходник (использовал его 25+ лет назад)-попробовал в эмуляторе-заработало. Видимо не все так однозначно)) Странно то, что загрузка первоначальная (заставка, ТОПАЗ), тем же RWTS и вроде все в норме. Похоже действительно, надо дать разогнаться шпинделю.

Voldemar0 пишет:

И я вроде не слышу при ошибках ретрейса головы,

А наверное его и нет)) Что конечно неверно. Опять же, надо смотреть что у меня за RWTS.

Voldemar0 пишет:

Выбрал "загрузить файл", NMI2, "идёт загрузка файлов..." и всё зависает. На УПР-СБР нет реакции.


Хм... тут надо думать.

Voldemar0 пишет:

В первом меню (или хоть где нибудь) не хватает "перезагрузить систему".

Ок. Внес в список переделок.

Voldemar0 пишет:

Ещё ошибка: если вынуть дискету и вызвать какую нибудь дисковую операцию, прога зависает. Вероятно, ожидает каких-то данных, но это тоже неверно - должен быть какой-то таймаут.

Попробовал сделать разметку диска, пишет: "Сбой разметки диска".
Если это сообщение о write protect, то не совсем очевидное.

Опять же вопросы к RWTS.

Voldemar0 пишет:

Сейчас сразу после теста лисина попробовал загрузить: вообще улетела куда-то в текстовый режим эпла и зависла. Есть вероятность, что модуль допозу или не инициализируется или неверно распознаётся (т.е. распознавание зависит от первоначального состояния).

Сейчас нет вообще распознования и установки банков в какое-то начальное состояние. Но будет))

Вообще конечно тяжко такие программы делать без реального железа. Очень жалею, что в свое время не сохранил свой Агат.

14 Отредактировано USR (18-03-2018 23:06)

Re: "Плавная" графика...

Voldemar0 пишет:

Движение сравнивал на физическом монике (никаких преобразований развёрток, ресемплингов, только видеосигнал уходящий на трубку). Мне так показалось: nmi3 хуже чем nmi2 чуть-чуть хуже чем nmi4.
Такое ощущение, что nmi3, хотя и быстро, но, как бы, волной обновляет картинку. Не знаю почему даже так кажется. А nmi2 этот эффект уже почти не ощущается, а на nmi4 его совсем нет. Движение рывковатое (сдвиг не на 1 пиксель, а на 4? 8?), но для этого железа - нормально. Скорость не менял, в начале нажимал только стрелку влево и смотрел.
В общем-то, разница очень малозаметная, так что можно оптимизировать по другим критериям.

Сдвиг на 2 строки. На повышенной скорости на 4.  На счет, что волной картинку обновляет... не знаю, все эти nmi2/3/4 отличаются только временем ожидания количества nmi перед переключением граф. страницы.

На nmi2 должно быть по идее плавно все. Как бы 25 fps. В эмуляторе поставил скорость процессора 120% , ну чтобы частота nmi приблизилась  к кадровой моего монитора. Ну более-менее плавно...

Еще раз благодарю за тесты. Пойду копать RWTS. Хотя без реального железа тяжко это все.

ЗЫ. А есть какой-нибудь исходник RWTS? Я в свое время откуда-то содрал конечно. Откуда, естественно не помню. Сейчас смотрю, какие-то мелкие константы стоят при поиске сектора... ну вроде того, что 32 раза ищет начало сетора, и потом 32 раза сравнивает тот ли сектор...

UPD. Ага, значит пока так работает.  Сдвигаем на нужную дорожку. Ждем синхробайта. Смотрим пролог ли это заголовка сектора. Максимум 32 раза считываем синхробайт и проверяем пролог заголовка. Если пролог сектора найден, считываем номер тома, трека и сектора. Если не найден пролог заголовка или не тот сектор, повторяем. Тоже максимум 32 раза. Ошибка "не найден сектор" где-то здесь. Правда еще возможно, попадаем не на ту дорожку. Сразу выбросит ошибку. "Не найден сектор".

Так что одно из двух. либо эти 32 и 32 маленькие, либо не та дорожка.
Странно еще вот что. Я эту программу RWTS использовал и 25 лет назад. Проблем не было. правда может у меня вот такой хороший тогда дисковод был))

UPD2. И случайно нашел ошибку зависания при неудачной загрузке. Если не удается считать сектор файла, то вместо PLP-RTS стояло PHP-RTS. Ну и понятно, возвращалось из подпрограммы незнамо куда.

15 Отредактировано Voldemar0 (19-03-2018 05:18)

Re: "Плавная" графика...

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

Из твоего описания не совсем ясно, как драйвер опознает готовность дисковода.

> Ждем синхробайта.
Если дискета не вставлена - не дождёшся.

32 раза раза одно проверяется, 32 раза другое - то есть всего попыток 32 + 32 или 32*32 ?

У 140ок готовность флопа проверялась на том, что регистр данных читался дважды подряд с небольшой задержкой и если байт совпадал, то дисковод не крутится. Драйвер ждал.
В 840ке, вроде бы, проверяют только бит готовности (который многие флопы формируют из комбинаций сигналов, вроде, Select & Motor On & Закрыта дверца - т.е. инфы о скорости шпинделя тут нет).

Надо понять, что делает твой драйвер, если флоп ещё не разогнан.
Например, синхросбои уже пошли, но из-за низкой скорости они валятся большой кучей.

Post's attachments

Attachment icon rwts_lite.zip 5.71 kb, 39 downloads since 2018-03-19 

16 Отредактировано Voldemar0 (19-03-2018 07:07)

Re: "Плавная" графика...

> ЗЫ. А есть какой-нибудь исходник RWTS?

Исходников полно, но знать бы, какие из них точно рабочие и в чём отличия.
Кроме того, даже рабочий исходник может работать тут и не работать там.

Когда я с флопиками импортными экспериментировал, всякие трёхдюймовки да японские пятидюймовки, вылез такой сюрприз: какой-то newtronic, что ли, не хотел работать в ИКП-бейсике. В ДОК работал, в Копировщике, бейсик тоже грузил, но дальше то работал, то, почти сразу давал "ошибка ввода/вывода".

Выяснилось, что при включении этот дисковод выжидал ещё около полусекунды примерно, прежде чем начинал выдавать хоть какие -то данные. А у бейсиковской RWTS это вызывало непонимание - константа в канале данных, вроде как мотор не крутится. Она нормально работала, если запрошенный трек не был равен текущему. В этом случае, за время движения головки, дисковод просыпался и всё было нормально. Если смещения головки не было, а мотор перед запросом был остановлен, драйвер давал ошибку.

Довольно быстро удалось в начале драйвера найти какую-то процедуру задержки и изменить её время - это решило проблему.

17

Re: "Плавная" графика...

Voldemar0 пишет:

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

Из твоего описания не совсем ясно, как драйвер опознает готовность дисковода.

> Ждем синхробайта.
Если дискета не вставлена - не дождёшся.

32 раза раза одно проверяется, 32 раза другое - то есть всего попыток 32 + 32 или 32*32 ?

У 140ок готовность флопа проверялась на том, что регистр данных читался дважды подряд с небольшой задержкой и если байт совпадал, то дисковод не крутится. Драйвер ждал.
В 840ке, вроде бы, проверяют только бит готовности (который многие флопы формируют из комбинаций сигналов, вроде, Select & Motor On & Закрыта дверца - т.е. инфы о скорости шпинделя тут нет).

Надо понять, что делает твой драйвер, если флоп ещё не разогнан.
Например, синхросбои уже пошли, но из-за низкой скорости они валятся большой кучей.

Сначала стандартная инициализация (в регистры записываются константы, задается режим чтения), потом передвижение головки (если надо), включение всяких режимов предкомпенсаций... Задержка там есть небольшая. Ну а дальше начинает искать синхробайты.
Работает так: процедура "B" 32 раза запускает процедуру "А"
Если "А" закончилась неудачно-повторяет ее.
В случае успеха, проверяет тот ли трек (если нет-сразу ошибка), дальше проверяет нужный ли сектор считался. Если нет, повторяет.

Процедура "А" 32 раза ищет синхробайт.
Если после синхробайта идет пролог заголовка, считывает его и успешно завершается.
Если нет пролога, повторяет поиск.

Вот сильно подозреваю, что эти 32 и 32 малы. По крайней мере, сейчас посмотрел, этот драйвер я во всех своих поделках использовал. Нареканий не было. Правда надо сказать, что использовал только на одном дисководе, ну не было у меня в доступе тогда других 840Кб. Ну или, где-то влез косяк, когда я его в новодел портировал.

Исходники посмотрю, спасибо. Гляну какие константы там.

Вот такой еще вопрос, а точка входа в RWТS для ИКП-9 известна? Можно в принципе и там глянуть...

ЗЫ. Вот думаю, не из отладчика ли я этот драйвер стянул... А константы 32 и 32 мог и сам такие установить. Запросто.

18

Re: "Плавная" графика...

во всех бейсиках вектор входа в драйвер дисковода - $3d9
но в икп придётся пройти некороткий путь от входа до самих операций с контроллером

19 Отредактировано USR (19-03-2018 19:32)

Re: "Плавная" графика...

Копаю драйвера на основе исходников Кривцова.

Первая странность. Отсутствует включение НГМД и контроллера. Т.е. не нашел записи константы $0f в регистр С1 ($C083), эта операция устанавливает 7-й бит регистра RK ($C082) в единицу. Номер привода тоже не  выбирается, правда это специально оговорено. Может поэтому и $0f не записывают.

Алгоритм чтения немного другой, пропуская операции с головой (надо тоже будет их смотреть, там задержки есть) происходит следующее. В течении $16A байтов пытаемся найти пролог заголовка. Если не нашли, пытаемся еще раз.

Максимум 21*6 попыток поиска пролога заголовка сектора. Т.е. примерно 6 оборотов. (У меня в драйвере ловятся максимум 1024 синхробайта и это как-то неправильно)) Если пролог прочитался, но оказались на другой дорожке, то пытаемся заново позиционировать башку. Номер тома игнорируется (оговорено), игнорируется эпилог заголовка, проверка на сбой синхронизации во время чтения заголовка.

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

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

Украду подпрограмму поиска пролога заголовка и данных. Понравились сравнения на 6A 95 и 95 6A))

ЗЫ. А очереди эти мне не понравились. Оно конечно и круто и логично и правильно. Но это уже слишком для меня))

20 Отредактировано Voldemar0 (19-03-2018 20:07)

Re: "Плавная" графика...

> Т.е. не нашел записи константы $0f в регистр С1 ($C083), эта операция устанавливает 7-й бит регистра RK ($C082) в единицу.

Как же -с можно -с без этого !

 LDA #$92              ; Инициализация контроллера
 STA FCR.CTL1,X
 LDA #$BD
 STA FCR.CTL2,X
*
RWTS_OPEN.2:
 LDA #FCB.1CTL.MOTOR!1 ; Включение двигателя   <<<<< ВОТ ЖЕ - ЭТО ЕСТЬ "$0F"
 STA FCR.CTL1,X
 LDA FCR.IO_1C,X       ; Проверяем, что сигнал включения прошел (т.е. инициализация прошла и успешно)
 BPL RWTS_OPEN.2

RWTS_OPEN.3:
 LDA FCR.IO_1B,X       ; Теперь ожидаем готовности дисковода
 BMI RWTS_OPEN.3
*
 LDA #FCB.2CTL.RDCHK!1 ; Готовность по флагу канала чтения
 STA FCR.CTL2,X

                                                                                           


> У меня в драйвере ловятся максимум 1024 синхробайта и это как-то неправильно

Тут надо учитывать вот какую штуку: в зависимости от форматтера и драйверов, выполнявших запись на дискету, синхросбоев может быть огромное количество на дорожке. Т.е. реально их не 2 на сектор, а где-то штук 5, не меньше. Где-то выключилась запись, где-то раньше, где-то позже и чем дальше дискета используется без форматирования, особенно на разных по скорости флопикам, тем больше может накапливаться синхросбоев. Плюс бывают ещё форматтеры, которые могут что-то от себя добавлять.
Поэтому как бы учитывать их можно, но только если с очень большим запасом. Лучше опираться на что-то другое.

-=-

Очереди - это то, что как раз отличает агат от других восьмибиток в работе с флопом. Именно за счет них сильно растет скорость произвольного доступа. И в этом исходнике они как раз сильно упрощены против кривцовской/бадеровской версии (там была механика эмуляции классического драйвера с оптимизацией через очереди).

И, пожалуй, я даже не вспомню случая рабочей RWTS для 840-ки без поддержки очередей.

21

Re: "Плавная" графика...

Voldemar0 пишет:

Как же -с можно -с без этого !

Упс. Стер кусок файла, пока читал)) бывает. Да отвлекают, студенты, толпами ходят))

Voldemar0 пишет:

Очереди - это то, что как раз отличает агат от других восьмибиток в работе с флопом. Именно за счет них сильно растет скорость произвольного доступа. И в этом исходнике они как раз сильно упрощены против кривцовской/бадеровской версии (там была механика эмуляции классического драйвера с оптимизацией через очереди).

И, пожалуй, я даже не вспомню случая рабочей RWTS для 840-ки без поддержки очередей.

Это я понимаю, просто не моя задача пока. Сектор то и то считать не могу.
Такой вот еще момент. Считываю и записываю то я по одному сектору за раз.   Т.е. включил движок, считал сектор, выключил движок. И так до 100 раз за файл. С точки зрения жизни железа это наверное не есть хорошо... В скорости чтения/записи при этом я не проигрывал, достаточно быстро всегда все происходило вроде.

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

22

Re: "Плавная" графика...

Почти все флопики имеют механизм задержки выключения, так что короткая пауза в сигнале выбора (вкл мотор) ими просто игнорируется. А 840ка, к тому же, имеет аналогичную схему на самом контроллере. Так что железо от этого никак не страдает.

23

Re: "Плавная" графика...

Voldemar0 пишет:

Почти все флопики имеют механизм задержки выключения, так что короткая пауза в сигнале выбора (вкл мотор) ими просто игнорируется. А 840ка, к тому же, имеет аналогичную схему на самом контроллере. Так что железо от этого никак не страдает.

Ну хоть в этом свезло. Тогда пока без очередей обойдусь))