flat assembler
Message board for the users of flat assembler.

Index > Main > Option ROM loaded but no boot device added

Goto page Previous  1, 2
Author
Thread Post new topic Reply to topic
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 23 Aug 2010, 19:08
USB key yes.
Writing image? How?
I can write sectors using winhex or dd under linux or something else?
Post 23 Aug 2010, 19:08
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 23 Aug 2010, 19:11
OK winhex is good....
ok now i'm tired, tomorrow i write a little code to boot from usb key,
so we can do some test .... Wink
see you

_________________
Nil Volentibus Arduum Razz
Post 23 Aug 2010, 19:11
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 23 Aug 2010, 19:15
OK
Have a nice evening.
And thanks again.
Post 23 Aug 2010, 19:15
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 24 Aug 2010, 06:31
OK let's start with a simply test to check number of Hard Disk
in Bios data area before Call to bcv and after call to bcv..
Code:
OFFSET    EQU 



;=============================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================

ORG 7C00H


     JMP     @Skip_BPB
   NOP

;======================
; Bios Parameter Block
; Floppy
;======================

OEM                  DB "Test BCV"
Bytes_per_sector     DW 512          
Sectors_per_cluster DB 1            
Reserved_sectors    DW 1            
Number_of_FATs              DB 2            
Root_entries                DW 224          
Total_sector_count  DW 2880                 ; 80*2*18               
Media_descriptor    DB 0F0H                 ; Floppy
Sectors_per_FAT             DW 9
Sectors_per_track       DW 18
Heads                  DW 2
Hidden_sectors          DD 0
Total_sector_FAT32      DD 0                    ; Total sector count for FAT32 (0 for FAT12 and FAT16)
BIOS_drive            DB 0
Unused                  DB 0
Boot_signature          DB 29H                  ; Extended boot signature ,IF 29H next 3 fields are present     
Volume_ID           DD 0
Volume_label            DB "        "
File_system_type     DB "FAT12   "



@Skip_BPB:

;---------------
; Set Up Stack
;---------------

     CLI
 XOR     AX,AX
       MOV     SS,AX
       MOV     DS,AX
       MOV     AX,7C00H
    MOV     SP,AX
       STI

;-----------------
; Set Video Mode
;-----------------

 MOV     AX,0003H
    INT     10H

;--------------------------
; Print Message 'Test BCV'
;--------------------------

   MOV     SI, OFFSET Hello_Mess
       CALL    Bios_TTY

;-------------------------------------
; PRINT Number of hard disk drives
;-------------------------------------

  MOV     DI,OFFSET HD_Ascii
  XOR     AX,AX
       MOV     AL,[475H]
   ADD     AL,30H
      MOV     [DI],AL
     MOV     SI,OFFSET HD
        CALL    Bios_TTY

;--------
; BCV
;--------

 MOV     AX,0F000H
   MOV     ES,AX
       MOV     DI,0E2D0H
   MOV     BX,-1
       MOV     DX,-1
       MOV     AX,4
        CALL    0CE00H:3391H
 
;-----------------------------------------
; PRINT Number of hard disk drives update
;-----------------------------------------

  MOV     DI,OFFSET HD_Ascii_2
        XOR     AX,AX
       MOV     AL,[475H]
   ADD     AL,30H
      MOV     [DI],AL
     MOV     SI,OFFSET HD_2
      CALL    Bios_TTY

;===============
; Reboot System
;===============

Reboot:
  MOV     SI,OFFSET RebootMess
        CALL    Bios_TTY

        XOR     AX,AX
       INT     16H

     MOV     AX,40H
      MOV     ES,AX
       MOV     AX,1234H                ; Warm Boot
 MOV     [ES:72H],AX
     JMP     0F000H:0FFF0H               ; Reboot Smile

;=============================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PROC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================


Bios_TTY:

 LODSB
       TEST    AL,AL
       JZ      @Bios_TTY_Exit
@@:
   MOV     BX,0007H                ; BH = Page Number  BL = Color
      MOV     AH,0EH                  ; Teletype output
   INT     10H                     ; Bios Video

    LODSB
       TEST    AL,AL
       JNZ     @B

@Bios_TTY_Exit:

   RET

;=============================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================

Hello_Mess DB "Test BCV",13,10,0
HD           DB "Number of HD before BCV: "
HD_Ascii        DB " ",13,10,0
HD_2                DB "Number of HD after BCV: "
HD_Ascii_2       DB " ",13,10,0
RebootMess  DB "Press any key to reboot system...",0
Padding           RB 510-($-$$)
Boot           DW 0AA55H 
    


Assembly this code with fasm in this way
Fasm BCV.asm
this code make a file of 512 byte called BCV.bin
copy with winhex in the first sector of your usb key and boot your
pc with your usb plugged , of course select usb as first device to boot..
Note also that after the init code( OFFSET + 03) the Option ROM return in AX this:
Code:
8   1 = IPL Device supports INT 13h Block Device format
7        1 = Output Device supports INT 10h Character Output
6        1 = Input Device supports INT 9h Character Input
5:4     00 = No IPL device attached
 01 = Unknown whether or not an IPL device is attached
       10 = IPL device attached
         (RPL devices have a connection).
       11 = Reserved
3:2        00 = No Display device attached
     01 = Unknown whether or not a Display device is attached
    10 = Display device attached
        11 = Reserved
1:0        00 = No Input device attached
       01 = Unknown whether or not an Input device is attached
     10 = Input device attached
  11 = Reserved
    

the bits that interest us are:
Code:
bit 8        1 = IPL Device supports INT 13h Block Device format
bit 5:4     00 = No IPL device attached
       01 = Unknown whether or not an IPL device is attached
       10 = IPL device attached
                    (RPL devices have a connection).    

Finally BBS spec says:
'Option ROMs with a PnP Expansion Header will not be recognized if either one of the following is true:
The PnP option ROM returns zero in AX after the initialization call and it has no BEV.'

Note that your PnP header
has no BEV
Code:
PnP header

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

000CF260   00 00 00 00 00 00 00 00  00 00 00 00 24 50 6E 50   ............$PnP
000CF270   01 02 00 00 00 B5 95 10  32 31 06 00 EA 15 01 00   .....µ•.21..ê...
000CF280   00 44 91 33 00 00 00 00  00 00 00 00 24 50 6E 50   .D‘3........$PnP       ;000CF282 is BCV 3391h     

so I guess the problem is that the option ROM chip Sil3132
does not have a BEV (Boot strap Entry Point) then is not recognized by bios
We can do an additional test by a call offset + 03 Before to Call BCV
to check return status:
Code:

;------------
; INIT
;------------

    MOV     AX,0F000H
   MOV     ES,AX
       MOV     DI,0E2D0H

       MOV     AX,PFA                  ; PCI Bus/Device/Function 
  CALL    0CE00H:0003H
    TEST    AX,AX
       JZ      @Error
    

Note also that we can't bypass bios for this, because in the POST procedure
the BIOS update some structure in NVRAM,In short if the BIOS does not recognize the device as the IPL device (Initial Program Load) there is very little to do but try to update the bios or firmware of your card Sil3132 Firmware update
But we can try and see what we can do Wink

_________________
Nil Volentibus Arduum Razz
Post 24 Aug 2010, 06:31
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 24 Aug 2010, 15:15
Hello
I was out today until now.
In short time I'll make your suggestions about checking number of fixed disk in BDA .
I try to do similar things using my custom option ROM.
With that indeed number of fixed disk in BDA was increased after calling BCV.

Same card with same option ROM inside is bootable on Intel board D945GCL
So I think,after initialization option ROM return required values into AX.

An option ROM to be bootable must have BEV (used for network boot mostly) or BCV (used for pci card,scsi,raid etc)
BEV and BCV are exclusive one with each others.
If BCV exist BEV must be 0 if BEV exist BCV must be 0.

Another problem coul be that after option ROM initialization BIOS write protect that area of shadow RAM where options ROM is loaded.

Another thing that could be useful is that in case of BIOS detect disk resulted option ROM which is shadowed in RAM contain drive number,but in case of Dell that byte is 00

Example:
D945GCL only with one hdd attached to SATA card
Code:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   55 AA 24 E9 42 7A 53 49  4C 49 43 4F 4E 20 49 4D   Uª$éBzSILICON IM
00000010   41 47 45 00 00 00 1C 00  40 00 6C 12 53 49 4D 47   AGE.....@.l.SIMG
00000020   0E 00 2A 00 31 00 98 C7  BC C7 37 2E 37 2E 30 33   ..*.1.˜Ç¼Ç7.7.03
00000030   00 30 37 2D 30 31 2D 32  30 30 39 00 87 DB 87 DB   .07-01-2009.‡Û‡Û
00000040   50 43 49 52 95 10 32 31  00 00 18 00 00 00 04 01   PCIR•.21........
00000050   6C 00 01 00 00 80 00 00  00 01 01 02 00 00 80 00   l....€........€.
00000060   00 00 04 01 0A 00 01 00  01 00 00 00 00 20 00 00   ............. ..    


D945GCL with two HDD attached ,one to mainboard one to PCI card
Code:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   55 AA 24 E9 42 7A 53 49  4C 49 43 4F 4E 20 49 4D   Uª$éBzSILICON IM
00000010   41 47 45 00 00 00 1C 00  40 00 6C 12 53 49 4D 47   AGE.....@.l.SIMG
00000020   0E 00 2A 00 31 00 98 C7  BC C7 37 2E 37 2E 30 33   ..*.1.˜Ç¼Ç7.7.03
00000030   00 30 37 2D 30 31 2D 32  30 30 39 00 87 DB 87 DB   .07-01-2009.‡Û‡Û
00000040   50 43 49 52 95 10 32 31  00 00 18 00 00 00 04 01   PCIR•.21........
00000050   6C 00 01 00 00 80 00 00  00 01 01 02 00 00 81 00   l....€.........
00000060   00 00 04 01 0A 00 01 00  01 00 00 00 00 20 00 00   ............. ..    


Obviously boot order was changed.

But in case of Dell
Code:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   55 AA 24 E9 42 7A 53 49  4C 49 43 4F 4E 20 49 4D   Uª$éBzSILICON IM
00000010   41 47 45 00 00 00 1C 00  40 00 6C 12 53 49 4D 47   AGE.....@.l.SIMG
00000020   0E 00 2A 00 31 00 98 C7  BC C7 37 2E 37 2E 30 33   ..*.1.˜Ç¼Ç7.7.03
00000030   00 30 37 2D 30 31 2D 32  30 30 39 00 87 DB 87 DB   .07-01-2009.‡Û‡Û
00000040   50 43 49 52 95 10 32 31  00 00 18 00 00 00 04 01   PCIR•.21........
00000050   6C 00 01 00 00 80 00 00  00 00 01 02 00 00 00 00   l....€..........
00000060   00 00 04 04 0A 00 01 00  01 00 00 00 00 20 00 00   ............. ..    


I can observe that in case of BIOS detected disk at offset 5Eh from begining is BIOS disk number.But in case of Dell this byte is 00h

Later edit

I have just tested with your boot code.
Result is :
Code:
Test BCV
Number of HD before BCV: 1
Number of HD after BCV: 2
Press any key to reboot system ...    
Post 24 Aug 2010, 15:15
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 24 Aug 2010, 16:33
seems a problem of your motherboard BIOS, maybe you should update,
OK I hope that with the boot code that I put not freeze your pc...
Note that we are bypassing the bios in this way,At this point the only way that comes to mind and we can boot your SATA HD via int 13h and see what happens....
Your SATA HD is bootable ?
There is a operating sistem within ?
We can load the first sector of your SATA HD and Jump to it...

_________________
Nil Volentibus Arduum Razz
Post 24 Aug 2010, 16:33
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 24 Aug 2010, 16:46
BIOS is already latest versions and no hope from Dell to release a new one in the future.

Yes HDD is bootable.
Now is FAT32 ms-dos on it used for some testing between pc's.
Post 24 Aug 2010, 16:46
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 24 Aug 2010, 17:23
OK i wrote another boot code to try load your SATA HD,
Note that I suggested in section equ 81h driver number at the beginning of the code, test with 80h, 82h and let me know...
Code:
OFFSET               EQU 
Boot_Drive      EQU 81H


;-----------------
; Sector 1
;-----------------
ORG 7C00H


      JMP     @Skip_BPB
   NOP

;======================
; Bios Parameter Block
; Floppy
;======================

OEM                  DB "Test BCV"
Bytes_per_sector     DW 512          
Sectors_per_cluster DB 1            
Reserved_sectors    DW 1            
Number_of_FATs              DB 2            
Root_entries                DW 224          
Total_sector_count  DW 2880                 ; 80*2*18               
Media_descriptor    DB 0F0H                 ; Floppy
Sectors_per_FAT             DW 9
Sectors_per_track       DW 18
Heads                  DW 2
Hidden_sectors          DD 0
Total_sector_FAT32      DD 0                    ; Total sector count for FAT32 (0 for FAT12 and FAT16)
BIOS_drive            DB 0
Unused                  DB 0
Boot_signature          DB 29H                  ; Extended boot signature ,IF 29H next 3 fields are present     
Volume_ID           DD 0
Volume_label            DB "        "
File_system_type     DB "FAT12   "



@Skip_BPB:

;---------------
; Set Up Stack
;---------------

     CLI
 XOR     AX,AX
       MOV     SS,AX
       MOV     DS,AX
       MOV     AX,7C00H
    MOV     SP,AX
       STI

;-----------------
; Load Sectors 2
;-----------------
     

        LES     BX,[Sector_2]
       MOV     CX,2                    ; Start Load from Sector #2              
   MOV     AX,0201H                ; Read 1 Sector
     INT     13H                     ; BIOS Disk
 JC      @Disk_Error

;------------------
; Go to Sector 2
;------------------       
    
    JMP     0000H:7E00H         

@Disk_Error:

        MOV     SI,OFFSET DiskError

     LODSB
       TEST    AL,AL
       JZ      @Done
@@:
    MOV     BX,0007H                ; BH = Page Number  BL = Color
      MOV     AH,0EH                  ; Teletype output
   INT     10H                     ; Bios Video

    LODSB
       TEST    AL,AL
       JNZ     @B
@Done:
;===============
; Reboot System
;===============

     MOV     SI,OFFSET RebootMess

    LODSB
       TEST    AL,AL
       JZ      @Done_2
@@:
  MOV     BX,0007H                ; BH = Page Number  BL = Color
      MOV     AH,0EH                  ; Teletype output
   INT     10H                     ; Bios Video

    LODSB
       TEST    AL,AL
       JNZ     @B
@Done_2:

      XOR     AX,AX
       INT     16H

     MOV     AX,40H
      MOV     ES,AX
       MOV     AX,1234H                ; Warm Boot
 MOV     [ES:72H],AX
     JMP     0F000H:0FFF0H               ; Reboot Smile


;=============================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================

DiskError     DB "Disk Read Error",13,10,0
Sector_2      DD 0000H:7E00H
RebootMess        DB "Press any key to reboot system...",0

Padding               RB 510-($-$$)
Boot           DW 0AA55H 


;-----------------
; Sector 2
;-----------------
ORG 7E00H

;-----------------
; Set Video Mode
;-----------------

   MOV     AX,0003H
    INT     10H

;--------------------------
; Print Message 'Test BCV'
;--------------------------

   MOV     SI, OFFSET Hello_Mess
       CALL    Bios_TTY

;-------------------------------------
; PRINT Number of hard disk drives
;-------------------------------------

  MOV     DI,OFFSET HD_Ascii
  XOR     AX,AX
       MOV     AL,[475H]
   ADD     AL,30H
      MOV     [DI],AL
     MOV     SI,OFFSET HD
        CALL    Bios_TTY

;--------
; BCV
;--------

 MOV     AX,0F000H
   MOV     ES,AX
       MOV     DI,0E2D0H
   MOV     BX,-1
       MOV     DX,-1
       MOV     AX,4
        CALL    0CE00H:3391H
 
;-----------------------------------------
; PRINT Number of hard disk drives update
;-----------------------------------------

  MOV     DI,OFFSET HD_Ascii_2
        XOR     AX,AX
       MOV     AL,[475H]
   ADD     AL,30H
      MOV     [DI],AL
     MOV     SI,OFFSET HD_2
      CALL    Bios_TTY

;==============
; Load Sectors
;==============
        

        LES     BX,[Boot_Sector]
    MOV     CX,1                    ; Start Load from Sector #1     
    MOV     DL,Boot_Drive            
   MOV     AX,0201H                ; Read 1 Sector
     INT     13H                     ; BIOS Disk
 JC      @Disk_Error_2

;==============
;     RUN
;==============

    MOV     AX,0F000H
   MOV     ES,AX
       MOV     DI,0E2D0H
   MOV     DL,Boot_Drive                                   
    JMP     0000H:7C00H         ; Run Smile

@Disk_Error_2:

     MOV     SI,OFFSET DiskError_2
       CALL    Bios_TTY

;===============
; Reboot System
;===============

Reboot:
  MOV     SI,OFFSET RebootMess_2
      CALL    Bios_TTY

        XOR     AX,AX
       INT     16H

     MOV     AX,40H
      MOV     ES,AX
       MOV     AX,1234H                ; Warm Boot
 MOV     [ES:72H],AX
     JMP     0F000H:0FFF0H               ; Reboot Smile

;=============================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PROC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================


Bios_TTY:

 LODSB
       TEST    AL,AL
       JZ      @Bios_TTY_Exit
@@:
   MOV     BX,0007H                ; BH = Page Number  BL = Color
      MOV     AH,0EH                  ; Teletype output
   INT     10H                     ; Bios Video

    LODSB
       TEST    AL,AL
       JNZ     @B

@Bios_TTY_Exit:

   RET

;=============================================================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================

Hello_Mess DB "Test BCV",13,10,0
HD           DB "Number of HD before BCV: "
HD_Ascii        DB " ",13,10,0
HD_2                DB "Number of HD after BCV: "
HD_Ascii_2       DB " ",13,10,0
Boot_Sector DD 0000H:7C00H
DiskError_2       DB "Disk Read Error",13,10,0
RebootMess_2  DB "Press any key to reboot system...",0


    

Assembly always with fasm and put on your USB stick and boot..

_________________
Nil Volentibus Arduum Razz
Post 24 Aug 2010, 17:23
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 24 Aug 2010, 18:10
Tested with 81h 82h 80h 00h (00h I think is floppy but since option rom think or show 00 as drive number I just give a try)

Same message as before
Then
-with 81h 82h
Disk read error
Press any key to reboot system

-with 80h
Number of HD before BCV: 1
Number of HD before BCV: 2
Number of HD after BCV: 3
just stay here

-with 00h
Number of HD before BCV: 1
Number of HD before BCV: 2
.......
.......
Number of HD before BCV: 7
and so on
Post 24 Aug 2010, 18:10
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 24 Aug 2010, 18:40
I think we can do nothing is a problem with the bios of your motherboard,
the results are unique, somewhat bizarre in any case is a problem of the bios if you have any ideas let me know,the boot code was written too quickly strange that if you have an HD 80h the boot code has failed to boot from it.
tomorrow i will try to write with more info, anyway if the bios don't recognize the SATA HD the only thing to do is update

_________________
Nil Volentibus Arduum Razz
Post 24 Aug 2010, 18:40
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 24 Aug 2010, 18:58
OK thanks for help.
I'll try some BIOS modding or maybe coreboot in the future.

I think at moment of making call to BCV BIOS already write protect area of RAM where reside option ROM so he can't reconfigure or update some info.

Have a nice evening.
Bye.
Post 24 Aug 2010, 18:58
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 24 Aug 2010, 19:03
Quote:
I think at moment of making call to BCV BIOS already write protect area of RAM where reside option ROM so he can't reconfigure or update some info.
It is certainly possible, but very strange is not usual in any case you can do something but it's worth?

_________________
Nil Volentibus Arduum Razz
Post 24 Aug 2010, 19:03
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 24 Aug 2010, 19:10
For me worth .
Hope in the end I have success.
Post 24 Aug 2010, 19:10
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 06 Sep 2010, 23:36
I'm back with more data.
Trying to disassembly that Option ROM and I get this
Code:
seg000:7A48 ; ---------------------------------------------------------------------------
seg000:7A48
seg000:7A48 loc_CE7A48:                             ; CODE XREF: seg000:0003j
seg000:7A48                 push    ds
seg000:7A49                 pushf
seg000:7A4A                 push    bp
seg000:7A4B                 mov     cs:byte_CE0067, 1
seg000:7A51                 cmp     word ptr es:[di], 5024h
seg000:7A56                 jnz     short loc_CE7A70
seg000:7A58                 nop
seg000:7A59                 nop
seg000:7A5A                 cmp     word ptr es:[di+2], 506Eh
seg000:7A60                 jnz     short loc_CE7A70
seg000:7A62                 nop
seg000:7A63                 nop
seg000:7A64                 mov     cs:byte_CE0058, 1
seg000:7A6A                 mov     cs:byte_CE0068, 1
seg000:7A70
seg000:7A70 loc_CE7A70:                             ; CODE XREF: seg000:7A56j
seg000:7A70                                         ; seg000:7A60j
seg000:7A70                 call    sub_CE797D
seg000:7A73                 call    sub_CE78FC
seg000:7A76                 mov     ax, 0
seg000:7A79                 mov     ds, ax
seg000:7A7B                 call    sub_CEBE06
seg000:7A7E                 jb      loc_CE7B1B
seg000:7A82                 call    sub_CE9855
seg000:7A85                 call    sub_CEBCB5
seg000:7A88                 call    sub_CE4DFC
seg000:7A8B                 jb      loc_CE7B1B
..............................................................
seg000:7ACA                 mov     cs:byte_CE0058, 0
seg000:7AD0                 mov     al, cs:byte_CE0059
seg000:7AD4                 sub     al, cs:byte_CE005C
seg000:7AD9                 mov     cs:byte_CE0059, 0
seg000:7ADF                 sub     large ds:475h, al
seg000:7AE6                 cmp     al, 0
seg000:7AE8                 jz      short loc_CE7AF2
seg000:7AEA                 nop
seg000:7AEB                 nop
seg000:7AEC                 mov     cs:byte_CE005E, 0
seg000:7AF2
seg000:7AF2 loc_CE7AF2:                             ; CODE XREF: seg000:7AE8j
seg000:7AF2                 call    sub_CE35C7
seg000:7AF5                 mov     ax, 120h
seg000:7AF8                 xor     bp, bp
seg000:7AFA                 pop     bp
seg000:7AFB                 popf
seg000:7AFC                 pop     ds
seg000:7AFD                 retf
    


I see before exiting in AX is returned required info for BIOS INT13 device and IPL attached.

Also at begining is a check if BIOS pass $PnP install check in ES:DI (at ROM initialization)

Interesting part is sub_CE4DFC
Code:
seg000:4DFC sub_CE4DFC      proc near               ; CODE XREF: seg000:7A88p
seg000:4DFC                 mov     al, large ds:475h
seg000:4E02                 add     al, 80h ; 'Ç'
seg000:4E04                 mov     cs:byte_CE005E, al
seg000:4E08                 cmp     cs:byte_CE0066, 1
seg000:4E0E                 jz      short loc_CE4E18
seg000:4E10                 nop
seg000:4E11                 nop
seg000:4E12                 mov     si, 5368h
seg000:4E15                 call    sub_CE1FDB
.........................
    


From that I see Option ROM read BIOS detected disks number,increase with 80h and store value in offset 5Eh from start of OROM.
That is OK on Intel board since I get 80h or 81h depending of disks attached,but on Dell ... I get 00h when there must be 80h at least.

Earlier you told something about PFA but I can't get any relevant info about that on net. I have found a check in one function for MPFA on sub_CE797D ,if ES:[SI] is MPFA then something like a method to calculate AX and store in cs:[bp+0Ah] if MPFA not found then store AX in cs:[bp+8] but in second case (MPFA not found) that's first occurance of AX so what's in AX? maybe BIOS need to pass some info an AX at OROM initialization.Could be that?
PCI Local Bus Specification R2.0 published by the PCI SIG specifies AH=Bus number and AL=Device Function number as parameters for Option ROM initialization

Another questions is what is jb functions?
jump below ? if yes than depends of what?

Thanks for patience reading this.
Post 06 Sep 2010, 23:36
View user's profile Send private message Reply with quote
DJ Mauretto



Joined: 14 Mar 2007
Posts: 464
Location: Rome,Italy
DJ Mauretto 08 Sep 2010, 15:41
Hello Wink
With PFA you pass the PCI Bus/Device/function of your PCI Device in this way:
Code:
PFA - PCI Bus/Device/Function (PCI devices only) 
AX = bit 15:8 Bus Number
          7:3 Dev Number
          2:0 Fn  Number    

JB = Jump if Carry, usually after a Call to a function if there is a error return the carry flag set .

try updating the bios of your device only, instead of the bios of your motherboard, maybe the problem is resolved.

_________________
Nil Volentibus Arduum Razz
Post 08 Sep 2010, 15:41
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 08 Sep 2010, 18:06
Hello
I use latest bios from sil support site (also tried with all versions available on support site)

I'll try to pass in AX PFA but Sil bios configure and detect itself that location

On
Code:
seg000:7AEC                 mov     cs:byte_CE005E, 0     

I hex edited sil bios and make it nop so remain value from initialization and indeed there was 80h if single HDD connected and 81 if two HDD connected (one to onboard and one to sata card)
But still no positive result when calling BCV.
Post 08 Sep 2010, 18:06
View user's profile Send private message Reply with quote
gabiz_ro



Joined: 20 Feb 2010
Posts: 66
gabiz_ro 14 Sep 2010, 21:51
In the end after changing few DRAM controller chipset registers to enable read-write operation in shadow RAM area problem is almost resolved.

Still can't boot native from disks but I can get access to them
Now GRUB can see and access disk and simple remap disks and boot.

Thanks for help.
Post 14 Sep 2010, 21:51
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page Previous  1, 2

< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.