VOGONS


First post, by xtreger

User metadata
Rank Member
Rank
Member

I have a motherboard (GA-EX58-UD3R) whose two BIOS versions I've downloaded - FI and FK. The FI version has the energy star logo, while the FK version doesn't. So I wanted to ask - in this case is it possible to transfer the energy star logo from FI to FK? Has anyone done this before?

What I've already tried: I used cbrom to extract AwardBmp.bmp from the FI bios image, the file directly gets extracted as a valid BMP (NOT .epa) file. Directly trying to insert this bmp into the FK image gives an error (bmp not allowed), so I used EPACoder to convert bmp into epa, renamed the file to "AwardBmp.bmp" and then successfully inserted this into the FK bios image using cbrom.

Flashing this image gives no issue nor any checksum error, yet when I boot, the logo still can't be seen in the post screen. Is there any way to get the BIOS to recognize that this logo file exists and to display it?

Reply 2 of 3, by maxtherabbit

User metadata
Rank l33t
Rank
l33t

I vaguely remember there being two distinct different "epa" file formats which are not mutually compatible

Reply 3 of 3, by kmeaw

User metadata
Rank Member
Rank
Member

I have compared FI and FK versions and their main module is different in the subroutines that are used to locate the logos - FK doesn't load module 4002:0000, the code uses the fullscreen logo (4000:0000) if it is enabled in the settings ("Full Screen LOGO Show").

disassembly

This is EX58UD3R.FI:

; POST procedure dispatcher
000E3D98 B90100 mov cx,0x1 ; Start from POST code 01
000E3D9B 90 nop
000E3D9C BFA73D mov di,0x3da7 ; Follow the POST handler table at E000:3DA7
000E3D9F E80A46 call 0x83ac ; Run POST tests

Let's look at the code corresponding to the POST code 0x2D. First the FI version (hexdump -x -s 0x3da7 ex58ud3r.BIN|head):

0003da7    239e    23ec    2456    245b    246b    2485    2486    24c2 ; 1-8
0003db7 24e8 2560 256f 2577 2578 2579 25b9 25ba ; 9-10
0003dc7 25c9 2609 262b 262c 2634 2635 2636 2638 ; 11-18
0003dd7 264a 264b 264c 26dc 27a4 27ab 27ac 27ad ; 19-20
0003de7 27ae 27b4 27b5 27dd 28cd 28ed 2908 2942 ; 21-28
0003df7 2944 2a78 2a7d 2b3c 2b40 32db 32dc 32dd ; 29 2a 2b 2c 2d 2e 2f 30
000E2B40  68A119            push word 0x19a1 ; load language strings
000E2B43 E881AF call 0xdac7 ; far call into awardext
000E2B46 B80000 mov ax,0x0
000E2B49 8ED8 mov ds,ax
000E2B4B 813E72043412 cmp word [0x472],0x1234 ; ctrl-alt-del?
000E2B51 7452 jz 0x2ba5 ; yes, doing quick post
...
000E2BA5 68494A push word 0x4a49 ; call some stub in F-seg
000E2BA8 E821AF call 0xdacc
000E2BAB 68F42B push word 0x2bf4 ; init mono/color flag and cursor
000E2BAE E81BAF call 0xdacc
000E2BB1 B800F0 mov ax,0xf000
000E2BB4 8ED8 mov ds,ax
000E2BB6 E88B00 call 0x2c44 ; show logo
...
000E2C44 808EC30110 or byte [bp+0x1c3],0x10
000E2C49 F6461430 test byte [bp+0x14],0x30
000E2C4D 7401 jz 0x2c50
000E2C4F C3 ret
000E2C50 06 push es
000E2C51 1E push ds
000E2C52 60 pusha
000E2C53 B0FF mov al,0xff
000E2C55 E83D59 call 0x8595
000E2C58 9ABA070020 call 0x2000:0x7ba
000E2C5D 7302 jnc 0x2c61
000E2C5F EB0E jmp short 0x2c6f
...
000E2C6F C6862C0255 mov byte [bp+0x22c],0x55
000E2C74 E89200 call 0x2d09
000E2C77 720D jc 0x2c86
...
000E2C86 B81200 mov ax,0x12
000E2C89 CD10 int 0x10
000E2C8B 80BE2C0255 cmp byte [bp+0x22c],0x55
000E2C90 7407 jz 0x2c99
000E2C92 E84E01 call 0x2de3
000E2C95 0F825F00 jc near 0x2cf8
...
000E2DE3 C6862C0200 mov byte [bp+0x22c],0x0 ; reset epa state
000E2DE8 80A62D02FE and byte [bp+0x22d],0xfe
000E2DED BF0C00 mov di,0xc ; fetch block 4002:0000 (AwardBmp.bmp)
000E2DF0 E88158 call 0x8674 ; decompress
000E2DF3 7217 jc 0x2e0c ; decomp failed
000E2DF5 B80040 mov ax,0x4000 ; target segment
000E2DF8 8ED8 mov ds,ax
000E2DFA 66813E0000415742 cmp dword [0x0],0x4d425741
-4D ; check 'AWBM' magic

FK:

000E3BB4  B90100            mov cx,0x1 ; Start from POST code 01
000E3BB7 BFC23B mov di,0x3bc2 ; Follow the POST handler table at E000:3BC2
000E3BBA E8EF47 call 0x83ac ; Run POST tests

hexdump -x -s 0x3bc2 test.BIN|head

0003bc2    21da    2228    2292    2297    22a7    22c1    22c2    22fe
0003bd2 2324 239a 23a9 23b1 23b2 23b3 23f1 23f2
0003be2 2400 243e 2460 2461 2469 246a 246b 246c
0003bf2 247e 247f 2480 2510 25d6 25dd 25de 25df
0003c02 25e0 25e6 25e7 260f 26fe 271e 2738 2772
0003c12 2774 28a4 28a9 2966 2968 30cf 30d0 30d1 ; 29 2a 2b 2c 2d 2e 2f 30
000E2968  68B619            push word 0x19b6 ; lang
000E296B E819B3 call 0xdc87
000E296E B80000 mov ax,0x0
000E2971 8ED8 mov ds,ax
000E2973 813E72043412 cmp word [0x472],0x1234 ; ctrl-alt-del
000E2979 7450 jz 0x29cb
...
000E29CB 688947 push word 0x4789
000E29CE E8BBB2 call 0xdc8c
000E29D1 68342A push word 0x2a34
000E29D4 E8B5B2 call 0xdc8c
000E29D7 B800F0 mov ax,0xf000
000E29DA 8ED8 mov ds,ax
000E29DC E88D00 call 0x2a6c
...
000E2A6C 808EC30110 or byte [bp+0x1c3],0x10
000E2A71 F6461430 test byte [bp+0x14],0x30
000E2A75 7401 jz 0x2a78
000E2A77 C3 ret
000E2A78 06 push es
000E2A79 1E push ds
000E2A7A 60 pusha
000E2A7B B0FF mov al,0xff
000E2A7D E8465B call 0x85c6
000E2A80 9ABA070020 call 0x2000:0x7ba
000E2A85 7302 jnc 0x2a89
000E2A87 EB0E jmp short 0x2a97
...
000E2A97 C6862C0255 mov byte [bp+0x22c],0x55
000E2A9C E89000 call 0x2b2f
000E2A9F 720D jc 0x2aae
...
000E2B2F E8EFFF call 0x2b21 ; fullscreen logo is enabled in settings?
000E2B32 0F82C700 jc near 0x2bfd ; disabled, so fail fast
000E2B36 BF0400 mov di,0x4 ; fetch block 4000:0000 (ex58ud3r.bmp)
000E2B39 81CF0080 or di,0x8000
000E2B3D BE28F0 mov si,0xf028 ; target is at 2.5M (high memory)
000E2B40 E8625B call 0x86a5 ; decompress
000E2B43 0F82B600 jc near 0x2bfd ; decomp failed, no logo
...
000E2BFB F8 clc ; return success
000E2BFC C3 ret
000E2BFD C6862C0200 mov byte [bp+0x22c],0x0 ; reset epa state
000E2C02 80A62D02FE and byte [bp+0x22d],0xfe
000E2C07 F9 stc ; indicate failure
000E2C08 C3 ret