Page 1 of 3

Выключение ПК.

Posted: Sat Sep 24, 2011 8:45 pm
by asmars
Всем привет!

Такой вопрос: как можно выключить комп.. из под своей ОС ?

в помощь дали этот код..

Code: Select all

MOV     AX,5300h
XOR     BX,BX
INT     15h
JB      Ext
MOV     AX,5301h
XOR     BX,BX
INT     15h
MOV     AX,5308h
MOV     BX,FFFFh
MOV     CX,0001h
INT     15h
MOV     AX,5307h
MOV     BX,0001h
MOV     CX,0003h
INT     15h
Ext:INT     20h
___________________
Помочь != решить за меня.

Re: Выключение ПК.

Posted: Sat Sep 24, 2011 9:07 pm
by Mario
Код для BIOS и будет работать только в реальном режиме процессора. В Колибри также есть подобный кусок, однако надеяться на 100% работу на всех компьютерах бесполезно.

Re: Выключение ПК.

Posted: Sat Sep 24, 2011 10:38 pm
by art_zh
kernel/trunk/boot/shutdown.inc

на многих платформах - не работает (новые биосы на APM забили, ждем ACPI).

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

Re: Выключение ПК.

Posted: Mon Sep 26, 2011 11:52 pm
by CleverMouse
art_zh, выражайся аккуратнее, например, как Mario - "есть подобный кусок". Он отнюдь не единственный и безальтернативный и даже не основной; основной вариант уже давно - выключение через ACPI, kernel/trunk/kernel.asm, неподалёку от system_shutdown.

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 12:45 am
by art_zh
CleverMouse
да, я про это чудо забыл - оно тоже нифига не работает на очень многих платформах.
Прямой шатдаун гораздо эффективнее.

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 12:58 am
by CleverMouse
art_zh, да, конечно, единственный правильный способ - это писать свой, единственный и неповторимый код для каждого чипсета, а универсальные способы хором "нифига не работают на очень многих платформах". Мы все верим.

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 1:07 am
by art_zh
Именно это я и имею в виду. Хотя и не претендую на "единственно правильный способ".
Чел спросил - я посоветовал как с моей точки зрения лучше.

Вот пример рестарта для ю.мостов AMD SB700/800/Hudson :

Code: Select all

pm_restart:	   
     mov	ax, 6
     mov	dx, 0xCF9	; reset reg
     out	dx, ax
Все остальное (универсальное и нерабочее) - в топку.

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 1:54 am
by Mario
Не ругайтесь! Самый надежный способ это выдернуть штепсель из розетки. Все остальные способы (даже выключатель питания) дюже ненадежные.

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 8:18 pm
by CleverMouse
Итак, налицо:
- подмена тезиса с выключения - которое появилось не так давно и не является стандартным - на перезагрузку, которую умели делать уже в очень далёкие времена;
- употребление без комментариев как "всем известное" нетривиального утверждения, на деле не подтверждаемого фактами - "нерабочее".
Товарищи, перед нами демагог. Может быть, помочь товарищу "уйти в науку" до зимы административными методами?

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 8:22 pm
by SoUrcerer
CleverMouse, чего ж так жестко-то? Это мужское эго, наверное. Если товарищ хочет уйти в науку, то мы ему поможем, а пока что причин на это не видимвижу. Это было моё альтер-эго с манией величия.

Re: Выключение ПК.

Posted: Tue Sep 27, 2011 11:20 pm
by Mario
CleverMouse wrote:Товарищи, перед нами демагог. Может быть, помочь товарищу "уйти в науку" до зимы административными методами?
Собственно чего так резко то? Артем вроде никого не оскорблял, а за демагогию тут можно много кого расстреливать - меня в частности тоже. Каждый имеет право на свою точку зрения, даже если она в конечном счете окажется ошибочной. Я тут не наблюдаю никакого криминала.

Re: Выключение ПК.

Posted: Wed Sep 28, 2011 1:59 am
by art_zh
Direct shutdown для некоторых SB800+ и Гудзонов (я еще не видел ни одной материнки с этими мостами, на которой бы работал "универсальный" код):

Code: Select all

	mov	dx, 0x0804	
	mov	ax, 0x3400
	out	dx, ax
; THE END...
Я против ACPIzации Колибри.
Это моя твердая позиция, к черту демагогию.

Re: Выключение ПК.

Posted: Wed Sep 28, 2011 11:46 am
by Serge
art_zh
А если надо кеши сбросить и винты запарковать ? У меня материнка отключается когда винт уже явно останавливается.

Re: Выключение ПК.

Posted: Fri Sep 30, 2011 3:03 pm
by CleverMouse
Последние две фразы art_zh инициировали бурную флудильню про необходимость ACPI вообще, которую я выделила в отдельную тему.

Ключевое слово - "некоторых". Я так понимаю, что подмена с выключения на рестарт была вызвана именно желанием представить свою позицию в более выгодном свете, чтобы избавиться от упоминания, что это работает только на одиночных чипсетах.

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

Re: Выключение ПК.

Posted: Fri Sep 30, 2011 9:54 pm
by Artyom
В общем я не помню где это было (заклаку потерял), но один челоек из форума (разработчик ядра, вроде) создавал свою тестовую версию
системы (не совсем KOS) для архитектуры IA-32 (x64) с ипользованием APIC и простым ACPI. Вопрос: А повторить или переписать готовый код
на Asm слабо?