diff --git a/Makelocal.mk.tpl b/Makelocal.mk.tpl index eac209f..4e0b174 100644 --- a/Makelocal.mk.tpl +++ b/Makelocal.mk.tpl @@ -5,5 +5,4 @@ #PATH_SDCC ?= /usr/bin #PATH_HEX2BIN ?= /usr/bin -#PATH_UNIX2DOS ?= /usr/bin #PATH_OPENMSX ?= /opt/openMSX/bin/ diff --git a/README.md b/README.md index e3d8dbd..a729d09 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,6 @@ for your specific needs or contribute a fix or feature. * sdcc * hex2bin * wget -* unix2dos ## Usage @@ -28,7 +27,6 @@ Include the msxbuild.mk file from your Makefile. And override the required paths; * PATH_SDCC ?= /usr/bin * PATH_HEX2BIN ?= /usr/bin -* PATH_UNIX2DOS ?= /usr/bin * PATH_OPENMSX ?= /opt/openMSX/bin/ * PATH_MSXBUILD ?= /opt/msxbuild @@ -52,10 +50,9 @@ Current set is WIP. * mb_hex2com * mb_hex2dat * mb_openmsx_dos2 -* mb_openmsx_macro80 * mb_msxhub_file -* mb_msxhub_get_dos2 -* mb_msxhub_get_macro80 +* mb_msxhub_get_dos2_sys +* mb_msxhub_get_dos2_com * mb_assert_file_equals = note: text file only * mb_autoexec_append_cmd * mb_autoexec_append_echo diff --git a/lib/make/mb_assert.mk b/lib/make/mb_assert.mk new file mode 100644 index 0000000..2a7ee53 --- /dev/null +++ b/lib/make/mb_assert.mk @@ -0,0 +1,33 @@ + +define _mb_assert_success + @echo success: mb_assert_$(1)\; \'$(2)\' +endef +define _mb_assert_failure + @echo failure: mb_assert_$(1)\; \'$(2)\' + @exit 1 +endef +define _mb_assert_if + $(if $(1),$(call _mb_assert_success,$(2),$(3)),$(call _mb_assert_failure,$(2),$(3))) +endef +define _mb_assert_if_not + $(if $(1),$(call _mb_assert_failure,$(2),$(3)),$(call _mb_assert_success,$(2),$(3))) +endef + +# FIXME: Not stable +#define mb_assert_file_contains +# $(call _mb_assert_if,$(findstring $(2),$(file < $(1))),file_contains,$(2)) +#endef +define mb_assert_file_equals + $(call _mb_assert_if_not,$(subst $(2),,$(file < $(1))),file_equals,$(2)) +endef + +# Assert that the variable(s) are set and doesn't have non-empty values. +# Params; +# 1. Variable name(s) to validate. +# 2. (optional) Error message to user. +define mb_assert_defined + $(strip $(foreach 1,$1,$(call _mb_assert_defined_error,$1,$(strip $(value 2))))) +endef +define _mb_assert_defined_error + $(if $(value $1),,$(error Undefined $1$(if $2, ($2)))) +endef diff --git a/lib/make/mb_base.mk b/lib/make/mb_base.mk index 17a3a90..b338d9c 100644 --- a/lib/make/mb_base.mk +++ b/lib/make/mb_base.mk @@ -21,9 +21,6 @@ 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) diff --git a/lib/make/mb_build.mk b/lib/make/mb_build.mk index 76d389f..69b9218 100644 --- a/lib/make/mb_build.mk +++ b/lib/make/mb_build.mk @@ -1,22 +1,17 @@ -MB_BUILD_FLAG_CPU ?= -mz80 -MB_BUILD_FLAG_LD ?= --nostdinc -MB_BUILD_SDASM_FLAGS ?= -g -l -c -o -MB_BUILD_SDAR_FLAGS ?= -rc -MB_BUILD_H2B_CMD ?= $(PATH_HEX2BIN)/hex2bin -MB_BUILD_SDCC_CMD ?= $(PATH_SDCC)/sdcc -MB_BUILD_SDASM_CMD ?= $(PATH_SDCC)/sdasz80 -MB_BUILD_SDAR_CMD ?= $(PATH_SDCC)/sdar -MB_BUILD_UNIX2DOS_CMD ?= $(PATH_UNIX2DOS)/unix2dos +MB_BUILD_FLAG_CPU ?= -mz80 +MB_BUILD_FLAG_LD ?= --nostdinc +MB_BUILD_SDASM_FLAGS ?= -g -l -c -o +MB_BUILD_SDAR_FLAGS ?= -rc +MB_BUILD_H2B_CMD ?= $(PATH_HEX2BIN)/hex2bin +MB_BUILD_SDCC_CMD ?= $(PATH_SDCC)/sdcc +MB_BUILD_SDASM_CMD ?= $(PATH_SDCC)/sdasz80 +MB_BUILD_SDAR_CMD ?= $(PATH_SDCC)/sdar # TODO: Add C + mixed support; #$(MB_SDASM) -I$(MB_LIBASM_SRC)/include #-l$(LIBASM_LINK) -define mb_unix2dos - $(MB_BUILD_UNIX2DOS_CMD) -n $(1) $(2) -endef - define mb_compile_asm @echo === Compile module asm. $(MB_BUILD_SDASM_CMD) $(MB_BUILD_SDASM_FLAGS) $(1) $(2) diff --git a/lib/make/mb_msxhub.mk b/lib/make/mb_msxhub.mk index a0a2f3c..3f53708 100644 --- a/lib/make/mb_msxhub.mk +++ b/lib/make/mb_msxhub.mk @@ -16,18 +16,13 @@ endef define mb_msxhub_file $(if $(wildcard $(MB_MSXHUB_CACHE)/$(subst $(MB_MSXHUB_API)/,,$(2))),,$(call _mb_msxhub_fetch_file,$(2))) - $(if $(wildcard $(dir $(1))$(call _mb_lowercase,$(notdir $(1)))),,$(call mb_copy,$(MB_MSXHUB_CACHE)/$(subst $(MB_MSXHUB_API)/,,$(2)),$(dir $(1))$(call _mb_lowercase,$(notdir $(1))))) + $(call mb_copy,$(MB_MSXHUB_CACHE)/$(subst $(MB_MSXHUB_API)/,,$(2)),$(dir $(1))$(call _mb_lowercase,$(notdir $(1)))) endef -define mb_msxhub_get_dos2 +define mb_msxhub_get_dos2_sys $(call mb_msxhub_file,$(1)/MSXDOS2.SYS,$(MB_MSXHUB_API)/MSXDOS2/2.20-1/get/MSXDOS2/MSXDOS2.SYS) +endef +define mb_msxhub_get_dos2_com $(call mb_msxhub_file,$(1)/COMMAND2.COM,$(MB_MSXHUB_API)/MSXDOS2/2.20-1/get/MSXDOS2/COMMAND2.COM) endef -define mb_msxhub_get_macro80 - $(call mb_msxhub_file,$(1)/CREF80.COM,$(MB_MSXHUB_API)/MACRO80/2.0-1/get/MACRO80/CREF80.COM) - $(call mb_msxhub_file,$(1)/L80.COM,$(MB_MSXHUB_API)/MACRO80/2.0-1/get/MACRO80/L80.COM) - $(call mb_msxhub_file,$(1)/LIB80.COM,$(MB_MSXHUB_API)/MACRO80/2.0-1/get/MACRO80/LIB80.COM) - $(call mb_msxhub_file,$(1)/M80.COM,$(MB_MSXHUB_API)/MACRO80/2.0-1/get/MACRO80/M80.COM) -endef - diff --git a/lib/make/mb_openmsx.mk b/lib/make/mb_openmsx.mk index 4427f30..2431f6e 100644 --- a/lib/make/mb_openmsx.mk +++ b/lib/make/mb_openmsx.mk @@ -3,8 +3,7 @@ MB_OPENMSX_BOOT_TIMEOUT ?= 25 MB_OPENMSX_MACHINE ?= Philips_NMS_8250 MB_OPENMSX_JOYPORTA ?= MB_OPENMSX_JOYPORTB ?= -# Workaround for include msxbuild.mk file and 'older' openmsx segfaults on relative settings path. -MB_OPENMSX_SETTING := $(if $(realpath $(PATH_MSXBUILD)),$(realpath $(PATH_MSXBUILD)),$(PATH_MSXBUILD))/lib/openmsx/boot_settings.xml +MB_OPENMSX_SETTING ?= $(PATH_MSXBUILD)/lib/openmsx/boot_settings.xml MB_OPENMSX_EXTS ?= MB_OPENMSX_EXTRA_MEM ?= -ext ram4mb MB_OPENMSX_ARGS = \ @@ -33,25 +32,17 @@ define _mb_openmsx_run JOYPORTB=$(MB_OPENMSX_JOYPORTB) \ $(MB_OPENMSX_CMD) endef - define _mb_openmsx_run_dos $(call mb_msxhub_file,$(1)/omsxctl.com,$(MB_MSXHUB_API)/OMSXCTL/1.0-1/get/OMSXCTL/omsxctl.com) $(call _mb_openmsx_run,$(1)) endef - # TODO: add msx1+allversions of dos to https://github.com/fr3nd/msxhub-packages/issues/18 #define mb_openmsx_dos1 -# $(call mb_msxhub_get_dos1,$(1)) +# cp build/msxdos1/* $(1) # $(call _mb_openmsx_run_dos,$(1)) #endef - define mb_openmsx_dos2 - $(call mb_msxhub_get_dos2,$(1)) - $(call _mb_openmsx_run_dos,$(1)) + $(call mb_msxhub_get_dos2_sys,$(1)) + $(call mb_msxhub_get_dos2_com,$(1)) + $(call _mb_openmsx_run_dos, $(1)) endef - -define mb_openmsx_macro80 - $(call mb_msxhub_get_macro80,$(1)) - $(call mb_openmsx_dos2,$(1)) -endef - diff --git a/lib/make/msxbuild.mk b/lib/make/msxbuild.mk index bd39ef8..a2504dd 100644 --- a/lib/make/msxbuild.mk +++ b/lib/make/msxbuild.mk @@ -5,7 +5,6 @@ # Setup required tools paths PATH_HEX2BIN ?= /usr/bin PATH_SDCC ?= /usr/bin -PATH_UNIX2DOS ?= /usr/bin PATH_OPENMSX ?= /usr/bin PATH_MSXBUILD ?= $(dir $(lastword $(MAKEFILE_LIST)))../.. @@ -14,4 +13,5 @@ include $(PATH_MSXBUILD)/lib/make/mb_base.mk include $(PATH_MSXBUILD)/lib/make/mb_autoexec.mk include $(PATH_MSXBUILD)/lib/make/mb_msxhub.mk include $(PATH_MSXBUILD)/lib/make/mb_openmsx.mk +include $(PATH_MSXBUILD)/lib/make/mb_assert.mk include $(PATH_MSXBUILD)/lib/make/mb_build.mk diff --git a/test/0module.mk b/test/0module.mk deleted file mode 100644 index 70a85d4..0000000 --- a/test/0module.mk +++ /dev/null @@ -1,9 +0,0 @@ - -BUILD_HELP += \\n\\t* assert-all \(Run all asertion tests\) -BUILD_TEST := \ -test-ahello-m80-assert \ -test-ahello-sdcc-assert - -.PHONY: assert-all -assert-all: $(BUILD_TEST) - @echo All assertions completed. diff --git a/test/ahello-m80/0module.mk b/test/ahello-m80/0module.mk deleted file mode 100644 index e450ac1..0000000 --- a/test/ahello-m80/0module.mk +++ /dev/null @@ -1,32 +0,0 @@ - -TEST_AHELLO_M80 := $(PATH_BIN)/test/ahello-m80 -BUILD_HELP += \\n\\t* $(TEST_AHELLO_M80)/ahello.com\\n\\t* test-ahello-m80-run\\n\\t* test-ahello-m80-assert - -$(TEST_AHELLO_M80): - $(call mb_mkdir,$(TEST_AHELLO_M80)) - -$(TEST_AHELLO_M80)/%.mac: test/ahello-m80/%.mac | $(TEST_AHELLO_M80) - $(call mb_unix2dos,$<,$@) - -$(TEST_AHELLO_M80)/ahello.rel: $(TEST_AHELLO_M80)/ahello.mac - $(call mb_autoexec_cmd,$(TEST_AHELLO_M80),m80 =ahello/Z) - $(call mb_openmsx_macro80,$(TEST_AHELLO_M80)) - -$(TEST_AHELLO_M80)/ahello.hex: $(TEST_AHELLO_M80)/ahello.rel - $(call mb_autoexec_cmd,$(TEST_AHELLO_M80),l80 ahello$(MB_COMMA)ahello/N/X/Y/E) - $(call mb_openmsx_macro80,$(TEST_AHELLO_M80)) - -$(TEST_AHELLO_M80)/ahello.com: $(TEST_AHELLO_M80)/ahello.hex - $(call mb_hex2com,$(TEST_AHELLO_M80)/ahello.hex,$(TEST_AHELLO_M80)/ahello.com) - -.PHONY: test-ahello-m80-run -test-ahello-m80-run: $(TEST_AHELLO_M80)/ahello.com - $(call mb_autoexec_open_gui,$(TEST_AHELLO_M80)) - $(call mb_openmsx_macro80,$(TEST_AHELLO_M80)) - -.PHONY: test-ahello-m80-assert -test-ahello-m80-assert: $(TEST_AHELLO_M80)/ahello.com - $(call mb_delete,$(TEST_AHELLO_M80)/test.out) - $(call mb_autoexec_cmd_test,$(TEST_AHELLO_M80),ahello > test.out) - $(call mb_openmsx_macro80,$(TEST_AHELLO_M80)) - grep "M80: Hello world..." $(TEST_AHELLO_M80)/test.out diff --git a/test/ahello-m80/ahello.mac b/test/ahello-m80/ahello.mac deleted file mode 100644 index 4e477c7..0000000 --- a/test/ahello-m80/ahello.mac +++ /dev/null @@ -1,20 +0,0 @@ - title M80 CP/M Hello world -.Z80 - -WRITESTR EQU 9h -BDOS EQU 5h - -ASEG -ORG 0100H - -MAIN: - LD C,WRITESTR - LD DE,TXT_HELLO - CALL BDOS - RET - -TXT_HELLO: - DB "M80: Hello world...$" - -END -DSEG diff --git a/test/ahello-sdcc/0module.mk b/test/ahello-sdcc/0module.mk deleted file mode 100644 index 61c2be6..0000000 --- a/test/ahello-sdcc/0module.mk +++ /dev/null @@ -1,27 +0,0 @@ - -TEST_AHELLO_SDCC := $(PATH_BIN)/test/ahello-sdcc -BUILD_HELP += \\n\\t* $(TEST_AHELLO_SDCC)/ahello.com\\n\\t* test-ahello-sdcc-run\\n\\t* test-ahello-sdcc-assert - -$(TEST_AHELLO_SDCC): - $(call mb_mkdir,$(TEST_AHELLO_SDCC)) - -$(TEST_AHELLO_SDCC)/%.rel: test/ahello-sdcc/%.asm | $(TEST_AHELLO_SDCC) - $(call mb_compile_asm,$@,$<) - -$(TEST_AHELLO_SDCC)/ahello.hex: $(TEST_AHELLO_SDCC)/ahello.rel - $(call mb_link_asm_dos,$(TEST_AHELLO_SDCC)/ahello.hex,$(TEST_AHELLO_SDCC)/ahello.rel) - -$(TEST_AHELLO_SDCC)/ahello.com: $(TEST_AHELLO_SDCC)/ahello.hex - $(call mb_hex2com,$(TEST_AHELLO_SDCC)/ahello.hex,$(TEST_AHELLO_SDCC)/ahello.com) - -.PHONY: test-ahello-sdcc-run -test-ahello-sdcc-run: $(TEST_AHELLO_SDCC)/ahello.com - $(call mb_autoexec_open_gui,$(TEST_AHELLO_SDCC)) - $(call mb_openmsx_dos2,$(TEST_AHELLO_SDCC)) - -.PHONY: test-ahello-sdcc-assert -test-ahello-sdcc-assert: $(TEST_AHELLO_SDCC)/ahello.com - $(call mb_delete,$(TEST_AHELLO_SDCC)/test.out) - $(call mb_autoexec_cmd_test,$(TEST_AHELLO_SDCC),ahello > test.out) - $(call mb_openmsx_dos2,$(TEST_AHELLO_SDCC)) - grep "SDCC: Hello world..." $(TEST_AHELLO_SDCC)/test.out diff --git a/test/ahello/0module.mk b/test/ahello/0module.mk new file mode 100644 index 0000000..b41dfb0 --- /dev/null +++ b/test/ahello/0module.mk @@ -0,0 +1,33 @@ + +ASM_HELLO_NAME := ahello +ASM_HELLO_RUN := run-$(ASM_HELLO_NAME) +ASM_HELLO_TEST := test-$(ASM_HELLO_NAME) +ASM_HELLO_SRC := test/$(ASM_HELLO_NAME) +ASM_HELLO_BIN := $(PATH_BIN)/test/$(ASM_HELLO_NAME) +ASM_HELLO_HEX := $(ASM_HELLO_BIN)/$(ASM_HELLO_NAME).hex +ASM_HELLO_COM := $(ASM_HELLO_BIN)/$(ASM_HELLO_NAME).com +ASM_HELLO_RELS := $(ASM_HELLO_BIN)/$(ASM_HELLO_NAME).rel +ASM_HELLO_CODE := $(ASM_HELLO_SRC)/$(ASM_HELLO_NAME).asm +BUILD_HELP += \\n\\t* $(ASM_HELLO_COM)\\n\\t* $(ASM_HELLO_RUN)\\n\\t* $(ASM_HELLO_TEST) \(Change txt in hello.asm and run again\) + +$(ASM_HELLO_BIN): + $(call mb_mkdir,$(ASM_HELLO_BIN)) + +$(ASM_HELLO_BIN)/%.rel: $(ASM_HELLO_SRC)/%.asm | $(ASM_HELLO_BIN) + $(call mb_compile_asm,$@,$<) + +$(ASM_HELLO_HEX): $(ASM_HELLO_RELS) + $(call mb_link_asm_dos,$(ASM_HELLO_HEX),$(ASM_HELLO_RELS)) + +$(ASM_HELLO_COM): $(ASM_HELLO_HEX) + $(call mb_hex2com,$(ASM_HELLO_HEX),$(ASM_HELLO_COM)) + +$(ASM_HELLO_RUN): $(ASM_HELLO_COM) + $(call mb_autoexec_open_gui,$(ASM_HELLO_BIN)) + $(call mb_openmsx_dos2,$(ASM_HELLO_BIN)) + +$(ASM_HELLO_TEST): $(ASM_HELLO_COM) + $(call mb_delete,$(ASM_HELLO_BIN)/test.out) + $(call mb_autoexec_cmd_test,$(ASM_HELLO_BIN),$(ASM_HELLO_NAME) > test.out) + $(call mb_openmsx_dos2,$(ASM_HELLO_BIN)) + $(call mb_assert_file_equals,$(ASM_HELLO_BIN)/test.out,Hello world...from asm.) diff --git a/test/ahello-sdcc/ahello.asm b/test/ahello/ahello.asm similarity index 94% rename from test/ahello-sdcc/ahello.asm rename to test/ahello/ahello.asm index 5a36e8b..9146d2b 100644 --- a/test/ahello-sdcc/ahello.asm +++ b/test/ahello/ahello.asm @@ -31,7 +31,7 @@ PUT_TXT: JR PUT_TXT TXT_HELLO: - .str "SDCC: Hello world..." + .str "Hello world..." .db 0x1D TXT_HELLO_SRC: