Page 1 of 2

80GB: 12/18/1999-i440LX-SMC67X-2A69JDC-00

Posted: Tue Mar 01, 2005 11:36 pm
by Selfdefence
I have an problem with my Gemlight P6LIAK V0 motherboard. The BIOS did not recognize my 80GB, Maxtor 4D080H4 harddisk. I have upgrade to the last BIOS from DTK for the DTK PRM-0076I E0. It now recognizes the harddisk but hangs on size calculation. If I limit the harddisk to 4092 cylinders it works fine.

Current BIOS:
http://www.dtk.com.tw/download/bios/76ie0b.html

BIOS Type: Award Modular BIOS v4.51PG
BIOS ID: 12/18/1999-i440LX-SMC67X-2A69JD19C
OEM Sign-On: (2A69JD19) DTKPRM0076I.P02.01.07-V1.07

Any ideas?

Thanks!

Posted: Wed Mar 02, 2005 3:12 pm
by NickS
Looking at it now....yes, 32GiB bug fixed but not 64GiB bug. Should be at the "untested" link in my signature shortly...

Posted: Wed Mar 02, 2005 4:45 pm
by Selfdefence
Thanks NickS,

I have tried the untested BIOS and it does not work. It will not get past the 'Systems Configurations' table. It usually hangs on size calculation with any attached harddrive. If it doesn't, it just crashes displaying random garbage after the size calculation part.

Posted: Wed Mar 02, 2005 5:03 pm
by NickS
OK, thanks for the feedback. Is it set in CMOS to autodetect? Rumours say that using User Defined parameters sometimes works in this situation, particularly with WD drives.

If it is set to autodetect but crashing or displaying garbage at the Configuration display screen, I assume that it is getting through the autodetect phase ok; does it also cause a system hang when you enter the CMOS configuration page to display drive parameters? I'm just wondering whether it is worth taking a look at the BIOS manually.

Would you like me to patch with apple_rom's "bp", or try that yourself (www.rom.by)?

Posted: Wed Mar 02, 2005 6:27 pm
by NickS
Would you like me to patch with apple_rom's "bp", or try that yourself (www.rom.by)?
Hmm, maybe not.

Code: Select all

(c)2002-2003 apple_rom, www.ROM.by
76I107.bin have not enough space for adding ROM. (Over 4EB2h bytes)

Posted: Wed Mar 02, 2005 7:41 pm
by Selfdefence
All drives are set to autodetect. I have tried user CHS settings too.

With the original BIOS, it detects my WD Caviar 26400R and can calculate and display its size (6448.6MB). It detects 80GB Maxtor, but can not display the size.

With the modded BIOS it can't diplay the size in 'Systems Configurations' table for both drives. It just hangs when its supposed to display it. But it can display the size of the WD in the 'Standard CMOS setup' BIOS page.

I can't get it to display random garbage anymore. (no more inverted M's and omegas and such). But sometimes it gets past the size part, then it lists all ports at adress 720 and 4 harddrives SMART messages.

If I look at http://www.ryston.cz/petr/bios/ga586t2_mod.html
it looks to me I can just skip the whole part and start with: 'X:05D4 ret', or am I missing something here?

I don't know much about ASM, but I'm going to try it anyway. :D

Code: Select all

;-------------------
;calculate HDD size
;-------------------
-- MACRO				F000_call	Get_HDD_CMOS_Info
X:05D4  0E				push	cs
X:05D5  68 05E0				push	ret_addr_1
X:05D8  68 7B4A				push	offset Get_HDD_CMOS_Info
X:05DB  EA E000ECC0			jmp	far ptr F000_call_proc
X:05E0			ret_addr_1
X:05E0  1E				push	ds
X:05E1  53				push	bx
X:05E2  75 1D				jnz	short Get_User_Type
X:05E4  0F B6 02			movzx	ax,byte ptr [bp+si]		;Hdd type no.
X:05E7  FE C8				dec	al
X:05E9  C1 E0 04			shl	ax,4
X:05EC  BB 56F2				mov	bx,offset HDISK_PARMS
X:05EF  03 D8				add	bx,ax
X:05F1  68 F000				push	0f000h
X:05F4  1F				pop	ds
X:05F5  0F B6 47 02			movzx	ax,byte ptr [bx+2]		;heads
X:05F9  0F B6 4F 0E			movzx	cx,byte ptr [bx+14]		;sectors
X:05FD  8B 1F				mov	bx,[bx]				;cylinders
X:05FF  EB 0A				jmp	short Disp_HDD_Size
X:0601			Get_User_Type:
X:0601  0F B6 43 02			movzx	ax,byte ptr [bp+di+2]		;heads
X:0605  0F B6 4B 07			movzx	cx,byte ptr [bp+di+7]		;sectors
X:0609  8B 1B				mov	bx,[bp+di+0]			;cylinders
X:060B			Disp_HDD_Size:
X:060B  C1 E1 02			shl	cx,2
X:060E  F7 E1				mul	cx
X:0610  F7 E3				mul	bx
X:0612  5B				pop	bx
X:0613  1F				pop	ds
X:0614  B9 1E84				mov	cx,15625/2
X:0617  F7 F1				div	cx				;Divide overflow here!!!
X:0619  89 86 009C			mov	HDDSIZE[bp],ax
-- MACRO				F000_call Disp_Word_Int5
X:061D  0E				push	cs
X:061F  68 0629				push	offset ret_addr_2
X:0621  68 43AA				push	offset Disp_Word_Int5
X:0624  EA E000ECC0			jmp	far ptr F000_call_proc
X:0629			ret_addr_2:
X:0629  BE 02EC				mov	si,offset MB_Str
X:062C			@@:
-- MACRO				post_func_call	Disp_Str_In_BIOS
X:062C  0E				push	cs
X:062D  68 0638				push	offset ret_addr_3
X:0630  68 6681				push	offset Disp_Str_In_BIOS
X:0633  EA F0004F32			jmp	far ptr Post_call_proc		; (F000:4F32)
X:0638			ret_addr_3:
X:0638  C3				ret

Posted: Thu Mar 03, 2005 12:33 am
by NickS
The first step is to identify the correct entry point in the AWARDEXT.ROM component of the BIOS, as it is not at 0x05D4 in your BIOS. I am not at my patching machine right now, so I can't tell you where it is. I assume you know how to use CBROM, or will do soon! Also, I find that the sequence shown as:

Code: Select all

X:05F5  0F B6 47 02			movzx	ax,byte ptr [bx+2]		;heads
X:05F9  0F B6 4F 0E			movzx	cx,byte ptr [bx+14]		;sectors
appears to be different in your BIOS, so it is not straightforward and this could be why Rainbow's utility has not worked.
I guess a RET might simply bypass the configuration display as you hope; good luck!

Posted: Thu Mar 03, 2005 11:43 am
by Ritchie
if the BIOS can be patched with an alternative patcher that would both detect and display a drive's size correctly, I would consider this preferable as long as other features and functionality are not compromised.

Failing that, I would set the drive type and mode (LBA, CHS, etc.) to AUTO for all ATA disks. Reason being that if they are a user setting and display the drive size incorrectly, this may confuse you each time you look in that section of the BIOS. But with the auto settings, they get detected every time you boot and you will probably get used to the idea that drives are being detected properly each time you boot even if they are not displaying correctly.

If AUTO for some reason can not be used, revert to USER. And if the auto-detect will not work but manual parameters will, I would consider that as a last resort.

Off-topic slightly, if anyone can explain, in a private message if need be (to avoid me hijacking the post) why Western Digital drives often do not display their size correctly while other makes usually will, this would be quite useful to be aware of.

Posted: Thu Mar 03, 2005 12:07 pm
by sulbert
...

Posted: Thu Mar 03, 2005 6:26 pm
by Rainbow
You MUST use CBROM 1.xx (not 2.xx) for Award 4.51 BIOSes.

Posted: Thu Mar 03, 2005 6:43 pm
by NickS
sulbert wrote:Looks like the CBROM has troubles with that BIOS.
CBROM 1.13 has no problem.

Code: Select all

CBROM v1.13a
Copyright (c) Award Software, Inc. 1995-1997 All Rights Reserved.


              ********   76i107.bin BIOS component ********

 No. Item-Name         Original-Size   Compressed-Size Original-File-Name
==========================================================================
  0. System BIOS       20000h(128.00K)13DB8h(79.43K)original.tmp
  1. CPU micro code    04000h(16.00K)022EFh(8.73K)CPUCODE.BIN
  2. ACPI table        024CAh(9.20K)00E51h(3.58K)ACPITBL.BIN
  3. EPA pattern       00642h(1.56K)002A1h(0.66K)AWARDEPA.BIN
  4. Other(4100:0000)  0432Dh(16.79K)02E64h(11.60K)awardext.rom

  Total compress code space  = 1A000h(104.00K)
  Total compressed code size = 19FFDh(104.00K)
  Remain compress code space = 00003h(0.00K)
The other thing that could be done perhaps is to remove unwanted CPUs from the CPUcode table to shrink its size.

Posted: Thu Mar 03, 2005 6:46 pm
by sulbert
...

Posted: Thu Mar 03, 2005 7:36 pm
by Selfdefence
I had to hotflash the chip in another bord to get the machine booting again.
Selfdefence wrote: it looks to me I can just skip the whole part and start with: 'X:05D4 ret'
Sweet, it works!

I used AwardMod and WinHex to do it.

Posted: Thu Mar 03, 2005 7:40 pm
by NickS
I'm still interested in what went wrong with Rainbow's patcher. My statement above about the code being different is wrong, I was looking in the wrong place. :oops: For this BIOS the configuration "display size" entry point apears to be at 0x0980 in the XGROUP code.

Posted: Thu Mar 03, 2005 7:57 pm
by Rainbow
Looks like I should remember how the code works (or should work) and debug it...