Page 1 of 4

Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 16:49
by null_device
После выхода "пофикшенной" версии, перекачал архив со сборкой, но особой разницы не заметил.. Проверил запуск обоих EXEшников.
Если во вкладке ula, изменить значение только в строке int len, нажать ОК и открыть окно еще раз.. значение остается прежним (если "потыкаться" в несколько строк, введенное значение сохраняется, но толку от этого чуть)! При этом величина прописаная в *.ini файле значения не имеет, вписывай 24 или 42 - при запуске во вкладке будет число 32.
Работа с ВГ несколько исправлена, но, некоторые программы по прежнему работают некорректно(в BV невозможно выбрать дисковод, кроме "первого выбранного", RDS вообще "не видит диск" и т.п.), либо дооолго "читают" дискету.
----
Для примера внизу, на первом рисунке показаны скриншоты теста на версии 37.4, на втором 37.3 fix 4. В обоих выставлены значения int len=42..
ImageImage

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 16:54
by deathsoft
null_device wrote:RDS вообще "не видит диск" и т.п.

Это уже исправлено (сегодня с утра):
! Исправлены коды условий для команды Dx в ВГ93 (биты обрабатывались задом наперед)
! Исправлена обработка команды Dx в ВГ93 (после этой команды не обновлялся статус, было испорчено в прошлой версии)

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 16:56
by deathsoft
Теперь про INTLEN, инт в унрале обрабатывается как в кае, если прерывания в процессоре разрешены - то инт снимается сразу как начинает выполнятся первая команда обоаботчика (цикл /IORQ, /M1), если прерывания в процессоре запрещены, то длина инта определятеся параметром INTLEN. По понятным причинам длину инта в таком режиме програмно измерить нелзя (повторного захвата инта никогда не будет).

Далее про тест 4.30, в нем есть глюк, если тест пиешт что инт короткий, то он всегда пишет что на шине ???, не зависимо от того что там в действиетльности (ошибка в коде теста). Для проверки что вектор реально равен FF можно взять тест инта от Ковалевского http://vtrdos.ru/system/TESI1_10.ZIP, там сразу будет видно, что вектор ФФ (а елси в настройках инта поставить bus float то вектор будет рандомным, в тесте поползут полоски с битами).

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 16:58
by deathsoft
null_device wrote:Если во вкладке ula, изменить значение только в строке int len, нажать ОК и открыть окно еще раз.. значение остается прежним

Да - это глюк, надо пофиксить.

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 16:59
by deathsoft
null_device wrote:При этом величина прописаная в *.ini файле значения не имеет, вписывай 24 или 42 - при запуске во вкладке будет число 32.

Величина берется из пресета:
; PRESET.NAME=FRAME,PAPER,LINE,INT,INTLEN,EvenM1,4TBorder,floatBus,floatDOS,PortFF
PRESET.PENTAGON=71680,17989,224,50,32,0,0,0,0,0

а там где параметр intlen указан отдельно - это работает если нету никакого пресета preset=

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 17:14
by lvd
deathsoft wrote:По понятным причинам длину инта в таком режиме програмно измерить нелзя

Можно. Только более хитро.

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 17:21
by deathsoft
lvd wrote:Можно. Только более хитро.

Да, делать DI и нопы и EI в им2, и смотреть когда сработает прерывание, я это уже понял.

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 17:27
by null_device
deathsoft wrote:Для проверки что вектор реально равен FF можно взять тест инта от Ковалевского


Им я тоже "измерял" длительность инта и "стабильность" шины (вектор прерываний). По шине вопросов нет - проблема в правильной длительности инт..
----
lvd wrote:Величина берется из пресета:


Только, что проверил тестом Коваевского. Изменения параметра в пресете (допустим, для пентагона), при выполнении теста ничего не изменило (в том же самом 37.3 fix 4 разница есть).

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 17:29
by deathsoft
null_device wrote:Только, что проверил тестом Коваевского. Изменения параметра в пресете (допустим, для пентагона), при выполнении теста ничего не изменило (в том же самом 37.3 fix 4 разница есть).

Естественно не изменяется, я же написал выше, все тесты тестируют при разрешенном прерывании, при этом импульс инт снимается СРАЗУ при выполнении процессором первой же инструкции. А параметр intlen нужен для снятия инта когда в процессоре прерывания запрещены. Для этого нужно писать отдельный специальный тест, стандартные тесты будут показываь что инт короткий, т.к. никогда не ммогут захватить инт повторно, даже на команде nop.

В старом унриале цикл подтверждения прерывания не использовался, и инт был всегда длиною intlen (как в зеленом скорпионе).

Re: Ошибки в us0.37.4

PostPosted: 29 Jan 2011, 17:44
by deathsoft
deathsoft wrote:Да - это глюк, надо пофиксить.

Так, это тоже исправил.