информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] CmosTime != DOSTime 03.10.02 21:05  Число просмотров: 1035
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Доброго времени суток!

Хи !

> Заметил я такую интересную вещь за компьютерами,
> работающими под PC DOS 7
> ...

Ну, проверить, обращается ли win (у меня любимая 98) к портам cmos легко: заглянул я в SoftIce, написал:

bpio 70
bpio 71

Пошевелил мышой секунд 10 ... ничего. Дернул часы, тока я год решил установить другой (OK не давил !) - сразу бряк !
Вот так.
А делается (и в сайсе) это через аппартные регистры отладки DRx. Сам не пробовал, но вроде это можно и в чистом досе сделать. Т.е. ставишь в резиденте (ну или просто в проге) такой бряк на cmos и ждешь...

z0 тут как-то пример приводил: он ставил такой бряк прямо из mbr, только на порты винта...
<programming>
[C++] CmosTime != DOSTime 03.10.02 15:14  
Автор: AlexKara Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Доброго времени суток!
Заметил я такую интересную вещь за компьютерами, работающими под PC DOS 7
Часики сильно отстают на станциях, где работает софт, использующий активно функцию времени(даты). Я наблюдал как за трое суток часы просто отставали на пять минут...а то и на 7 минут. Но стоит станцию перегрузить, как время более или мене корректировалось. Создалось впечатление , что PC DOS поддерживает свои внутренние часы, которые синхронизируются с часами из CMOS только во время загрузки операционки...а далее по ходу работы системы из-за каких-то пропусков-запретов прерываний эти часы отстают довольно внушительно.
...После недолгих экспериментов действительно обнаружилось, что функции работы со временем (21 прерывание) возращают своё время, отличное от времени, хранящемся в энергонезависимой памяти внутренних часов.
...Время в операционной системе вроде WIN9x так же отстаёт от времени в CMOS...с единствнной разницей, что винда по ходу время от времени свои часы синхронизирует с часами из энергонезависимой памяти (в последнем не уверен - требуется експеримент).

Меня интересует - есть ли в этой PC DOS7 (или вообще в ОС)"вызовы" "функции" позволяющие синхронизировать эти часики?
(синхронизировать в своём коде через чтение самой смоз просьба не предлагать - уже есть)
--
WBR,
AlexKara
[C++] CmosTime != DOSTime 04.10.02 00:13  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Доброго времени суток!
> Заметил я такую интересную вещь за компьютерами,
> работающими под PC DOS 7
> Часики сильно отстают на станциях, где работает софт,
> использующий активно функцию времени(даты). Я наблюдал как
> за трое суток часы просто отставали на пять минут...а то
> и на 7 минут. Но стоит станцию перегрузить, как время более
> или мене корректировалось. Создалось впечатление , что PC
> DOS поддерживает свои внутренние часы, которые
> синхронизируются с часами из CMOS только во время загрузки
> операционки...

Наверное так оно и есть (когда грузишься без config.sys & autoexec.bat ДОС говорит Enter new time - видимо тогда и происходит синхронизация)

> Меня интересует - есть ли в этой PC DOS7 (или вообще в
> ОС)"вызовы" "функции" позволяющие синхронизировать эти
> часики?
> (синхронизировать в своём коде через чтение самой смоз
> просьба не предлагать - уже есть)

Можно написать TSR и повесить свой обработчик на функцию работы со временем (21 прерывание), чтобы возвращать правильное время, прочитанное через INT 1Ah/ah=2.
INT 1Ah - System Timer and Clock Services
ah=2 Read Real-Time Clock Time
Это ф-я BIOS, она дожна работать с CMOS напрямую.
[C++] CmosTime != DOSTime 03.10.02 21:05  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Доброго времени суток!

Хи !

> Заметил я такую интересную вещь за компьютерами,
> работающими под PC DOS 7
> ...

Ну, проверить, обращается ли win (у меня любимая 98) к портам cmos легко: заглянул я в SoftIce, написал:

bpio 70
bpio 71

Пошевелил мышой секунд 10 ... ничего. Дернул часы, тока я год решил установить другой (OK не давил !) - сразу бряк !
Вот так.
А делается (и в сайсе) это через аппартные регистры отладки DRx. Сам не пробовал, но вроде это можно и в чистом досе сделать. Т.е. ставишь в резиденте (ну или просто в проге) такой бряк на cmos и ждешь...

z0 тут как-то пример приводил: он ставил такой бряк прямо из mbr, только на порты винта...
[C++] CmosTime != DOSTime 03.10.02 18:15  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
Можно самому написать программу синхронизации любого времени по любому и поставить ее запуск в таблицу запуска по расписанию (резидент доя доса).
Может помоч обновление прошивки биоса.
ЦМОС часы ходят сами по себе. Биосовские часы считают прерывания от таймера. ОС может пользоваться биосовскими часами, а может и сама прерывания считать. Может биос в таймер пишет не 65536 а 65535, вот и расхождение можно получить. Это маловероятно, поскольку биосы достаточно отлажены, чтобы в них не было ошибок.
Скорее всего у Вас на основной плате бракованый кварц впаян, не основной (чуть более 14 мегагерц), а часовой (чуть более мегагерца он должен быть). Тут уж прошивки и операционки не помогут - только программа синхронизации.
Хотя есть еще выход - в нулевой канал таймера другое число загнать - меньшее, поскольку часы у Вас отстают. Число подобрать надо будет.
В крайнем случае перепаять кварц или поменять плату.

> Доброго времени суток!
> Заметил я такую интересную вещь за компьютерами,
> работающими под PC DOS 7
> Часики сильно отстают на станциях, где работает софт,
> использующий активно функцию времени(даты). Я наблюдал как
> за трое суток часы просто отставали на пять минут...а то
> и на 7 минут. Но стоит станцию перегрузить, как время более
> или мене корректировалось. Создалось впечатление , что PC
> DOS поддерживает свои внутренние часы, которые
> синхронизируются с часами из CMOS только во время загрузки
> операционки...а далее по ходу работы системы из-за
> каких-то пропусков-запретов прерываний эти часы отстают
> довольно внушительно.
> ...После недолгих экспериментов действительно обнаружилось,
> что функции работы со временем (21 прерывание) возращают
> своё время, отличное от времени, хранящемся в
> энергонезависимой памяти внутренних часов.
> ...Время в операционной системе вроде WIN9x так же
> отстаёт от времени в CMOS...с единствнной разницей, что
> винда по ходу время от времени свои часы синхронизирует
> с часами из энергонезависимой памяти (в последнем не
> уверен - требуется експеримент).
>
> Меня интересует - есть ли в этой PC DOS7 (или вообще в
> ОС)"вызовы" "функции" позволяющие синхронизировать эти
> часики?
> (синхронизировать в своём коде через чтение самой смоз
> просьба не предлагать - уже есть)
> --
> WBR,
> AlexKara
CmosTime != DOSTime 03.10.02 21:17  
Автор: AlexKara Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Можно самому написать программу синхронизации любого
> времени по любому и поставить ее запуск в таблицу запуска
Уже есть.. и по ходу это единственный разумный путь

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

и кварц тут не причём часы в смос идут корректно и сбиваются немного в сторону опаздания после перезагрузки сбивание не происходит если время самой ОС перед перезагрузкой выставить в ровень с часами cmos
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach