# MSXBUILD Utils to use openMSX in build pipelines. You can use these scripts as-is. But as always, feel free to extend it for your specific needs or contribute a fix or feature. ## OpenMSX missing automation documentation * Don't use DirAsDisk, it is slow * Wrap all TCL commands in catch+stderr+exit1 * Use TCL script for auto HD import/export * Use stdio mode for headless and/or fast boot * Disable throttling for automation steps * Use fail_after TCL script to run openMSX safely * Control openMSX from inside with TCL+command * Enable SDL just before command is addictive fast * TODO: Use TCL for BASIC/ASM/C lcov (Cobertura) code coverage The files in this repro try to handle these steps for you. ## Features * SDCC msx build steps. * Allows headless openMSX buildpipe. * openMSX safe exit failure guards. * Automatic disk image import + export per build step. * Downloads and caches resources from msxhub.com ## Dependencies * make * openmsx * sdcc * wget * unix2dos For debian use; apt-get install make openmsx wget dos2unix sdcc ## Usage Include the `lib/make/msxbuild.mk` file from your Makefile. And override the required paths; * PATH_SDCC ?= /usr/bin * PATH_UNIX2DOS ?= /usr/bin * PATH_OPENMSX ?= /opt/openMSX/bin/ * PATH_MSXBUILD ?= /opt/msxbuild Then build result based compile rules see an example in; `test/ahello-m80/0module.mk` ## Functions Current set is WIP. * mb_compile_asm * mb_link_asm_lib * mb_link_asm * mb_link_asm_0000 = call mb_link_asm,$(1),$(2),0x0000 * mb_link_asm_0100 * mb_link_asm_1000 * mb_link_asm_4000 * mb_link_asm_8000 * mb_link_asm_C000 * mb_link_asm_dos = alias for mb_link_asm_0100 * mb_hex2bin * mb_openmsx_dosctl * mb_msxhub_file * mb_package_dos1 * mb_package_dos2 * mb_package_nextor * mb_package_macro80 * mb_package_z80asmuk * mb_package_popcom * mb_package_dmphex * mb_package_baskom * mb_package_pmarc * mb_package_lhpack * mb_package_lhext * mb_package_gunzip * mb_package_tunzip * mb_package_turbo * mb_package_binldr * mb_package_gfxage * mb_autoexec_append_cmd * mb_autoexec_append_echo * mb_autoexec_append_rem * mb_autoexec_append_gui_mode * mb_autoexec_append_stop_fail * mb_autoexec_append_exit * mb_autoexec_write_default * mb_autoexec_open_gui * mb_autoexec_open_gui_cmd * mb_autoexec_cmd * mb_autoexec_cmd_test * mb_clean * mb_mkdir * mb_delete * mb_copy * mb_create_dist ## Errata * Doesn't work on windows * Missing C and mixed support * If no SDL than screenshot in fail_after doesn't work