Solved

Access BIOS data in Windows 95

Posted on 1998-07-16
12
184 Views
Last Modified: 2013-12-29
Do you know how to access the BIOS data, it will be real mode address 0xF000 to 0xFFFF, under Windows 95 using Visual Basic or Visual C++ or any Windows API
0
Comment
Question by:jliong
  • 5
  • 2
  • 2
  • +3
12 Comments
 
LVL 2

Expert Comment

by:ryans
ID: 1717797
I don't remember the EXACT systax, but shouldn't it be possible with using DEBUG from the prompt?
0
 
LVL 2

Expert Comment

by:ryans
ID: 1717798
Whoops sorry, nevermind that.  Minor GPF in the brain.
0
 
LVL 2

Expert Comment

by:richrussell
ID: 1717799
You can get the CMOS data block using ports 0x070 and 0x071. The following will read in the 64K data block from which you can get memory size, number of drives, ports, current date and time, etc..

for(n=0;n<64;n++){
 outp(0x070,n);
 printf("%H ",inp(0x071));
}

Basically you put the byte you want to get in port 70, and the BIOS returns it's value in port 71.

I used this method to write a Year 2000 compliancy testing program as it allows access to the hardware real time clock, so you can set it and compare it to the DOS one.

Check out the list of BIOS byte values for what each one is. You can download this from several places - eg as part of Ralph Brown's Interrupt list at:
http://www.cs.cmu.edu/afs/cs.cmu.edu/usr/ralf/pub/WWW/files.html
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:jliong
ID: 1717800
Accessing I/O port 70 and reading I/O port 71 is just reading the content of RTC (Real Time Clock), but not the BIOS.  The point of this question will be how to access the read mode memory address in the protected mode.

0
 
LVL 7

Expert Comment

by:busuka
ID: 1717801
Very simple: write real-mode application (DOS-based) and access
memory directly from it.
0
 
LVL 1

Expert Comment

by:saneesh100
ID: 1717802
Hai..
 U are accessing the real mode address fomr a protected mode OS right ?? so u have to convert the address to linear first i mean the segment:Offset into a linear address .Then u can use segment selector functions to access it properly ..

 I can give u more data if u can send me u'r emailID

 
0
 

Author Comment

by:jliong
ID: 1717803
Saneesh100:

My email is jliong@kcc.com (temporary), can you also cc to aau@fs1.gemlight.com.hk.

Thanks a lot.
0
 
LVL 1

Accepted Solution

by:
HenryChanE earned 500 total points
ID: 1717804
 If you really want to write a 32bit apps, using real mode is not possible, as Win32 had controlled the whole system. Instead, a VXD driver is necessary. To write VXD's, DDK(Device Driver Kit) is needed from MSDN.

  If you simply want to get a status from a specific port address, function inp() can be use under VC++.
0
 

Author Comment

by:jliong
ID: 1717805
Henry,

It seems that your propsed solution (VXD) is very reasonable. However, since I give 500 points for this question I need more assistance from you. I will do my part to get the DDK and mug around it, but can you give me some example source code which is similar to my requirement, i.e. access the real mode address 0xF000 to 0xFFFF from a VXD.

Thanks a lot.
0
 

Author Comment

by:jliong
ID: 1717806
Hi Henry,

Would you mind updating me whether you are still working on my problem or not? I wish to reopen to other experts if you are not interested of this question anymore by 28th Aug., 1998.

Kindest regards,

Jacky
0
 
LVL 1

Expert Comment

by:HenryChanE
ID: 1717807
Jacky,
  I've tried to write my own VXD, but I found lot's of questions about the DDK. I feel that write a VXD is quite complicated, so I've give it up !!!

  Sorry about that I cann't help on your question. I think you may reopen this question in VC++ topic, there will be more experts deal with these stuff.

  If you find the answer, pls. let me know at henrychan@poboxes.com

Regards,

Henry
0
 

Author Comment

by:jliong
ID: 1717808
Henry,

Thanks for your effort. I definitely will give you all the details once I can get a proper solution. I take your point I should  reopen the question in some other groups. What I will do is to give you 50 points (if the system allows) and then reopen it at, e.g. VC++ group. I will score you good instead of excellent because there is a large part of work unanswered.

Thanks and regards,

Jacky
0

Featured Post

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
BgInfo help 5 65
gawk solution to extract this ? 2 20
.NET - find out if application is running on Windows 2012 server 3 35
analyze malware in windows document 9 46
How to record audio from input sources to your PC – connected devices, connected preamp to record vinyl discs, streaming media, that play through your audio card: Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10 – both 32 bit & 64.
The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve t…
This video Micro Tutorial explains how to clone a hard drive using a commercial software product for Windows systems called Casper from Future Systems Solutions (FSS). Cloning makes an exact, complete copy of one hard disk drive (HDD) onto another d…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question