loadertpl.py 750 B

123456789101112131415161718192021222324252627282930
  1. #!/usr/bin/env python3
  2. template = """\
  3. 10CLEAR10,&H%s:BLOAD"%s"\n\
  4. 20DEFFNS(A)=PEEK(A)+256*(PEEK(A)>127)\n\
  5. 30DEFFNW(A)=PEEK(A)+256*PEEK(A+1)\n\
  6. 40DEFUSR=&H%s\n\
  7. 50A=USR(0)\n\
  8. 60B=FNW(-1675)+65536*PEEK(-1673)\n\
  9. 70SCREEN0\n\
  10. 80?"Cyc,Err"B;A\n\
  11. 90?"ACK "FNS(-1672)FNS(-1671)FNS(-1670)FNS(-1669)\n\
  12. """
  13. fnames = {'cas':'CAS:VDPtst', 'dsk':'vdptest.bin'}
  14. import sys
  15. def hx(n): return hex(n)[2:].upper()
  16. def main():
  17. if len(sys.argv) < 3 or sys.argv[1].lower() not in fnames:
  18. sys.stderr.write("Usage: python3 loadertpl.py {cas|dsk} <addr>\n")
  19. addr = int(sys.argv[2], 0)
  20. fname = fnames[sys.argv[1].lower()]
  21. tpl = template.replace('\n','\r\n')
  22. sys.stdout.buffer.write(
  23. (tpl % (hx(addr - 1), fname, hx(addr))).encode('latin1'))
  24. main()