Recommended by Wim's BIOS... BIOS Agent scan: Upgrade your BIOS! Driver Agent scan: Instant Access to 116,215 Device Drivers Updates!

Save VGABIOS

Discusses BIOS flashers and utilities from Award, AMI and Uniflash

Save VGABIOS

Recommended by Wim's BIOS... BIOS Agent scan: Upgrade your BIOS! Driver Agent scan: Instant Access to 116,215 Device Drivers Updates!
 

Save VGABIOS

Postby Borg Number One » Mon Nov 15, 2004 9:17 pm

@AJChips

Your Tool which should save the VGA-BIOS does not really produce an 1:1 Image of the VGA-BIOS/ does not really saves a 32kb rom image!!!!
http://www.wimsbios.com/ajzchips/index.php
Code: Select all
VGA Savebios.zip       zip     353  B     05-04-04     Saves a 32KB ROM image of your VGA BIOS


I have tried different PCI/ISA cards to gether with your tool.
Furthermore I putted all the EEPROMS from that mentioned graphic cards to my EEPROM-programmer and created images.

After this I compared them with the images produced by your tool.
Allways there are differences in some/or some more bytes.

Your tool simply dumps the memory area C0000-C7FFF.
The content of this memory area was copied from the VGA-BIOS to to the ram by the System Bios.
The content is allready modified (by the System-BIOS) and it is not the completely the same like data inside the EEPROM.

Furthermore you cannot dump VGA-BIOSes which are larger than 32K.
Nearly all graphic cards have more than 32K space in their EEPROMS.

Only the suitable VGA-BIOS/EEPROM-flasher utilities or an additional flash-device are/is able to dump the VGABIOS 1:1.

PS:
Here are the sources... if you lost them. :)

Code: Select all
seg000      segment   byte public 'CODE'
      assume cs:seg000
      org 100h
      assume es:nothing, ss:seg000, ds:seg000

      public start
start      proc near
      mov   dx, 145h
      mov   ah, 9
      int   21h      ; DOS -   PRINT STRING
               ; DS:DX   -> string terminated by   "$"
      mov   ah, 3Ch
      xor   cx, cx
      mov   dx, 1C3h
      int   21h      ; DOS -   2+ - CREATE A FILE WITH   HANDLE (CREAT)
               ; CX = attributes for file
               ; DS:DX   -> ASCIZ filename (may include drive and path)
      jb   loc_13C
      mov   bx, ax
      mov   ds:1EBh, ax
      mov   cx, 8000h
      mov   ax, 0C000h
      mov   ds, ax
      assume ds:nothing
      xor   dx, dx
      mov   ah, 40h
      int   21h      ; DOS -   2+ - WRITE TO FILE WITH   HANDLE
               ; BX = file handle, CX = number   of bytes to write, DS:DX -> buffer
      mov   bx, cs
      mov   ds, bx
      assume ds:seg000
      jb   loc_13C
      cmp   ax, 8000h
      jnz   loc_13C

loc_130:            ; CODE XREF: start+43j
      mov   bx, ds:1EBh
      mov   ah, 3Eh
      int   21h      ; DOS -   2+ - CLOSE A FILE WITH HANDLE
               ; BX = file handle
      mov   ah, 4Ch
      int   21h      ; DOS -   2+ - QUIT WITH EXIT CODE (EXIT)
               ; AL = exit code

loc_13C:            ; CODE XREF: start+10j   start+29j ...
      mov   ah, 9
      mov   dx, 1CFh
      int   21h      ; DOS -   PRINT STRING
               ; DS:DX   -> string terminated by   "$"
      jmp   short loc_130
start      endp

      db  0Dh   ; 
      db  0Ah   ; 
      db  56h   ; V
      db  69h   ; i
      db  64h   ; d
      db  65h   ; e
      db  6Fh   ; o
      db  20h   ; 
      db  42h   ; B
      db  49h   ; I
      db  4Fh   ; O
      db  53h   ; S
      db  20h   ; 
      db  53h   ; S
      db  61h   ; a
      db  76h   ; v
      db  65h   ; e
      db  72h   ; r
      db  20h   ; 
      db  76h   ; v
      db  65h   ; e
      db  72h   ; r
      db  2Eh   ; .
      db  20h   ; 
      db  31h   ; 1
      db  2Eh   ; .
      db  30h   ; 0
      db  0Dh   ; 
      db  0Ah   ; 
      db  28h   ; (
      db  43h   ; C
      db  29h   ; )
      db  20h   ; 
      db  43h   ; C
      db  6Fh   ; o
      db  70h   ; p
      db  79h   ; y
      db  72h   ; r
      db  69h   ; i
      db  67h   ; g
      db  68h   ; h
      db  74h   ; t
      db  20h   ; 
      db  62h   ; b
      db  79h   ; y
      db  20h   ; 
      db  47h   ; G
      db  61h   ; a
      db  72h   ; r
      db  61h   ; a
      db  76h   ; v
      db  73h   ; s
      db  6Bh   ; k
      db  79h   ; y
      db  20h   ; 
      db  41h   ; A
      db  6Eh   ; n
      db  64h   ; d
      db  72h   ; r
      db  65h   ; e
      db  77h   ; w
      db  2Ch   ; ,
      db  20h   ; 
      db  31h   ; 1
      db  39h   ; 9
      db  39h   ; 9
      db  37h   ; 7
      db  2Eh   ; .
      db  0Dh   ; 
      db  0Ah   ; 
      db  53h   ; S
      db  6Dh   ; m
      db  65h   ; e
      db  6Ch   ; l
      db  6Ch   ; l
      db  20h   ; 
      db  6Fh   ; o
      db  66h   ; f
      db  20h   ; 
      db  53h   ; S
      db  6Fh   ; o
      db  75h   ; u
      db  74h   ; t
      db  68h   ; h
      db  20h   ; 
      db  53h   ; S
      db  6Fh   ; o
      db  66h   ; f
      db  74h   ; t
      db  77h   ; w
      db  61h   ; a
      db  72h   ; r
      db  65h   ; e
      db  2Ch   ; ,
      db  20h   ; 
      db  4Fh   ; O
      db  64h   ; d
      db  65h   ; e
      db  73h   ; s
      db  73h   ; s
      db  61h   ; a
      db  0Dh   ; 
      db  0Ah   ; 
      db  32h   ; 2
      db  3Ah   ; :
      db  34h   ; 4
      db  36h   ; 6
      db  37h   ; 7
      db  2Fh   ; /
      db  32h   ; 2
      db  39h   ; 9
      db  2Eh   ; .
      db  34h   ; 4
      db  20h   ; 
      db  40h   ; @
      db  20h   ; 
      db  46h   ; F
      db  69h   ; i
      db  64h   ; d
      db  6Fh   ; o
      db  4Eh   ; N
      db  65h   ; e
      db  74h   ; t
      db  0Dh   ; 
      db  0Ah   ; 
      db  24h   ; $
      db  76h   ; v
      db  69h   ; i
      db  64h   ; d
      db  62h   ; b
      db  69h   ; i
      db  6Fh   ; o
      db  73h   ; s
      db  2Eh   ; .
      db  62h   ; b
      db  69h   ; i
      db  6Eh   ; n
      db    0   ; 
      db  0Dh   ; 
      db  0Ah   ; 
      db  21h   ; !
      db  21h   ; !
      db  21h   ; !
      db  20h   ; 
      db  45h   ; E
      db  52h   ; R
      db  52h   ; R
      db  4Fh   ; O
      db  52h   ; R
      db  20h   ; 
      db  49h   ; I
      db  4Eh   ; N
      db  20h   ; 
      db  53h   ; S
      db  41h   ; A
      db  56h   ; V
      db  49h   ; I
      db  4Eh   ; N
      db  47h   ; G
      db  20h   ; 
      db  21h   ; !
      db  21h   ; !
      db  21h   ; !
      db  0Dh   ; 
      db  0Ah   ; 
      db  24h   ; $
seg000      ends


      end start

or:
Code: Select all
data_4e      equ   1EBh         ;*(9C7B:01EB=0)

seg_a      segment   byte public
      assume   cs:seg_a, ds:seg_a

      org   100h
savebios   proc   far

start:
        mov   dx,offset data_1   ; (9C7B:0145='')
      mov   ah,9
      int   21h         ; DOS Services  ah=function 09h
                     ;  display char string at ds:dx
      mov   ah,3Ch         ; '<'
      xor   cx,cx         ; Zero register
      mov   dx,offset data_2   ; (9C7B:01C3='vidbios.bin')
      int   21h         ; DOS Services  ah=function 3Ch
                     ;  create/truncate file @ ds:dx
      jc   loc_2         ; Jump if carry Set
      mov   bx,ax
      mov   ds:data_4e,ax      ; (9C7B:01EB=0)
      mov   cx,8000h
      mov   ax,0C000h
      mov   ds,ax
      xor   dx,dx         ; Zero register
      mov   ah,40h
      int   21h         ; DOS Services  ah=function 40h
                     ;  write file  bx=file handle
                     ;   cx=bytes from ds:dx buffer
      mov   bx,cs
      mov   ds,bx
      jc   loc_2         ; Jump if carry Set
      cmp   ax,8000h
      jne   loc_2         ; Jump if not equal
loc_1:
      mov   bx,ds:data_4e      ; (9C7B:01EB=0)
      mov   ah,3Eh
      int   21h         ; DOS Services  ah=function 3Eh
                     ;  close file, bx=file handle
      mov   ah,4Ch
      int   21h         ; DOS Services  ah=function 4Ch
                     ;  terminate with al=return code
loc_2:
      mov   ah,9
      mov   dx,offset data_3   ; (9C7B:01CF='')
      int   21h         ; DOS Services  ah=function 09h
                     ;  display char string at ds:dx
      jmp   short loc_1      ; (0130)
data_1      db   0Dh, 0Ah, 'Video BIOS Saver ver. '
      db   '1.0', 0Dh, 0Ah
copyright   db   '(C) Copyright by Garavsky Andrew'
      db   ', 1997.'
      db   0Dh, 0Ah, 'Smell of South Softwar'
      db   'e, Odessa', 0Dh, 0Ah, '2:467/29.'
      db   '4 @ FidoNet', 0Dh, 0Ah, '$'
data_2      db   'vidbios.bin', 0
data_3      db   0Dh, 0Ah, '!!! ERROR IN SAVING !!'
      db   '!', 0Dh, 0Ah, '$'

   savebios   endp

   seg_a      ends



         end   start
BIOS backup - Multi BIOS - prevent a BIOS update failure:
RD1 BIOS Savior
[url=http://www.ioss.com.tw]
http://www.ioss.com.tw[/url]
User avatar
Borg Number One
Master Flasher
 
Posts: 169
Joined: Sun May 02, 2004 7:47 pm

Postby ajzchips » Fri Jan 14, 2005 5:19 am

Forgot about this thread.... Now I use another utility which saves upto 64KB, and works 100% fine with ATI and Nvidia cards, among many others :)
User avatar
ajzchips
El cheapo dude
 
Posts: 3048
Joined: Sat Mar 23, 2002 12:41 pm
Location: Madrid, Spain


Return to BIOS Utilities & Flash Programs

 


  • Related topics
    Replies
    Views
    Last post

Who is online

Users browsing this forum: No registered users and 0 guests