[comp.sys.ibm.pc] ROM BIOS

wjr@rayssd.RAY.COM (Bill) (05/26/87)

	Is there a way to read your ROM BIOS without removing the device(s)
from the motherboard? Any information would be helpful!

Thanks

Bill Ramey

johnl@ima.UUCP (John R. Levine) (05/27/87)

In article <1040@rayssd.RAY.COM> wjr@rayssd.RAY.COM (Bill) writes:
>	Is there a way to read your ROM BIOS without removing the device(s)
>from the motherboard? Any information would be helpful!

The ROM BIOS is a ROM, not surprisingly.  It's in the PC's address space
at addresses starting at F000:0.  Look at it with debug.

For the IBM PC, XT, and AT, the Technical Reference manuals all include
assembler listings of the BIOS.
-- 
John R. Levine, Javelin Software Corp., Cambridge MA +1 617 494 1400
{ ihnp4 | decvax | cbosgd | harvard | yale }!ima!johnl, Levine@YALE.something
U.S. out of New Mexico!

davidsen@steinmetz.UUCP (05/27/87)

In article <1040@rayssd.RAY.COM> wjr@rayssd.RAY.COM (Bill) writes:
>
>	Is there a way to read your ROM BIOS without removing the device(s)
>from the motherboard? Any information would be helpful!

Hint: it's at page F000 in the system memory...

DEBUG
RBX
BX 0000
:0001
N ROMFILE.DAT
W F000:0
Q

The above sequence will write it into a file called ROMFILE.DAT
for later perusal.

-- 
bill davidsen			sixhub \	ARPA: wedu@ge-crd.arpa
      ihnp4!seismo!rochester!steinmetz ->  crdos1!davidsen
				chinet /
"Stupidity, like virtue, is its own reward"

neighorn@qiclab.UUCP (05/29/87)

In article <1040@rayssd.RAY.COM> wjr@rayssd.RAY.COM (Bill) writes:
>	Is there a way to read your ROM BIOS without removing the device(s)
>from the motherboard? Any information would be helpful!
>
>Bill Ramey

You can either write a short program to dump the area of memory your ROM
BIOS is mapped to, or you can buy an EPROM burner that comes with software
for reading and writing EPROM's. The former is the easier and cheaper of
the two methods. If you would like, I would be happy to send you some
source code for dumping PC/XT or PC/AT ROM BIOS's to disk. The programs
are really quite simple, ie easy to fancy up and make them do *exactly*
what you want.
-- 
Steven C. Neighorn                tektronix!{psu-cs,reed}!qiclab!neighorn
Portland Public Schools      "Where we train young Star Fighters to defend the
(503) 249-2000 ext 337           frontier against Xur and the Ko-dan Armada"

ger@qtecmuc.UUCP (06/05/87)

	>>
	>>	Is there a way to read your ROM BIOS without removing the device(s)
	>>from the motherboard? Any information would be helpful!
	>
	>Hint: it's at page F000 in the system memory...

On my AT clone, this seems not to be true.
The contents of F000:0 look completely different than the contents
of the two ROMS. I can find something at F800:0, but theres nothing
at F000:0.
If someone could shed some ore light on this subject ....

gerard@tscs.UUCP (06/06/87)

In article <1040@rayssd.RAY.COM> wjr@rayssd.RAY.COM (Bill) writes:
>
>	Is there a way to read your ROM BIOS without removing the device(s)
>from the motherboard? Any information would be helpful!

The best way to do this is in "debug".  Things that you type are underlined.

	1.) Go into debug
		C>DEBUG
		  -----
	
	2.) Set the name of the file you wish to output your BIOS to
		-N MYBOIS.DAT	(tells debug to use filename MYBIOS.DAT)
		 ------------

	3.) Find your BIOS.  You will need to know the address and size
	    of your BIOS or whatever you want to copy.  The following
	    are usually correct:

	    Machine		Start-Address		Size
	    IBM AT		F000:0000		10000  (64K)
	    AT Clone		F000:8000		08000  (32K)

	    Hints:

	    The location F000:FFF0 should contain a JMP instruction that
	    is used at power up to perform system initialization.

	    On XT type machines, winchester disk BIOS is located on the
	    disk controller card, location C800:0000.  On AT's this is
	    included in the BIOS in segment F000.

	4.) Tell debug how big your BIOS is.  The CX register contains
	    the least significant 16 bits of the size you wish to write,
	    and the BX register contains the most significant 16 bits.
	    Number of bytes to write		BX	CX
	    32768 (8000 hex)			0000	8000
	    65536 (10000 hex)			0001	0000

	    For example, let's assume you have an AT clone with 32K BIOS.
		-RCX
		 ---
		CX nnnn		(nnnn is present value of CX)
		:8000		(set CX to 8000 hex)
		 ----
		-RDX
		 ---
		DX nnnn		(nnnn is present value of DX)
		:0		(set DX to 0)
		 -
	
	5.) Tell debug to write your memory to a disk file (binary).
		-W F000:8000			(AT clone)
		 -----------
		Writing 8000 bytes		(hex number of bytes written)
		
	     The above example will be correct for most AT clones, if
	     a genuine IBM AT with BASIC, use F000:0 instead of F000:8000.
	
	6.) Exit debug.
		-Q		(Quit)
		 -
		C>

You should now have a file called "MYBIOS.DAT" in the current directory
of the default drive that contains your BIOS.  The size of this file
should agree with the number of bytes written out by debug.

Steve

------------------------------------------------------------------------------
Stephen Gerard  -  Total Support Computer Systems  -  Tampa  -  (813) 876-5990
UUCP: ...{akgua, novavax}!usfvax2!tscs!gerard
US-MAIL: Post Office Box 15395 - Tampa, Florida  33684-5395