Как получить время из биоса? #500649


#0 by Rizhij_Nikitos
Как получить время биоса в 1С? Кто-то делал такое? Возможно вообще?
#1 by Sk0rp
А чем, по вашему, время биоса отличается от системного?
#2 by Rizhij_Nikitos
Ну я как то думал что время системное это время Windows, но время Windows меняется легким движением руки, ТекущаяДата; насколько я понимаю получает время из Windows. Вот мне и надо получить время с биоса - оно вроде не зависит от Windows?
#3 by Сергей Д
По опыту работы с ДОС - меняешь системное время, меняется и время в БИОС.
#4 by smaharbA
всем
#5 by smaharbA
не факт
#6 by Liova
Тебя ввели в заблуждение. Время есть время, но права на изменение в винде можно урезать
#7 by Rizhij_Nikitos
Да нет же!!! Идея такая что нужен независимый или максимально недоступный для пользователя источник времени. Пишу игру на 1С, там фишка такая есть: добыча ресурсов в час. Так вот когда ты не в игре они тоже тикают и когда ты заходишь, расчитывается время твоего отсутствия, и добавляются ресурсы, все работает через ТекущаяДата; но это же очевидный баг. Вышел, перевел часы на 100 дней вперед, зашел и тут опа тебе куча ресурсов! Хоть свои часы пиши и в трей вешай)
#8 by acsent
Обращайся  к серверам времени, например time.windows.com
#9 by acsent
MMORPG пишешь?
#10 by H A D G E H O G s
Прочитать область памяти (не помню на глаз адрес). Вроде права ring0 нужны.
#11 by H A D G E H O G s
И если она кэшируется в ОЗУ - только тогда
#12 by nop
используй вычисление времени с момента запуска программы
#13 by H A D G E H O G s
А так - порты читать.
#14 by H A D G E H O G s
#15 by Rizhij_Nikitos
Игра как конфа идет, запуск игры - запуск документа, закрытие ее - закрытие документа. Закрыл документ - время в константу, открыл его - получили с ТекущейДаты; Вот тоже уже начал об этом думать, только с внешними приложениями никогда не работал в 1с. Посоветуйте книжку/статью или может у кого набросок похожего есть?
#16 by Rizhij_Nikitos
Не. Пишу аналог OGame (русск. ОГейм) — стратегическая космическая игра. Относится к классу многопользовательских браузерных веб-игр(с)Wiki Моя пока однопользовательская - реализую для одного человека все это дело. Многопользовательской будет врядли только если под 8.2 в веб интерфейсы перегонять. Делаю для себя потрениться в 1с да и вообще мозги размять. Если кому интересно могу дать .dt чего уже наделал)
#17 by Grusswelle
Время в БИОСе - и есть системное! :-)
#18 by Grusswelle
Используй централизованное время (время сервера?).
#19 by tridog
&НаСервере Конечно нужен клиент-сервер, но публиковать файловую базу в вебе это такое звращение...
#20 by smaharbA
да ну ?!
#21 by acsent
Какая функция меняет время в винде и не менят в биосе?
#22 by Fram
мальчиш-кибальчиш smaharbA что то знает, но не хочет нам говорить ))
#23 by smaharbA
ты мене подозреваешь в дрындеже ? ) скажу
#24 by supremum
Если охота поизвращаться, то вот: потом вот:
#25 by Rizhij_Nikitos
Как правило все что заканчивается на asm ни к чему хорошему не приводит)) Точнее приводит но очень извилистыми путями, связываться не охота. Опять же говорю делаю для себя а не для клиента и не сервера. Многопользовательский режим обдумывался пару раз, но пока бы однопользовательский закодить, потому что на каждое движение вылезает уже неплохое количество багов. Скорее всего буду получать время с сервера windows например.
#26 by Neg
А если нет доступа в нет, игрушка уже не катит?
#27 by Rizhij_Nikitos
Катит, просто тогда ты можешь блин поменять серверное время(время твоей машины), пока игрушка закрыта, потом зайти и тебе набежит куча ресов. Не хочу чтоб так было, но пока полностью удовлетворяющего решения не нашел.
#28 by Neg
А просто при завершении игры фиксировать время пользователя, а при открытии сравнивать с текущим и если было изменено тогда ну т.д.
#29 by Rizhij_Nikitos
Время пользователя и есть твое время. Ты пользователь.
#30 by smaharbA
reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v realtimeisuniversal /t reg_dword /d 1 и спокойно выставляем разное время/дату в бивесе и виндузе
#31 by Адинэснег
пиши полноценный сервер!или не взлетит
#32 by Копер
время неподвластно
#33 by Torquader
Время можно в BIOS прописать через порты какое хочешь - это понятно. Только читать его оттуда тоже через порты придётся. P.S. в данном же случае пользователь время в BIOS поменяет - и это ему запретить нельзя, в отличие от изменения системного времени (пароль на BIOS снимается перемычкой, а материнские платы c DALLAS уже не выпускаются).
#34 by smaharbA
Вы это счас о чем ?
#35 by smaharbA
время биоса можно получить даже из адинес без асма (но не через порты, через них виндуз обманет)
#36 by Torquader
А что система считывает 18 раз в секунду ?
#37 by kitt
время БИОСА? из 1с? Гондурас всё еще не потушили? )
#38 by Rizhij_Nikitos
Это процедура обслуживания таймера. Она используется для считывания и изменения внутреннего счетчика таймера. Хотя эту процедуру и называют процедурой текущих даты/времени, на самом деле это всего лишь счетчик прерываний таймера. Счетчик увеличивается на единицу при каждом прерывании, которое происходит примерно 18-21 раз в секунду. Вычисление и обновление времени дня и даты - это операция ДОС, которая использует результаты счетчика. Имеется две процедуры обслуживания таймера, вызывающиеся по прерыванию 26, шестнадцатиричное значение 1А, одна, с кодом 0, для считывания показаний таймера, а вторая, с кодом 1, для их установки. Значение счетчика таймера хранится в виде пары двухбайтовых чисел, использующихся, фактически, как одно четырехбайтовое. Эта процедура вносит лишь одно добавление в примитивную процедуру подсчета часов. Когда это происходит, счетчик сбрасывается и факт запоминается. При очередном запросе на считывание значения счетчика передается сообщение о том, что таймер сбрасывался. Это позволяет ДОС следить за временем дня и сменой дат не вычисляя их постоянно. Когда ДОС необходимо установить время дня, используется описанная процедура для получения значения счетчика и по нему вычисляется время; если будет получено сообщение о сбросе таймера, то ДОС изменит также и дату. Таким образом, ДОС выполняет все эти вычисления только тогда,когда требуется указать время, что упрощает функции процедуры обслуживания прерываний от таймера, которая должна выполняться 18 раз в секунду. Если к ДОС будет хотя бы один запрос времени за день, то проверить это, оставив Ваш компьютер включенным на 24 часа. К концу Вашей проверки время дня будет по прежнему правильным, а дата ошибочной). Если Вы будете сами считывать или устанавливать показания таймера с помощью этих процедур системы BIOS, это может помешать правильному отсчету времени и даты в ДОС. ДОС устанавливает значение счетчика таймера таким образом, как будто он был запущен в полночь, после чего ДОС полностью полагается на значение признака сброса таймера. Любая установка или считывание показаний таймера Вашими программами естественно окажет влияние на отсчет времени в ДОС. Если Ваши программы будут только считывать показания таймера, это может привести к перехвату сообщения о сбросе таймера, что нарушит порядок отсчета даты в ДОС. Теперь мы рассмотрели все процедуры системы BIOS-ПЗУ. Вы могли обратить внимание на два упущения в составе этих процедур. В то время как все устройства, подключаемые стандартным образом, имеют поддерживающие их служебные процедуры,совершенно не поддерживается игровой адаптер. Это происходит потому, что такая поддержка просто не нужна. Я могу только предполагать почему это произошло; одна из возможных причин может заключаться в том, что форма "ИБМ" не сочла этот адаптер достаточно важной составной частью системы, которой требуется какая-либо поддержка на уровне системы BIOS. Возможно, также что игровой адаптер был доставлен к системе на достаточно поздней стадии ее разработки и его поддержка не могла быть включена в систему BIOS, размещенную в ПЗУ. Еще одна недостающая часть системы BIOS - это набор процедур для обслуживания встроенного динамика. Почему они не были включены в систему - это для меня загадка. В следующем разделе мы рассмотрим работу динамика и то, как извлекать из него звуки под управлением программы.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С