blog:ql_dev1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
blog:ql_dev1 [2021/12/14 13:09] – [C68 Cross-Compiler (aka XTC68)] johnblog:ql_dev1 [2021/12/15 19:53] – [Other Stuff] john
Line 181: Line 181:
      * https://github.com/NormanDunbar/qltools      * https://github.com/NormanDunbar/qltools
      * Works with native QL floppy disks (DD 720K, HD 1440K or ED 3.2MB) or disk images to transfer files to/from those devices from Linux.      * Works with native QL floppy disks (DD 720K, HD 1440K or ED 3.2MB) or disk images to transfer files to/from those devices from Linux.
 +
 +==== Other Stuff ====
 +
 +I wrote a quick Python script to print out the value of an XTcc field in a binary produced by C68, GCC or similar. This is useful when copying an executable into a QL floppy or hard drive filesystem and you need to set the //dataspace parameter//:
 +
 +<code>
 +#!/usr/bin/env python
 +
 +####################################
 +#
 +# Prints out the value of a Sinclar
 +# QL binary XTcc field, as needed to
 +# turn it into an executable file
 +# on the QL itself, or when transferred
 +# using qltool.
 +#
 +# John Snowdon, 2021
 +#
 +####################################
 +
 +import sys
 +import os
 +
 +if len(sys.argv) < 2:
 + print("ERROR: No filename given")
 + sys.exit(-1)
 +
 +ql_filename = sys.argv[1]
 +if (os.path.exists(ql_filename)):
 + f = open(ql_filename, "rb")
 + filedata = f.read()
 + offset = filedata.find(b'\x00XTcc')
 +
 + if offset:
 + # First byte of "XTcc" is at 'offset', so jump by 4 bytes
 + f.seek(offset + 5)
 + dataspace = f.read(4)
 +
 + # Print out the value of the dataspace field
 + print(int.from_bytes(dataspace, byteorder='big'))
 +
 + f.close()
 +
 +else:
 + print("ERROR: Filename does not exist")
 + sys.exit(-1)
 +</code>
 +
 +Just call the script with the name of your C68 executable. For example:
 +
 +<code>
 +$ xtcc game.bin
 +868
 +</code>
 +
 +... the value printed is the size of the dataspace needed. So you would then copy and mark your binary with qltools as follows:
 +
 +<code>
 +$ xtcc game.bin
 +868
 +$ qltools floppy.img -W game.bin
 +$ qltools floppy.img -x game.bin 868
 +</code>
 +
 +Or even easier, embed the xtcc call in backticks:
 +
 +<code>
 +$ qltools floppy.img -W game.bin
 +$ qltools floppy.img -x game.bin `xtcc game.bin`
 +</code>
 +
  • blog/ql_dev1.txt
  • Last modified: 2021/12/16 11:03
  • by john