From 43c9649712bada4e0f6c726e6a1a5f5bb632e9df Mon Sep 17 00:00:00 2001 From: Willem Date: Mon, 1 Jul 2024 03:15:31 +0200 Subject: [PATCH] Updated readme. --- README.md | 188 ++++++++++++++++++++++-------------------- lib/make/mb_msxhub.mk | 1 - lib/make/mb_msxrom.mk | 1 - lib/make/msxbuild.mk | 2 +- 4 files changed, 98 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index db58857..4408c2a 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,8 @@ 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. +You can use these scripts as-is. the files in the `lib` are all you need. +But as always, feel free to extend it for your specific needs or contribute a fix or feature. ## Features @@ -27,26 +13,32 @@ The files in this repro try to handle these steps for you. * Downloads and caches resources from msxhub.com * Auto magic openMSX extensions and machine rom's setup * SDCC msx build steps +* Screenshot and/or video output of full build ## Dependencies * make + wget + tar + dos2unix * sdcc * openmsx -* ffmpeg (optional, see `srv/assert-all/0module.mk` howto merge videos) +* ffmpeg For debian use; apt-get install make wget tar dos2unix sdcc openmsx ffmpeg -## Usage +## Usage Classic -Include the `lib/make/msxbuild.mk` file from your Makefile. -And override the paths if needed; +Have access or copy the `lib` folder in your project and start writing make files. + +Include the `lib/make/msxbuild.mk` and override the paths if needed; * PATH_SDCC=/usr/bin * PATH_OPENMSX=/usr/bin -Then build result based compile rules see an example in; `src/ahello-m80/0module.mk` +## Usage Docker + +TODO + +## Example Project When you want to see whats happening do a debug run; @@ -99,83 +91,97 @@ Current set is WIP. * mb_autoexec_show_gui80_mouse ` [cmd]` * mb_autoexec_safe_cmd ` [text-mode]` * mb_autoexec_safe_test ` [text-mode]` -* mb_msxhub_file -* mb_msxhub_get_dos1_boot -* mb_msxhub_get_dos2_boot -* mb_msxhub_get_dos2_utils -* mb_msxhub_get_nextor_boot -* mb_msxhub_get_nextor_utils -* mb_msxhub_get_macro80 -* mb_msxhub_get_z80asmuk -* mb_msxhub_get_wbass2 -* mb_msxhub_get_konpass -* mb_msxhub_get_pmarc -* mb_msxhub_get_lhpack -* mb_msxhub_get_lhext -* mb_msxhub_get_gunzip -* mb_msxhub_get_tunzip -* mb_msxhub_get_popcom -* mb_msxhub_get_make -* mb_msxhub_get_adir -* mb_msxhub_get_turbo -* mb_msxhub_get_baskom -* mb_msxhub_get_binldr -* mb_msxhub_get_dmphex -* mb_msxhub_get_zd -* mb_msxhub_get_msxdos2t -* mb_msxhub_get_gfxage -* mb_msxrom_file -* mb_msxrom_setup -* mb_msxrom_extension_ide -* mb_msxrom_extension_ide_nextor -* mb_msxrom_extension_scsi_novaxis -* mb_msxrom_extension_msxdos22 -* mb_msxrom_extension_rs232 -* mb_msxrom_extension_fmpac -* mb_msxrom_extension_fmpac_en -* mb_msxrom_extension_moonsound -* mb_msxrom_extension_basickun -* mb_msxrom_machine_Canon_V-20 -* mb_msxrom_machine_Mitsubishi_ML-F80 -* mb_msxrom_machine_Mitsubishi_ML-FX1 -* mb_msxrom_machine_Mitsubishi_ML-G3_ES -* mb_msxrom_machine_Philips_VG_8000 -* mb_msxrom_machine_Philips_VG_8230 -* mb_msxrom_machine_Philips_NMS_8250 -* mb_msxrom_machine_Toshiba_HX-21.xml -* mb_msxrom_machine_Yamaha_AX200 -* mb_msxrom_machine_Yamaha_YIS-503IIIR -* mb_msxrom_machine_Panasonic_FS-A1WSX -* mb_msxrom_machine_Boosted_MSX2_EN -* mb_msxrom_machine_Boosted_MSX2+_JP +* mb_msxhub_file ` ` +* mb_msxhub_get_dos1_boot `` +* mb_msxhub_get_dos2_boot `` +* mb_msxhub_get_dos2_utils `` +* mb_msxhub_get_nextor_boot `` +* mb_msxhub_get_nextor_utils `` +* mb_msxhub_get_macro80 `` +* mb_msxhub_get_z80asmuk `` +* mb_msxhub_get_wbass2 `` +* mb_msxhub_get_konpass `` +* mb_msxhub_get_pmarc `` +* mb_msxhub_get_lhpack `` +* mb_msxhub_get_lhext `` +* mb_msxhub_get_gunzip `` +* mb_msxhub_get_tunzip `` +* mb_msxhub_get_popcom `` +* mb_msxhub_get_make `` +* mb_msxhub_get_adir `` +* mb_msxhub_get_turbo `` +* mb_msxhub_get_baskom `` +* mb_msxhub_get_binldr `` +* mb_msxhub_get_dmphex `` +* mb_msxhub_get_zd `` +* mb_msxhub_get_msxdos2t `` +* mb_msxhub_get_gfxage `` +* mb_msxrom_file ` ` +* mb_msxrom_setup `` +* mb_msxrom_extension_ide `` +* mb_msxrom_extension_ide_nextor `` +* mb_msxrom_extension_scsi_novaxis `` +* mb_msxrom_extension_msxdos22 `` +* mb_msxrom_extension_rs232 `` +* mb_msxrom_extension_fmpac `` +* mb_msxrom_extension_fmpac_en `` +* mb_msxrom_extension_moonsound `` +* mb_msxrom_extension_basickun `` +* mb_msxrom_machine_Canon_V-20 `` +* mb_msxrom_machine_Mitsubishi_ML-F80 `` +* mb_msxrom_machine_Mitsubishi_ML-FX1 `` +* mb_msxrom_machine_Mitsubishi_ML-G3_ES `` +* mb_msxrom_machine_Philips_VG_8000 `` +* mb_msxrom_machine_Philips_VG_8230 `` +* mb_msxrom_machine_Philips_NMS_8250 `` +* mb_msxrom_machine_Toshiba_HX-21 `` +* mb_msxrom_machine_Yamaha_AX200 `` +* mb_msxrom_machine_Yamaha_YIS-503IIIR `` +* mb_msxrom_machine_Panasonic_FS-A1WSX `` +* mb_msxrom_machine_Boosted_MSX2_EN `` +* mb_msxrom_machine_Boosted_MSX2+_JP `` * mb_openmsx_setup ` ` * mb_openmsx_dosctl ` [machine] [mem-argu]` -* mb_sdcc_compile_asm -* mb_sdcc_link_asm_lib -* mb_sdcc_link_asm -* mb_sdcc_link_asm_0000 = calls mb_sdcc_link_asm,$(1),$(2),0x0000 -* mb_sdcc_link_asm_0100 -* mb_sdcc_link_asm_1000 -* mb_sdcc_link_asm_4000 -* mb_sdcc_link_asm_8000 -* mb_sdcc_link_asm_C000 -* mb_sdcc_link_asm_dos = calls mb_sdcc_link_asm_0100 +* mb_sdcc_compile_asm ` ` +* mb_sdcc_link_asm_lib ` ` +* mb_sdcc_link_asm ` ` +* mb_sdcc_link_asm_0000 ` ` +* mb_sdcc_link_asm_0100 ` ` +* mb_sdcc_link_asm_1000 ` ` +* mb_sdcc_link_asm_4000 ` ` +* mb_sdcc_link_asm_8000 ` ` +* mb_sdcc_link_asm_C000 ` ` +* mb_sdcc_link_asm_dos ` ` * mb_sdcc_hex2bin ` ` * mb_clean `` * mb_mkdir `` -* mb_delete -* mb_copy -* mb_unix2dos -* mb_dos2unix -* mb_create_dist -* mb_create_flight_video +* mb_delete `` +* mb_copy ` ` +* mb_unix2dos ` ` +* mb_dos2unix ` ` +* mb_create_dist ` ` +* mb_create_flight_video `` ## Errata -* Imported folders in openMSX; `cd utils;cd ..;dir` breaks, use `cd utils:cd a:\;dir` as workaround -* Saving screenshots sometimes lets openMSX segfaults if using SDL * Doesn't work on windows -* Missing C and mixed support -* If no SDL or SDLGL-PP than screenshots or videos don't work -* boot_exec_color_vdp does not work on MSX1 vdp +* TODO: Missing C and mixed support +* TODO: Use TCL for BASIC/ASM/C lcov (Cobertura) code coverage +## OpenMSX backlog issues + +* Bug: screenshots sometimes segfaults when using SDL renderer +* Bug: screenshots don't work without throttle +* Bug: Imported folders in openMSX; `cd utils;cd ..;dir` breaks, use `cd utils:cd a:\;dir` as workaround +* Audio+midi device init option + warning messages on computer without sound card +* Enhancing the IDE CD-ROM support +* Command setcolor does not work on MSX1 vdp TMS9918 +* Diskmanipulator export fully non-cased filename compare (duplicates) +* Diskmanipulator reuse the device defined filename +* run instance-id or run/process-label to replace hardcoded "untitled1" path +* Remove msg or add ignore sram-fully or blank setting: SRAM file nms8250.cmos not found, assuming blank SRAM content. +* Video record append mode + optional multiple previds to glue videos as one +* SDL-NULL as window less renderer so that screenshot and/or video works headless +* DocUpdate: Add speed note because it is slow + add example "after quit {export hdd}" +* DocUpdate: Wrap all TCL commands in catch+stderr+exit1 +* DocUpdate: Add 'headless' example via stdio+new + link to control omsxctl diff --git a/lib/make/mb_msxhub.mk b/lib/make/mb_msxhub.mk index 1bd6ba8..5e6f636 100644 --- a/lib/make/mb_msxhub.mk +++ b/lib/make/mb_msxhub.mk @@ -12,7 +12,6 @@ endef define mb_msxhub_file $(if $(wildcard $(MB_MSXHUB_CACHE)/$(2)),,$(call _mb_msxhub_file_fetch,$(MB_MSXHUB_API)/$(2))) $(if $(wildcard $(1)/$(call _mb_lowercase,$(notdir $(2)))),,$(call mb_copy,$(MB_MSXHUB_CACHE)/$(2),$(1)/$(call _mb_lowercase,$(notdir $(2))))) - $(if $(filter true,$(3)),$(call mb_copy,$(MB_MSXHUB_CACHE)/$(2),$(1)/$(call _mb_lowercase,$(notdir $(2))))) endef # diff --git a/lib/make/mb_msxrom.mk b/lib/make/mb_msxrom.mk index a991e66..d99701f 100644 --- a/lib/make/mb_msxrom.mk +++ b/lib/make/mb_msxrom.mk @@ -12,7 +12,6 @@ endef define mb_msxrom_file $(if $(wildcard $(MB_MSXROM_CACHE)/$(2)),,$(call _mb_msxrom_file_fetch,$(MB_MSXROM_API)/$(2))) $(if $(wildcard $(1)/$(notdir $(2))),,$(call mb_copy,$(MB_MSXROM_CACHE)/$(2),$(1)/$(notdir $(2)))) - $(if $(filter true,$(3)),$(call mb_copy,$(MB_MSXROM_CACHE)/$(2),$(1)/$(notdir $(2)))) endef define mb_msxrom_setup diff --git a/lib/make/msxbuild.mk b/lib/make/msxbuild.mk index b42cb1f..8b64a66 100644 --- a/lib/make/msxbuild.mk +++ b/lib/make/msxbuild.mk @@ -47,7 +47,7 @@ $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst endef define mb_clean - @echo === Cleaning build folder. + @echo === Cleaning build folder $(if $(wildcard $(1)),$(MB_RMDIR) $(1)) endef define mb_mkdir