Получить байт диагностики на python/c++

Подскажите пожалуйста, как можно получить байт диагностики в python / c++? Есть код на плюсах с outp/inp, но их выпилили из функционала в 2015, а аналогов не нашёл.

P.S.: в cmos по адресу 0Eh располагается байт состояния диагностики.


Ответы (1 шт):

Автор решения: Resistance杀杀杀

Извиняюсь, что не отписался сразу (если вдруг кому надо было)

Для получения байта диагностики надо учитывать несколько "неадекваток":

  1. В новых линейках процессора, судя по всему, нет такого байта по такому адресу (0Eh)
  2. Под новыми линейками процессора я понимаю процессоры, которые вышли с, примерно, 2010 года

Если вдруг у вас проц <2010 года, то предлагаю вам склонировать PyPmx себе (https://github.com/15432/PyPmx) и работать через этот модуль. Пример кода вот тут, по названиям функций можно понять, что делает каждая

from PyPmx import PmxInterface

pmx = PmxInterface()

def readCmos(addr):
    pmx.IoWrite8(0x70, addr | (1 << 7))
    return pmx.IoRead8(0x71)

def printCmosTime():
    hours = readCmos(4)
    minutes = readCmos(2)
    seconds = readCmos(0)
    print ("time: %x:%x.%x" % (hours, minutes, seconds))

def printCmosDbg():
    print ("dbg: %x" % (readCmos(0xe)))
    
printCmosTime()
printCmosDbg()
→ Ссылка