Advanced Power Management

Internal structure and you change requests/suggestions
  • Вот пример который выключает монитор на 5 сек

    include 'MACROS.INC'

    MEOS_APP_START
    CODE
    mov dx, 0x5308
    mov bx, 1
    mov cx, bx
    mov eax, 70
    int 0x40

    mov dx, 0x530E
    xor bx, bx
    mov cx, 0x0102
    mov eax, 70
    int 0x40

    mov dx, 0x530D
    mov bx, 1
    mov cx, bx
    mov eax, 70
    int 0x40

    mov dx, 0x530F
    mov bx, 1
    mov cx, bx
    mov eax, 70
    int 0x40

    mov dx, 0x5307
    mov cx, 0x3
    mov bx, 0x1ff
    mov eax, 70
    int 0x40

    mov eax, 5
    mov ebx, 500
    int 0x40

    mov dx, 0x5307
    mov cx, 0x0
    mov bx, 0x1ff
    mov eax, 70
    int 0x40

    mov eax, -1 ; close this program
    int 0x40
    ;---------------------------------------------------------------------
    DATA
    UDATA
    MEOS_APP_END

    Владельцы ноутбуков могут написать программу показываюшую заряд аккумуляторов, и bспользуюшую CPU IDLE
  • Ghost
    Хорошая работа! Замечательно.
    Но функция 70 уже забита для новых функций работы с файловой системой (на SVN уже имеется код), так что придется размещать как 71 или подфункцию 18 функции.
  • Ghost
    Я проверил код. Все работает как часы. Молодец!
  • На старом компе Cyrix233MX пример выключающий экран повесил систему намертво, экран не погас. Видимо версия APM старая.
  • Ну зачем сразу 71? Есть же несколько зарезервированных функций: 36,49,54,65.
    А идея хорошая, поддерживаю.
    Ушёл к умным, знающим и культурным людям.
  • Тогда определяйтесь в какую все таки функцию включить данный код, да надо выложить на SVN, я считаю. Код проверил (переделал для 71-й функции) : действительно работает как часы :).
  • diamond
    Хорошо будем вешать на 49 функцию, на нее вроде вообще никто не покушался.
  • Ghost
    Добавил функцию в ядро на SVN. Порядковый номер 49.
  • Ok, на счёт старой тачки я не знаю, на VMWare интересный глюк : 32х битный интерфейс коннектица, а после вызова говорит что не присоединён, и ничего не делает. Отлично работает на MS VirtualPC
  • При вызове системных функций образ eflags располагается не по [esp+40] (там, кстати говоря, es), а по [esp+56]. На svn-сервере исправление уже залито.
    Кстати, а не надо никаких изменений в shutdown.inc, который выключает комп через 16-битный интерфейс APM реального режима?
    Ушёл к умным, знающим и культурным людям.
  • Ghost
    В общем, после добавления твоего кода перестал работать APM Power OFF. Видимо при обратном переходе в реальный режим процессора, надо восстанавливать исходное состояние или делать принудительный сброс.
    После доработки сделанной Diamond'ом (описано выше) на старом компе (Cyrix233MX) демо программа, выключающая монитор перестала намертво вещать систему. Теперь она просто висит в панели 5 секунд и убирается.
  • при переходе в RM нужно откключить 32х битный интерфейс, и присоединить 16, (хотя там помойму примерно так и делается, нет кода под рукой)
    про eflags я думал что они лежат в такомже порядке как в TSS, может общитался?
    у меня с демо порграммо монитор показывает чёрный экран, но не выключается и не переходит в ждуший режим
  • Ghost
    Если можешь, то исправь, пожалуйста, код.
    Выключение монитора целиком зависит от него самого. Если у тебя он не выключается, значит, он не просекает, что сигнал с видеокарты отключен. У меня все нормально и монитор гаснет сразу, а потом включается. Это я про новый комп, а не про старый.
  • Добавил три строчки выключения интерфейса в shutdown.inc. Теперь выключение вроде работает.
    Ушёл к умным, знающим и культурным людям.
  • Who is online

    Users browsing this forum: No registered users and 3 guests