Annotation of qemu/roms/seabios/tools/buildrom.py, revision 1.1

1.1     ! root        1: #!/usr/bin/env python
        !             2: # Fill in checksum/size of an option rom, and pad it to proper length.
        !             3: #
        !             4: # Copyright (C) 2009  Kevin O'Connor <[email protected]>
        !             5: #
        !             6: # This file may be distributed under the terms of the GNU GPLv3 license.
        !             7: 
        !             8: import sys
        !             9: 
        !            10: def alignpos(pos, alignbytes):
        !            11:     mask = alignbytes - 1
        !            12:     return (pos + mask) & ~mask
        !            13: 
        !            14: def checksum(data):
        !            15:     ords = map(ord, data)
        !            16:     return sum(ords)
        !            17: 
        !            18: def main():
        !            19:     inname = sys.argv[1]
        !            20:     outname = sys.argv[2]
        !            21: 
        !            22:     # Read data in
        !            23:     f = open(inname, 'rb')
        !            24:     data = f.read()
        !            25:     count = len(data)
        !            26: 
        !            27:     # Pad to a 512 byte boundary
        !            28:     data += "\0" * (alignpos(count, 512) - count)
        !            29:     count = len(data)
        !            30: 
        !            31:     # Fill in size field; clear checksum field
        !            32:     data = data[:2] + chr(count/512) + data[3:6] + "\0" + data[7:]
        !            33: 
        !            34:     # Checksum rom
        !            35:     newsum = (256 - checksum(data)) & 0xff
        !            36:     data = data[:6] + chr(newsum) + data[7:]
        !            37: 
        !            38:     # Write new rom
        !            39:     f = open(outname, 'wb')
        !            40:     f.write(data)
        !            41: 
        !            42: if __name__ == '__main__':
        !            43:     main()

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.