Implement 386 instruction table, improve 8086/186/286 instruction table
[multi_emu.git] / entry_point.py
1 #!/usr/bin/env python3
2
3 import sys
4 from intelhex import IntelHex
5
6 EXIT_SUCCESS = 0
7 EXIT_FAILURE = 1
8
9 if len(sys.argv) < 4:
10   print(f'usage: {sys.argv[0]:s} entry_point in.ihx out.ihx')
11   sys.exit(EXIT_FAILURE)
12 entry_point = [int(i, 0) for i in sys.argv[1].split(':')]
13 in_ihx = sys.argv[2]
14 out_ihx = sys.argv[3]
15
16 intelhex = IntelHex(in_ihx)
17 segments = [j for i in intelhex.segments() for j in i]
18 for i in range(0, len(segments), 2):
19   print(f'[{segments[i]:04x}, {segments[i + 1]:04x})')
20 intelhex.start_addr = (
21   {'EIP': entry_point[0]}
22 if len(entry_point) == 1 else
23   {'CS': entry_point[0], 'IP': entry_point[1]}
24 )
25 intelhex.write_hex_file(out_ihx)