* Revert "Uploaded_2_9_2025"
This reverts commit ec79bbdbc9.
* Fixing DEBUG_IO builds.
* Make the IO port base a define.
* Fix CPU test to properly handle 808x vs V20.
* Improve timeout management logic.
* Improve SD Card initialization logic.
* Implement INT18h bootstrapping.
* Implementing a different test for processor type.
* Allow use with another fixed drive (eg: ESDI drive).
* Allow swapping driver ID between the BIOS disk and XTMax.
* Fix address of the ROM segment.
* Fixing missing STI at the top of the handler.
* Major rework of IO to use MOVSW.
* More code reorg and auto-detecting second drive.
* Update XTSD to use MOVSW.
* Add diagnostics program.
* Workaround for MS-DOS strange handling of interrupts.
* Use a lookup table for the memory map.
* Make the BootROM relocatable.
* Some more refactor of the Teensy code.
28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
segment = None
|
|
with open("bootrom.asm", "r") as f:
|
|
for line in f:
|
|
if line.startswith('%define ROM_SEGMENT'):
|
|
segment = int(line[19:].strip('() \n'), 16)
|
|
break
|
|
|
|
with open("bootrom", "rb") as f:
|
|
bitstream = bytearray(f.read())
|
|
|
|
# https://stackoverflow.com/questions/53808694/how-do-i-format-a-python-list-as-an-initialized-c-array
|
|
def to_c_array(values, ctype="float", name="table", formatter=str, colcount=8):
|
|
# apply formatting to each element
|
|
values = [formatter(v) for v in values]
|
|
|
|
# split into rows with up to `colcount` elements per row
|
|
rows = [values[i:i+colcount] for i in range(0, len(values), colcount)]
|
|
|
|
# separate elements with commas, separate rows with newlines
|
|
body = ',\n '.join([', '.join(r) for r in rows])
|
|
|
|
# assemble components into the complete string
|
|
return '{} {}[] = {{\n {}}};'.format(ctype, name, body)
|
|
|
|
with open("../../Code/XTMax/bootrom.h", "w") as f:
|
|
f.write("#define BOOTROM_ADDR {}\n".format(hex(segment << 4)))
|
|
f.write(to_c_array(bitstream, ctype="unsigned char", name="BOOTROM", colcount=16))
|