diff --git a/lib/make/mb_autoexec.mk b/lib/make/mb_autoexec.mk
index 14003bc..eb5e4ac 100644
--- a/lib/make/mb_autoexec.mk
+++ b/lib/make/mb_autoexec.mk
@@ -1,8 +1,6 @@
MB_AUTOEXEC_BYSELF ?= true
-MB_AUTOEXEC_BYSELF_MSG ?= Generated by msxbuild Makefile
-MB_AUTOEXEC_TEXTMODE ?= 80
-MB_AUTOEXEC_TEXTCOLOR ?= 15,0,0
+MB_AUTOEXEC_BYSELF_MSG ?= Run msxbuild:
MB_AUTOEXEC_VERSION ?= true
MB_AUTOEXEC_STARTUP_TIMEOUT ?= 60
MB_AUTOEXEC_STARTUP_EXITCODE ?= 124
@@ -33,21 +31,25 @@ endef
define mb_autoexec_append_exit
$(call mb_autoexec_append_cmd,$(1),omsxctl exit 0)
endef
-define mb_autoexec_append_cmd_test
+define mb_autoexec_append_safe_test
$(call mb_autoexec_append_cmd,$(1),omsxctl fail_after $(MB_AUTOEXEC_TEST_TIMEOUT) seconds failed_test $(MB_AUTOEXEC_TEST_EXITCODE))
$(call mb_autoexec_append_echo,$(1),Running test '$(2)')
$(call mb_autoexec_append_cmd,$(1),$(2))
endef
+define mb_autoexec_append_safe_cmd
+ $(call mb_autoexec_append_cmd,$(1),omsxctl fail_after $(MB_AUTOEXEC_CMD_TIMEOUT) seconds failed_cmd $(MB_AUTOEXEC_CMD_EXITCODE))
+ $(call mb_autoexec_append_echo,$(1),Running test '$(2)')
+ $(call mb_autoexec_append_cmd,$(1),$(2))
+endef
define mb_autoexec_write_default
echo -n "" > $(1)/autoexec.bat
- $(if $(filter true,$(MB_AUTOEXEC_BYSELF)),$(call mb_autoexec_append_rem,$(1),$(MB_AUTOEXEC_BYSELF_MSG)))
- $(call mb_autoexec_append_cmd,$(1),omsxctl fail_after $(MB_AUTOEXEC_STARTUP_TIMEOUT) seconds failed_autoexec $(MB_AUTOEXEC_STARTUP_EXITCODE))
- $(if $(filter 40,$(MB_AUTOEXEC_TEXTMODE)),$(call mb_autoexec_append_cmd,$(1),mode 40))
- $(if $(filter 40,$(MB_AUTOEXEC_TEXTMODE)),$(call mb_autoexec_append_echo,$(1),Enabled mode 40.))
- $(if $(filter 80,$(MB_AUTOEXEC_TEXTMODE)),$(call mb_autoexec_append_cmd,$(1),mode 80))
- $(if $(filter 80,$(MB_AUTOEXEC_TEXTMODE)),$(call mb_autoexec_append_echo,$(1),Enabled mode 80.))
- $(call mb_autoexec_append_cmd,$(1),COLOR $(MB_AUTOEXEC_TEXTCOLOR))
+ $(if $(filter 40,$(2)),$(call mb_autoexec_append_cmd,$(1),mode $(2)),$(call mb_autoexec_append_cmd,$(1),mode 80))
+ $(if $(filter 40,$(2)),$(call mb_autoexec_append_echo,$(1),Enabled mode $(2).),$(call mb_autoexec_append_echo,$(1),Enabled mode 80.))
+ $(call mb_autoexec_append_cmd,$(1),omsxctl fail_after $(MB_AUTOEXEC_STARTUP_TIMEOUT) seconds failed_exec $(MB_AUTOEXEC_STARTUP_EXITCODE))
+ $(call mb_autoexec_append_cmd,$(1),omsxctl setcolor 4 000 > NUL)
+ $(call mb_autoexec_append_cmd,$(1),omsxctl setcolor 15 777 > NUL)
$(if $(filter true,$(MB_AUTOEXEC_VERSION)),$(call mb_autoexec_append_cmd,$(1),ver))
+ $(if $(filter true,$(MB_AUTOEXEC_BYSELF)),$(call mb_autoexec_append_echo,$(1),$(MB_AUTOEXEC_BYSELF_MSG) $(notdir $(1))))
endef
define mb_autoexec_open_gui
@@ -65,16 +67,12 @@ endef
define mb_autoexec_cmd
@echo === Generating autoexec.bat for command
$(call mb_autoexec_write_default,$(1))
- $(call mb_autoexec_append_cmd,$(1),omsxctl fail_after $(MB_AUTOEXEC_CMD_TIMEOUT) seconds failed_cmd $(MB_AUTOEXEC_CMD_EXITCODE))
- $(call mb_autoexec_append_echo,$(1),Running command '$(2)')
- $(call mb_autoexec_append_cmd,$(1),$(2))
+ $(call mb_autoexec_append_safe_cmd,$(1),$(2))
$(call mb_autoexec_append_exit,$(1))
endef
define mb_autoexec_cmd_test
@echo === Generating autoexec.bat for command test
$(call mb_autoexec_write_default,$(1))
- $(call mb_autoexec_append_cmd,$(1),omsxctl fail_after $(MB_AUTOEXEC_TEST_TIMEOUT) seconds failed_test $(MB_AUTOEXEC_TEST_EXITCODE))
- $(call mb_autoexec_append_echo,$(1),Running test '$(2)')
- $(call mb_autoexec_append_cmd,$(1),$(2))
+ $(call mb_autoexec_append_safe_test,$(1),$(2))
$(call mb_autoexec_append_exit,$(1))
endef
diff --git a/lib/make/mb_base.mk b/lib/make/mb_base.mk
deleted file mode 100644
index 651c953..0000000
--- a/lib/make/mb_base.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-
-# OS cmds
-ifeq ($(OS),Windows_NT)
- MB_RM = del /F /Q
- MB_RMDIR = RMDIR /S /Q
- MB_MKDIR = mkdir
- MB_COPY = copy
- MB_ERRIGNORE = 2>NUL || true
- MB_SEP=\\
- MB_CACHE ?= %LOCALAPPDATA%
-else
- MB_RM = rm -f
- MB_RMDIR = rm -rf
- MB_MKDIR = mkdir -p
- MB_COPY = cp
- MB_ERRIGNORE = 2>/dev/null
- MB_SEP=/
- MB_CACHE ?= ~/.cache
-endif
-
-# Remove space after separator
-MB_PSEP = $(strip $(MB_SEP))
-
-# Needed for comma in call arguments (like for l80.com)
-MB_COMMA:=,
-
-define mb_clean
- @echo === Cleaning build folder.
- test $(1) && $(MB_RMDIR) $(1)
-endef
-define mb_mkdir
- $(MB_MKDIR) $(1)
-endef
-define mb_delete
- test $(1) && $(MB_RM) $(1)
-endef
-define mb_copy
- $(MB_COPY) $(1) $(2)
-endef
-define mb_create_dist
- tar -czf $(1) -C $(2) `ls $(2)`
-endef
diff --git a/lib/make/mb_msxhub.mk b/lib/make/mb_msxhub.mk
index ac39738..10a1a85 100644
--- a/lib/make/mb_msxhub.mk
+++ b/lib/make/mb_msxhub.mk
@@ -1,11 +1,6 @@
MB_MSXHUB_API ?= https://msxhub.com/api
-MB_MSXHUB_CACHE ?= $(MB_CACHE)/msxhub/repro-v0
-
-# NOTE: with HDD import/export we get duplicate files after openMSX run, so force to lowercase.
-define _mb_lowercase
-$(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$(1)))))))))))))))))))))))))))
-endef
+MB_MSXHUB_CACHE ?= $(MB_CACHE)/msxbuild/msxhub
define _mb_msxhub_file_fetch
@echo === Fetch msxhub file
@@ -13,6 +8,7 @@ define _mb_msxhub_file_fetch
$(if $(wildcard $(MB_MSXHUB_CACHE)/$(subst $(MB_MSXHUB_API)/,,$(1))),,wget -O $(MB_MSXHUB_CACHE)/$(subst $(MB_MSXHUB_API)/,,$(1)) $(1))
endef
+# NOTE: with HDD import/export we get duplicate files after openMSX run, so force to lowercase.
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)))))
diff --git a/lib/make/mb_msxrom.mk b/lib/make/mb_msxrom.mk
new file mode 100644
index 0000000..1a91a7c
--- /dev/null
+++ b/lib/make/mb_msxrom.mk
@@ -0,0 +1,59 @@
+
+MB_MSXROM_API ?= https://msxrom.distributedrebirth.love/calc-pi/v19.1
+MB_MSXROM_CACHE ?= $(MB_CACHE)/msxbuild/msxrom
+
+define _mb_msxrom_file_fetch
+ @echo === Fetch msxrom file
+ $(if $(wildcard $(dir $(MB_MSXROM_CACHE)/$(subst $(MB_MSXROM_API)/,,$(1)))),,$(call mb_mkdir,$(dir $(MB_MSXROM_CACHE)/$(subst $(MB_MSXROM_API)/,,$(1)))))
+ $(if $(wildcard $(MB_MSXROM_CACHE)/$(subst $(MB_MSXROM_API)/,,$(1))),,wget -O $(MB_MSXROM_CACHE)/$(subst $(MB_MSXROM_API)/,,$(1)) $(1))
+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
+ $(if $(wildcard $(1)-omsx),,$(call mb_mkdir,$(1)-omsx))
+ $(if $(wildcard $(1)-omsx/systemroms),,$(call mb_mkdir,$(1)-omsx/systemroms))
+ $(if $(wildcard $(1)-omsx/systemroms/machines),,$(call mb_mkdir,$(1)-omsx/systemroms/machines))
+ $(if $(wildcard $(1)-omsx/systemroms/extensions),,$(call mb_mkdir,$(1)-omsx/systemroms/extensions))
+endef
+
+define mb_msxrom_extension_ide_nextor
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/extensions,extensions/Nextor-2.1.1.SunriseIDE.ROM)
+endef
+
+define mb_msxrom_extension_rs232
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/extensions,extensions/rs232.rom)
+endef
+
+define mb_msxrom_extension_fmpac
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/extensions,extensions/fmpac.rom)
+endef
+
+define mb_msxrom_extension_moonsound
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/extensions,extensions/yrw801.rom)
+endef
+
+define mb_msxrom_extension_basickun
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/extensions,machines/sanyo/phc-70fd2_basickun.rom)
+endef
+
+define mb_msxrom_machine_Canon_V-20
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/machines,machines/canon/v-20_basic-bios1.rom)
+endef
+
+define mb_msxrom_machine_Philips_NMS_8250
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/machines,machines/philips/nms8250_basic-bios2.rom)
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/machines,machines/philips/nms8250_msx2sub.rom)
+ $(call mb_msxrom_file,$(1)-omsx/systemroms/machines,machines/philips/nms8250_disk.rom)
+endef
+
+define mb_msxrom_machine_Boosted_MSX2_EN
+ $(call mb_msxrom_machine_Philips_NMS_8250,$(1))
+ $(call mb_msxrom_extension_fmpac,$(1))
+ $(call mb_msxrom_extension_moonsound,$(1))
+ $(call mb_msxrom_extension_basickun,$(1))
+endef
diff --git a/lib/make/mb_openmsx.mk b/lib/make/mb_openmsx.mk
index d4a731e..e2419a2 100644
--- a/lib/make/mb_openmsx.mk
+++ b/lib/make/mb_openmsx.mk
@@ -1,7 +1,7 @@
MB_OPENMSX_PATH_BIN ?= bin
MB_OPENMSX_BOOT_TIMEOUT ?= 25
-MB_OPENMSX_MACHINE ?= Philips_NMS_8250
+MB_OPENMSX_MACHINE_DEF ?= Philips_NMS_8250
MB_OPENMSX_SPEED ?= $(if $(findstring turboR,$(MB_OPENMSX_MACHINE)),100,333)
MB_OPENMSX_EXTS ?=
MB_OPENMSX_EXTRA_SLOT ?= -ext slotexpander
@@ -13,14 +13,24 @@ MB_OPENMSX_JOYPORTB ?=
MB_OPENMSX_SCALE_FACTOR ?= 3
MB_OPENMSX_THROTTLE ?= off
MB_OPENMSX_RENDERER ?=
-MB_OPENMSX_CTLCACHE ?= $(MB_CACHE)/omsxctl
+MB_OPENMSX_CTLCACHE ?= $(MB_CACHE)/msxbuild/omsxctl
-# TODO: create openMSX issue to clean share: https://github.com/openMSX/openMSX/issues/1672
-define _mb_openmsx_setup
+define mb_openmsx_setup
$(if $(wildcard $(MB_OPENMSX_CTLCACHE)),,$(call mb_mkdir,$(MB_OPENMSX_CTLCACHE)))
$(call mb_msxhub_file,$(MB_OPENMSX_CTLCACHE),OMSXCTL/1.0-1/get/OMSXCTL/omsxctl.tcl)
$(call mb_msxhub_file,$(MB_OPENMSX_CTLCACHE),OMSXCTL/1.0-1/get/OMSXCTL/omsxctl.com)
- $(if $(wildcard ~/.openMSX/share/extensions/ide-nextor.xml),,$(call mb_copy,$(PATH_MSXBUILD_REAL)/lib/openmsx/ide-nextor.xml,~/.openMSX/share/extensions/))
+ $(if $(wildcard $(1)-omsx),,$(call mb_mkdir,$(1)-omsx))
+ $(if $(wildcard $(1)-omsx/stdio.xml),,$(call mb_copy,$(PATH_MSXBUILD_REAL)/lib/openmsx/stdio.xml,$(1)-omsx))
+ $(if $(wildcard $(1)-omsx/scripts),,$(call mb_mkdir,$(1)-omsx/scripts))
+ $(if $(wildcard $(1)-omsx/scripts/boot_env.tcl),,$(call mb_copy,$(PATH_MSXBUILD_REAL)/lib/openmsx/scripts/boot_env.tcl,$(1)-omsx/scripts))
+ $(if $(wildcard $(1)-omsx/scripts/boot_hdd.tcl),,$(call mb_copy,$(PATH_MSXBUILD_REAL)/lib/openmsx/scripts/boot_hdd.tcl,$(1)-omsx/scripts))
+ $(if $(wildcard $(1)-omsx/scripts/fail_after.tcl),,$(call mb_copy,$(PATH_MSXBUILD_REAL)/lib/openmsx/scripts/fail_after.tcl,$(1)-omsx/scripts))
+ $(if $(wildcard $(1)-omsx/scripts/omsxctl.tcl),,$(call mb_copy,$(MB_OPENMSX_CTLCACHE)/omsxctl.tcl,$(1)-omsx/scripts))
+ $(if $(wildcard $(1)-omsx/extensions),,$(call mb_mkdir,$(1)-omsx/extensions))
+ $(if $(wildcard $(1)-omsx/extensions/ide-nextor.xml),,$(call mb_copy,$(PATH_MSXBUILD_REAL)/lib/openmsx/extensions/ide-nextor.xml,$(1)-omsx/extensions))
+ $(call mb_msxrom_setup,$(1))
+ $(call mb_msxrom_extension_ide_nextor,$(1))
+ $(call mb_msxrom_machine_$(2),$(1))
endef
define _mb_openmsx_run
@@ -29,29 +39,25 @@ define _mb_openmsx_run
FAIL_AFTER_PATH=$(MB_OPENMSX_PATH_BIN) \
BOOT_HDD_PATH="$(1)" \
BOOT_HDD_SIZE=$(MB_OPENMSX_HDD_SIZE) \
- BOOT_HDD_IMAGE="$(MB_OPENMSX_PATH_BIN)/dsk-$(notdir $(1)).img" \
+ BOOT_HDD_IMAGE="$(1)-omsx/disk-ide-hda.img" \
JOYPORTA=$(MB_OPENMSX_JOYPORTA) \
JOYPORTB=$(MB_OPENMSX_JOYPORTB) \
SCALE_FACTOR=$(MB_OPENMSX_SCALE_FACTOR) \
SPEED=$(MB_OPENMSX_SPEED) \
RENDERER=$(MB_OPENMSX_RENDERER) \
THROTTLE=$(MB_OPENMSX_THROTTLE) \
+ OPENMSX_USER_DATA="$(1)-omsx" \
$(PATH_OPENMSX)/openmsx \
- -machine $(MB_OPENMSX_MACHINE) \
+ -machine $(2) \
$(MB_OPENMSX_EXTRA_SLOT) \
$(MB_OPENMSX_EXTRA_HDD) \
$(MB_OPENMSX_EXTRA_MEM) \
$(MB_OPENMSX_EXTS) \
- -script $(MB_OPENMSX_CTLCACHE)/omsxctl.tcl \
- -script $(PATH_MSXBUILD_REAL)/lib/openmsx/boot_env.tcl \
- -script $(PATH_MSXBUILD_REAL)/lib/openmsx/boot_hdd.tcl \
- -script $(PATH_MSXBUILD_REAL)/lib/openmsx/fail_after.tcl \
- -setting $(PATH_MSXBUILD_REAL)/lib/openmsx/boot_setting.xml \
- -control stdio < $(PATH_MSXBUILD_REAL)/lib/openmsx/boot_stdio.xml
+ -control stdio < $(1)-omsx/stdio.xml
endef
define mb_openmsx_dosctl
- $(if $(wildcard $(MB_OPENMSX_CTLCACHE)/omsxctl.tcl),,$(call _mb_openmsx_setup))
+ $(call mb_openmsx_setup,$(1),$(if $(2),$(2),$(MB_OPENMSX_MACHINE_DEF)))
$(if $(wildcard $(1)/omsxctl.com),,$(call mb_copy,$(MB_OPENMSX_CTLCACHE)/omsxctl.com,$(1)))
- $(call _mb_openmsx_run,$(1))
+ $(call _mb_openmsx_run,$(1),$(if $(2),$(2),$(MB_OPENMSX_MACHINE_DEF)))
endef
diff --git a/lib/make/msxbuild.mk b/lib/make/msxbuild.mk
index bd86988..35fd18e 100644
--- a/lib/make/msxbuild.mk
+++ b/lib/make/msxbuild.mk
@@ -2,15 +2,63 @@
# msxbuild.mk - Makefile helper to use with msx projects.
#
-# Setup required tools paths
+# Setup default tools paths
PATH_SDCC ?= /usr/bin
PATH_OPENMSX ?= /usr/bin
PATH_MSXBUILD ?= $(dir $(lastword $(MAKEFILE_LIST)))../..
PATH_MSXBUILD_REAL := $(if $(realpath $(PATH_MSXBUILD)),$(realpath $(PATH_MSXBUILD)),$(PATH_MSXBUILD))
-# Include features
-include $(PATH_MSXBUILD)/lib/make/mb_base.mk
+# OS cmds
+ifeq ($(OS),Windows_NT)
+ MB_RM = del /F /Q
+ MB_RMDIR = RMDIR /S /Q
+ MB_MKDIR = mkdir
+ MB_COPY = copy
+ MB_ERRIGNORE = 2>NUL || true
+ MB_SEP=\\
+ MB_CACHE ?= %LOCALAPPDATA%
+else
+ MB_RM = rm -f
+ MB_RMDIR = rm -rf
+ MB_MKDIR = mkdir -p
+ MB_COPY = cp
+ MB_ERRIGNORE = 2>/dev/null
+ MB_SEP=/
+ MB_CACHE ?= ~/.cache
+endif
+
+# Remove space after separator
+MB_PSEP = $(strip $(MB_SEP))
+
+# Needed for comma in call arguments (like for l80.com)
+MB_COMMA:=,
+
+# Simple inline ascii lowercase
+define _mb_lowercase
+$(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$(1)))))))))))))))))))))))))))
+endef
+
+define mb_clean
+ @echo === Cleaning build folder.
+ $(if $(wildcard $(1)),$(MB_RMDIR) $(1))
+endef
+define mb_mkdir
+ $(MB_MKDIR) $(1)
+endef
+define mb_delete
+ $(if $(wildcard $(1)),$(MB_RM) $(1))
+endef
+define mb_copy
+ $(MB_COPY) $(1) $(2)
+endef
+define mb_create_dist
+ @echo === Creating distribution archive.
+ tar -czf $(1) -C $(2) `ls $(2)`
+endef
+
+# Include extra features
include $(PATH_MSXBUILD)/lib/make/mb_autoexec.mk
+include $(PATH_MSXBUILD)/lib/make/mb_msxrom.mk
include $(PATH_MSXBUILD)/lib/make/mb_msxhub.mk
include $(PATH_MSXBUILD)/lib/make/mb_packages.mk
include $(PATH_MSXBUILD)/lib/make/mb_openmsx.mk
diff --git a/lib/openmsx/boot_setting.xml b/lib/openmsx/boot_setting.xml
deleted file mode 100644
index 4ddb0ee..0000000
--- a/lib/openmsx/boot_setting.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- false
- null
-
-
-
diff --git a/lib/openmsx/boot_stdio.xml b/lib/openmsx/boot_stdio.xml
deleted file mode 100644
index 6cfb7ca..0000000
--- a/lib/openmsx/boot_stdio.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- set power on
-
diff --git a/lib/openmsx/ide-nextor.xml b/lib/openmsx/extensions/ide-nextor.xml
similarity index 100%
rename from lib/openmsx/ide-nextor.xml
rename to lib/openmsx/extensions/ide-nextor.xml
diff --git a/lib/openmsx/boot_env.tcl b/lib/openmsx/scripts/boot_env.tcl
similarity index 100%
rename from lib/openmsx/boot_env.tcl
rename to lib/openmsx/scripts/boot_env.tcl
diff --git a/lib/openmsx/boot_hdd.tcl b/lib/openmsx/scripts/boot_hdd.tcl
similarity index 100%
rename from lib/openmsx/boot_hdd.tcl
rename to lib/openmsx/scripts/boot_hdd.tcl
diff --git a/lib/openmsx/fail_after.tcl b/lib/openmsx/scripts/fail_after.tcl
similarity index 100%
rename from lib/openmsx/fail_after.tcl
rename to lib/openmsx/scripts/fail_after.tcl
diff --git a/lib/openmsx/settings.xml b/lib/openmsx/settings.xml
new file mode 100644
index 0000000..8d86cec
--- /dev/null
+++ b/lib/openmsx/settings.xml
@@ -0,0 +1,8 @@
+
+
+
+ false
+ null
+
+
+
diff --git a/lib/openmsx/stdio.xml b/lib/openmsx/stdio.xml
new file mode 100644
index 0000000..9ed71d2
--- /dev/null
+++ b/lib/openmsx/stdio.xml
@@ -0,0 +1,3 @@
+
+ set power on
+
diff --git a/test/0module.mk b/test/0module.mk
index 9e779c4..2511cbc 100644
--- a/test/0module.mk
+++ b/test/0module.mk
@@ -4,7 +4,8 @@ BUILD_TEST := \
test-ahello-m80-assert \
test-ahello-sdcc-assert \
test-dist-qa-dos1-assert \
-test-dist-qa-dos2-assert
+test-dist-qa-dos2-assert \
+test-dist-qa-msx1-assert
.PHONY: assert-all
assert-all: $(BUILD_TEST)
diff --git a/test/dist-qa-dos1/0module.mk b/test/dist-qa-dos1/0module.mk
index e50c7fb..fe4a6ed 100644
--- a/test/dist-qa-dos1/0module.mk
+++ b/test/dist-qa-dos1/0module.mk
@@ -18,10 +18,9 @@ test-dist-qa-dos1-run: | $(TEST_DIST_QA_DOS1_DEPS)
.PHONY: test-dist-qa-dos1-assert
test-dist-qa-dos1-assert: | $(TEST_DIST_QA_DOS1_DEPS)
- $(call mb_delete,$(TEST_DIST_QA_DOS1)/test.out)
$(call mb_autoexec_write_default,$(TEST_DIST_QA_DOS1))
- $(call mb_autoexec_append_cmd_test,$(TEST_DIST_QA_DOS1),ahello1)
- $(call mb_autoexec_append_cmd_test,$(TEST_DIST_QA_DOS1),ahello2)
+ $(call mb_autoexec_append_safe_test,$(TEST_DIST_QA_DOS1),ahello1)
+ $(call mb_autoexec_append_safe_test,$(TEST_DIST_QA_DOS1),ahello2)
$(call mb_autoexec_append_exit,$(TEST_DIST_QA_DOS1))
$(call mb_openmsx_dosctl,$(TEST_DIST_QA_DOS1))
diff --git a/test/dist-qa-dos2/0module.mk b/test/dist-qa-dos2/0module.mk
index 0a78b73..e1d5e6b 100644
--- a/test/dist-qa-dos2/0module.mk
+++ b/test/dist-qa-dos2/0module.mk
@@ -21,8 +21,8 @@ test-dist-qa-dos2-assert: | $(TEST_DIST_QA_DOS2_DEPS)
$(call mb_delete,$(TEST_DIST_QA_DOS2)/ahello1.out)
$(call mb_delete,$(TEST_DIST_QA_DOS2)/ahello2.out)
$(call mb_autoexec_write_default,$(TEST_DIST_QA_DOS2))
- $(call mb_autoexec_append_cmd_test,$(TEST_DIST_QA_DOS2),ahello1 > ahello1.out)
- $(call mb_autoexec_append_cmd_test,$(TEST_DIST_QA_DOS2),ahello2 > ahello2.out)
+ $(call mb_autoexec_append_safe_test,$(TEST_DIST_QA_DOS2),ahello1 > ahello1.out)
+ $(call mb_autoexec_append_safe_test,$(TEST_DIST_QA_DOS2),ahello2 > ahello2.out)
$(call mb_autoexec_append_exit,$(TEST_DIST_QA_DOS2))
$(call mb_openmsx_dosctl,$(TEST_DIST_QA_DOS2))
grep "M80: Hello world..." $(TEST_DIST_QA_DOS2)/ahello1.out
diff --git a/test/dist-qa-msx1/0module.mk b/test/dist-qa-msx1/0module.mk
new file mode 100644
index 0000000..ca3df43
--- /dev/null
+++ b/test/dist-qa-msx1/0module.mk
@@ -0,0 +1,32 @@
+
+TEST_DIST_QA_MSX1_MACHINE ?= Canon_V-20
+TEST_DIST_QA_MSX1 := $(PATH_BIN)/test/dist-qa-msx1
+TEST_DIST_QA_MSX1_DEPS := $(subst dist,dist-qa-msx1,$(TEST_DIST_DEPS))
+BUILD_HELP += \\n\\t* test-dist-qa-msx1-run\\n\\t* test-dist-qa-msx1-assert
+
+$(TEST_DIST_QA_MSX1):
+ $(call mb_mkdir,$(TEST_DIST_QA_MSX1))
+ $(call mb_package_emuctl,$(TEST_DIST_QA_MSX1))
+ $(call mb_package_dos2,$(TEST_DIST_QA_MSX1))
+
+$(TEST_DIST_QA_MSX1)/%: bin/test/dist/% | $(TEST_DIST_QA_MSX1) $(TEST_DIST_DEPS)
+ $(call mb_copy,$<,$@)
+
+.PHONY: test-dist-qa-msx1-run
+test-dist-qa-msx1-run: | $(TEST_DIST_QA_MSX1_DEPS)
+ $(call mb_autoexec_write_default,$(TEST_DIST_QA_MSX1),40)
+ $(call mb_autoexec_append_stop_fail,$(TEST_DIST_QA_MSX1))
+ $(call mb_autoexec_append_gui_mode,$(TEST_DIST_QA_MSX1))
+ $(call mb_openmsx_dosctl,$(TEST_DIST_QA_MSX1),$(TEST_DIST_QA_MSX1_MACHINE))
+
+.PHONY: test-dist-qa-msx1-assert
+test-dist-qa-msx1-assert: | $(TEST_DIST_QA_MSX1_DEPS)
+ $(call mb_delete,$(TEST_DIST_QA_MSX1)/ahello1.out)
+ $(call mb_delete,$(TEST_DIST_QA_MSX1)/ahello2.out)
+ $(call mb_autoexec_write_default,$(TEST_DIST_QA_MSX1),40)
+ $(call mb_autoexec_append_safe_test,$(TEST_DIST_QA_MSX1),ahello1 > ahello1.out)
+ $(call mb_autoexec_append_safe_test,$(TEST_DIST_QA_MSX1),ahello2 > ahello2.out)
+ $(call mb_autoexec_append_exit,$(TEST_DIST_QA_MSX1))
+ $(call mb_openmsx_dosctl,$(TEST_DIST_QA_MSX1),$(TEST_DIST_QA_MSX1_MACHINE))
+ grep "M80: Hello world..." $(TEST_DIST_QA_MSX1)/ahello1.out
+ grep "SDCC: Hello world..." $(TEST_DIST_QA_MSX1)/ahello2.out