You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2020/02/24 21:37:40 UTC

[incubator-nuttx] 02/03: Extend revised ZDS-II support to z8 and z16f

This is an automated email from the ASF dual-hosted git repository.

aguettouche pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit e6f545beab4e6cfcbe12e1e8bf26c1fcf5b1977d
Author: Gregory Nutt <gn...@nuttx.org>
AuthorDate: Mon Feb 24 13:54:37 2020 -0600

    Extend revised ZDS-II support to z8 and z16f
    
    * tools/zds/zds_Config.mk: Move  boards/z80/ez80/scripts/eZ80_Config.mk to tools/zds/zds_Config.mk where it can be shared by other ZDS-II platforms.
    * boards/z16/z16f:  Duplicate changes for new ZDS-II support from ez80
    * boards/z80/z8:  Duplicate changes for new ZDS-II support from ez80
    * arch/z16/src/z16f/Toolchain.defs:  Create required Toolchain.defs file for Z16f
---
 arch/z16/src/z16f/Toolchain.defs                   | 118 +++++++++
 arch/z80/src/z8/Toolchain.defs                     | 118 ++++++++-
 boards/z16/z16f/z16f2800100zcog/scripts/Make.defs  | 152 +----------
 boards/z80/ez80/ez80f910200kitg/scripts/Make.defs  |   2 +-
 boards/z80/ez80/ez80f910200zco/scripts/Make.defs   |   2 +-
 boards/z80/ez80/makerlisp/scripts/Make.defs        |   2 +-
 boards/z80/ez80/z20x/scripts/Make.defs             |   2 +-
 .../z80/z8/z8encore000zco/configs/ostest/Make.defs | 287 ---------------------
 .../z8encore000zco}/scripts/Make.defs              |  31 ++-
 .../{configs/ostest => scripts}/Make.defs          | 181 +------------
 tools/zds/README.txt                               |   5 +
 .../eZ80_Config.mk => tools/zds/zds_Config.mk      |   6 +-
 tools/zds/zdsar.c                                  |   4 +-
 13 files changed, 273 insertions(+), 637 deletions(-)

diff --git a/arch/z16/src/z16f/Toolchain.defs b/arch/z16/src/z16f/Toolchain.defs
new file mode 100644
index 0000000..3e517a5
--- /dev/null
+++ b/arch/z16/src/z16f/Toolchain.defs
@@ -0,0 +1,118 @@
+############################################################################
+# arch/z16/src/z16f/Toolchain.defs
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+# Setup for the selected toolchain
+
+#
+# The ZiLOG ZDS-II Windows toolchain is the only toolchain available for
+# the ez80.
+#
+
+CONFIG_Z16F_TOOLCHAIN ?= ZDSII
+
+ifeq ($(CONFIG_WINDOWS_CYGWIN),y)
+  WINTOOL = y
+endif
+
+# These are the default directories where the ZDS-II toolchain is installed.
+# NOTE that short 8.3 path names are used in order to avoid spaces.  On my
+# machine I have:
+#
+# Versions 5.0.1
+#   C:\PROGRA~1\ = C:\Program Files\
+#   C:\PROGRA~2\ = C:\Program Files (x86)\
+#
+# Your PC may be configured differently.
+#
+# Version 5.2.1, the default install location is C:\ZiLOG
+
+ifeq ($(CONFIG_Z16F_ZDSII_V511),y)
+INSTALLROOT = C:/PROGRA~2/ZiLOG
+ZDSVERSION := 5.0.1
+else ifeq ($(CONFIG_Z16F_ZDSII_V521),y)
+INSTALLROOT = C:/ZiLOG
+ZDSVERSION := 5.2.1
+endif
+
+ifeq ($(CONFIG_WINDOWS_NATIVE),y)
+  ZDSINSTALLDIR = $(INSTALLROOT)/ZDSII_ZNEO_$(ZDSVERSION)
+  INSTALLDIR = ${shell echo $(ZDSINSTALLDIR)| sed -e "s/\//\\/g"}
+  ZDSBINDIR = $(INSTALLDIR)\bin
+  ZDSSTDINCDIR = $(INSTALLDIR)\include\std
+  ZDSZILOGINCDIR = $(INSTALLDIR)\include\zilog
+  ZDSSTDLIBDIR = $(INSTALLDIR)\lib\std
+  ZDSZILOGLIBDIR = $(INSTALLDIR)\lib\zilog
+else
+  WINTOOL = y
+  ZDSINSTALLDIR = $(INSTALLROOT)/ZDSII_ZNEO_$(ZDSVERSION)
+  INSTALLDIR = ${shell cygpath -u "$(ZDSINSTALLDIR)"}
+  ZDSBINDIR = $(INSTALLDIR)/bin
+  ZDSSTDINCDIR = $(INSTALLDIR)/include/std
+  ZDSZILOGINCDIR = $(INSTALLDIR)/include/zilog
+  ZDSSTDLIBDIR = $(INSTALLDIR)/lib/std
+  ZDSZILOGLIBDIR = $(INSTALLDIR)/lib/zilog
+
+  # These are the same directories but with the directory separator
+  # character swapped as needed by the ZDS-II compiler
+
+  WTOPDIR = ${shell cygpath -w "$(TOPDIR)"}
+  WZDSSTDINCDIR = ${shell cygpath -w "$(ZDSSTDINCDIR)"}
+  WZDSZILOGINCDIR = ${shell cygpath -w "$(ZDSZILOGINCDIR)"}
+  WZDSSTDLIBDIR = ${shell cygpath -w "$(ZDSSTDLIBDIR)"}
+  WZDSZILOGLIBDIR = ${shell cygpath -w "$(ZDSZILOGLIBDIR)"}
+
+  # Escaped versions
+
+  ETOPDIR = ${shell echo "$(WTOPDIR)" | sed -e "s/ /%20/g"}
+  EZDSSTDINCDIR = ${shell echo "$(WZDSSTDINCDIR)" | sed -e "s/ /%20/g"}
+  EZDSZILOGINCDIR = ${shell echo "$(WZDSZILOGINCDIR)" | sed -e "s/ /%20/g"}
+endif
+
+# CPU Identification
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  ARCHOPTIMIZATION = -debug
+  ARCHASMOPTIMIZATION = -debug
+else
+  ARCHOPTIMIZATION = -nodebug
+  ARCHASMOPTIMIZATION = -nodebug
+endif
+
+ifeq ($(CONFIG_DEBUG_NOOPT),y)
+  ARCHOPTIMIZATION += -NOregvar -reduceopt
+else
+  ARCHOPTIMIZATION += -regvar
+endif
+
+# Tool names/paths
+
+CROSSDEV =
+CC = $(ZDSBINDIR)$(DELIM)zneocc.exe
+CPP = gcc -E
+LD = $(ZDSBINDIR)$(DELIM)zneolink.exe
+AS = $(ZDSBINDIR)$(DELIM)zneoasm.exe
+AR = $(ZDSBINDIR)$(DELIM)zneolib.exe
+
+# File extensions
+
+ASMEXT = .asm
+OBJEXT = .obj
+LIBEXT = .lib
+EXEEXT = .hex
diff --git a/arch/z80/src/z8/Toolchain.defs b/arch/z80/src/z8/Toolchain.defs
index 9aaf1b8..21acba1 100644
--- a/arch/z80/src/z8/Toolchain.defs
+++ b/arch/z80/src/z8/Toolchain.defs
@@ -1,7 +1,7 @@
 ############################################################################
 # arch/z80/src/z8/Toolchain.defs
 #
-#   Copyright (C) 2012 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2012, 2020 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <gn...@nuttx.org>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -45,3 +45,119 @@ CONFIG_Z8_TOOLCHAIN ?= ZDSII
 ifeq ($(CONFIG_WINDOWS_CYGWIN),y)
   WINTOOL = y
 endif
+
+# These are the directories where the ZDS-II toolchain is installed.  NOTE
+# that short 8.3 path names are used in order to avoid spaces.  On my machine
+# I have:
+#
+# C:\PROGRA~1\ = C:\Profram Files\
+# C:\PROGRA~2\ = C:\Program Files (x86)\
+#
+# Your PC may be configured differently.
+
+ifeq ($(CONFIG_Z8_ZDSII_V522),y)
+ZDSVERSION = 5.2.2
+else # ifeq ($(CONFIG_Z8_ZDSII_V500),y)
+ZDSVERSION = 5.0.0
+endif
+
+ifeq ($(CONFIG_WINDOWS_NATIVE),y)
+  ZDSINSTALLDIR = C:/PROGRA~2/ZiLOG/ZDSII_Z8Encore!_$(ZDSVERSION)
+  INSTALLDIR = ${shell echo $(ZDSINSTALLDIR)| sed -e "s/\//\\/g"}
+  ZDSBINDIR = $(INSTALLDIR)\bin
+  ZDSSTDINCDIR = $(INSTALLDIR)\include\std
+  ZDSZILOGINCDIR = $(INSTALLDIR)\include\zilog
+ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
+  ZDSDEVINCDIR = $(INSTALLDIR)\Z8Encore_F642X
+endif
+ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
+  ZDSDEVINCDIR = $(INSTALLDIR)\Z8Encore_F640X
+endif
+  ZDSSTDLIBDIR = $(INSTALLDIR)\lib\std
+  ZDSZILOGLIBDIR = $(INSTALLDIR)\lib\zilog
+else
+  WINTOOL = y
+  ZDSINSTALLDIR = C:/PROGRA~2/ZiLOG/ZDSII_Z8Encore!_$(ZDSVERSION)
+  INSTALLDIR = ${shell cygpath -u "$(ZDSINSTALLDIR)"}
+  ZDSBINDIR = $(INSTALLDIR)/bin
+  ZDSSTDINCDIR = $(INSTALLDIR)/include/std
+  ZDSZILOGINCDIR = $(INSTALLDIR)/include/zilog
+ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
+  ZDSDEVINCDIR = $(ZDSZILOGINCDIR)/Z8Encore_F642X
+endif
+ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
+  ZDSDEVINCDIR = $(ZDSZILOGINCDIR)/Z8Encore_F640X
+endif
+  ZDSSTDLIBDIR = $(INSTALLDIR)/lib/std
+  ZDSZILOGLIBDIR = $(INSTALLDIR)/lib/zilog
+
+  # These are the same directories but with the directory separator
+  # character swapped as needed by the ZDS-II compiler
+
+  WTOPDIR = ${shell cygpath -w "$(TOPDIR)"}
+  WZDSSTDINCDIR = ${shell cygpath -w "$(ZDSSTDINCDIR)"}
+  WZDSZILOGINCDIR = ${shell cygpath -w "$(ZDSZILOGINCDIR)"}
+  WZDSDEVINCDIR = ${shell cygpath -w "$(ZDSDEVINCDIR)"}
+  WZDSSTDLIBDIR = ${shell cygpath -w "$(ZDSSTDLIBDIR)"}
+  WZDSZILOGLIBDIR = ${shell cygpath -w "$(ZDSZILOGLIBDIR)"}
+
+  # Escaped versions
+
+  ETOPDIR = ${shell echo "$(WTOPDIR)" | sed -e "s/ /%20/g"}
+  EZDSSTDINCDIR = ${shell echo "$(WZDSSTDINCDIR)" | sed -e "s/ /%20/g"}
+  EZDSZILOGINCDIR = ${shell echo "$(WZDSZILOGINCDIR)" | sed -e "s/ /%20/g"}
+endif
+
+# CPU Identification
+
+ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
+  ARCHFAMILYDEF = _Z8ENCORE_F642X
+  ARCHSERIESDEF = _Z8ENCORE_64K_SERIES
+  ARCHREVAA = -NOrevaa
+ifeq ($(CONFIG_ARCH_CHIP_Z8F6423),y)
+  ARCHCPU = Z8F6423
+  ARCHCPUDEF = _Z8F6423
+endif
+endif
+
+ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
+  ARCHFAMILYDEF = _Z8ENCORE_F640X
+  ARCHSERIESDEF = _Z8ENCORE_640_FAMILY
+  ARCHREVAA = -revaa
+ifeq ($(CONFIG_ARCH_CHIP_Z8F6403),y)
+  ARCHCPU = Z8F6403
+  ARCHCPUDEF = _Z8F6403
+endif
+endif
+
+# Optimization level
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  ARCHOPTIMIZATION += -NOregvar -reduceopt
+  ARCHASMOPTIMIZATION = -debug -sdiopt
+else
+  ARCHOPTIMIZATION += -regvar
+  ARCHASMOPTIMIZATION = -nodebug -sdiopt
+endif
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  ARCHOPTIMIZATION = -debug
+else
+  ARCHOPTIMIZATION = -nodebug
+endif
+
+# Tool names/paths
+
+CROSSDEV =
+CC = ez8cc.exe
+CPP = gcc -E
+LD = ez8link.exe
+AS = ez8asm.exe
+AR = ez8lib.exe
+
+# File extensions
+
+ASMEXT = .asm
+OBJEXT = .obj
+LIBEXT = .lib
+EXEEXT = .hex
diff --git a/boards/z16/z16f/z16f2800100zcog/scripts/Make.defs b/boards/z16/z16f/z16f2800100zcog/scripts/Make.defs
index 456f417..92eae9b 100644
--- a/boards/z16/z16f/z16f2800100zcog/scripts/Make.defs
+++ b/boards/z16/z16f/z16f2800100zcog/scripts/Make.defs
@@ -1,7 +1,7 @@
 ############################################################################
 # boards/z16/z16f/z16f2800100zcog/scripts/Make.defs
 #
-#   Copyright (C) 2014, 2017 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2014, 2017, 2020 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <gn...@nuttx.org>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -35,69 +35,17 @@
 
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
+include ${TOPDIR}/arch/z16/src/z16f/Toolchain.defs
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
-# These are the default directories where the ZDS-II toolchain is installed.
-# NOTE that short 8.3 path names are used in order to avoid spaces.  On my
-# machine I have:
-#
-# Versions 5.0.1
-#   C:\PROGRA~1\ = C:\Program Files\
-#   C:\PROGRA~2\ = C:\Program Files (x86)\
-#
-# Your PC may be configured differently.
-#
-# Version 5.2.1, the default install location is C:\ZiLOG
-
-ifeq ($(CONFIG_Z16F_ZDSII_V511),y)
-INSTALLROOT = C:/PROGRA~2/ZiLOG
-ZDSVERSION := 5.0.1
-else ifeq ($(CONFIG_Z16F_ZDSII_V521),y)
-INSTALLROOT = C:/ZiLOG
-ZDSVERSION := 5.2.1
-endif
+# CFLAGS
 
 ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-  ZDSINSTALLDIR = $(INSTALLROOT)/ZDSII_ZNEO_$(ZDSVERSION)
-  INSTALLDIR = ${shell echo $(ZDSINSTALLDIR)| sed -e "s/\//\\/g"}
-  ZDSBINDIR = $(INSTALLDIR)\bin
-  ZDSSTDINCDIR = $(INSTALLDIR)\include\std
-  ZDSZILOGINCDIR = $(INSTALLDIR)\include\zilog
-  ZDSSTDLIBDIR = $(INSTALLDIR)\lib\std
-  ZDSZILOGLIBDIR = $(INSTALLDIR)\lib\zilog
-
-  # CFLAGs
-
   ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
   EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
   ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
   ARCHUSRINCLUDES = -usrinc:.
 else
-  WINTOOL = y
-  ZDSINSTALLDIR = $(INSTALLROOT)/ZDSII_ZNEO_$(ZDSVERSION)
-  INSTALLDIR = ${shell cygpath -u "$(ZDSINSTALLDIR)"}
-  ZDSBINDIR = $(INSTALLDIR)/bin
-  ZDSSTDINCDIR = $(INSTALLDIR)/include/std
-  ZDSZILOGINCDIR = $(INSTALLDIR)/include/zilog
-  ZDSSTDLIBDIR = $(INSTALLDIR)/lib/std
-  ZDSZILOGLIBDIR = $(INSTALLDIR)/lib/zilog
-
-  # These are the same directories but with the directory separator
-  # character swapped as needed by the ZDS-II compiler
-
-  WTOPDIR = ${shell cygpath -w "$(TOPDIR)"}
-  WZDSSTDINCDIR = ${shell cygpath -w "$(ZDSSTDINCDIR)"}
-  WZDSZILOGINCDIR = ${shell cygpath -w "$(ZDSZILOGINCDIR)"}
-  WZDSSTDLIBDIR = ${shell cygpath -w "$(ZDSSTDLIBDIR)"}
-  WZDSZILOGLIBDIR = ${shell cygpath -w "$(ZDSZILOGLIBDIR)"}
-
-  # Escaped versions
-
-  ETOPDIR = ${shell echo "$(WTOPDIR)" | sed -e "s/ /%20/g"}
-  EZDSSTDINCDIR = ${shell echo "$(WZDSSTDINCDIR)" | sed -e "s/ /%20/g"}
-  EZDSZILOGINCDIR = ${shell echo "$(WZDSZILOGINCDIR)" | sed -e "s/ /%20/g"}
-
-  # CFLAGs
-
   ARCHASMINCLUDES = -include:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
   EARCHASMINCLUDES = -include:'$(ETOPDIR)\include;$(EZDSSTDINCDIR);$(EZDSZILOGINCDIR)'
   ARCHSTDINCLUDES = -stdinc:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
@@ -106,12 +54,6 @@ endif
 
 # Assembler definitions
 
-ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
-  ARCHASMOPTIMIZATION = -debug
-else
-  ARCHASMOPTIMIZATION = -nodebug
-endif
-
 ARCHASMCPUFLAGS = -cpu:Z16F2811AL -NOigcase
 ARCHASMLIST = -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
 ARCHASMWARNINGS = -warn
@@ -120,18 +62,6 @@ AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS)
 
 # Compiler definitions
 
-ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
-  ARCHOPTIMIZATION = -debug
-else
-  ARCHOPTIMIZATION = -nodebug
-endif
-
-ifeq ($(CONFIG_DEBUG_NOOPT),y)
-  ARCHOPTIMIZATION += -NOregvar -reduceopt
-else
-  ARCHOPTIMIZATION += -regvar
-endif
-
 ARCHCPUFLAGS = -chartype:S -model:L -NOmodsect -cpu:Z16F2811AL -NOgenprint \
                -asmsw:" $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)"
 ARCHLIST = -keeplst -NOlist -NOlistinc -NOkeepasm
@@ -153,80 +83,6 @@ ARFLAGS = -quiet -warn
 
 LINKCMDTEMPLATE = $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)z16f2800100zcog$(DELIM)scripts$(DELIM)z16f2800100zcog.linkcmd
 
-# Tool names/paths
-
-CROSSDEV =
-CC = $(ZDSBINDIR)$(DELIM)zneocc.exe
-CPP = gcc -E
-LD = $(ZDSBINDIR)$(DELIM)zneolink.exe
-AS = $(ZDSBINDIR)$(DELIM)zneoasm.exe
-AR = $(ZDSBINDIR)$(DELIM)zneolib.exe
-
-# File extensions
-
-ASMEXT = .asm
-OBJEXT = .obj
-LIBEXT = .lib
-EXEEXT = .hex
-
-# These are the macros that will be used in the NuttX make system
-# to compile and assembly source files and to insert the resulting
-# object files into an archive
-
-ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-
-define PREPROCESS
-	@echo CPP: $1->$2
-	$(Q) "$(CPP)" $(CPPFLAGS) $($(strip $1)_CPPFLAGS) $1 -o $2
-endef
-
-define COMPILE
-	$(Q) "$(CC)" $(CFLAGS) $($(strip $1)_CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
-endef
-
-define ASSEMBLE
-	$(Q) "$(AS)" $(AFLAGS) $($(strip $1)_AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
-endef
-
-define ARCHIVE
-	for %%G in ($(2)) do ( "$(AR)" $(ARFLAGS) $1=-+%%G )
-endef
-
-define CLEAN
-	$(Q) if exist *.obj (del /f /q *.obj)
-	$(Q) if exist *.src (del /f /q *.src)
-	$(Q) if exist *.lib (del /f /q *.lib)
-	$(Q) if exist *.hex (del /f /q *.hex)
-	$(Q) if exist *.lod (del /f /q *.lod)
-	$(Q) if exist *.lst (del /f /q *.lst)
-endef
-
-else
-
-define PREPROCESS
-	@echo "CPP: $1->$2"
-	$(Q) "$(CPP)" $(CPPFLAGS) $($(strip $1)_CPPFLAGS) $1 -o $2
-endef
-
-define COMPILE
-	$(Q) "$(CC)" $(CFLAGS) $($(strip $1)_CFLAGS) `cygpath -w "$1"`
-endef
-
-define ASSEMBLE
-	$(Q) "$(AS)" $(AFLAGS) $($(strip $1)_AFLAGS) `cygpath -w "$1"`
-endef
-
-define ARCHIVE
-	for __obj in $(2) ; do \
-		"$(AR)" $(ARFLAGS) $1=-+$$__obj \
-	done
-endef
-
-define CLEAN
-	$(Q) rm -f *.obj *.src *.lib *.hex *.lod *.lst
-endef
-endif
-
 # Windows native host tool definitions
 
 ifeq ($(CONFIG_WINDOWS_NATIVE),y)
diff --git a/boards/z80/ez80/ez80f910200kitg/scripts/Make.defs b/boards/z80/ez80/ez80f910200kitg/scripts/Make.defs
index 452f5dd..5673ca8 100644
--- a/boards/z80/ez80/ez80f910200kitg/scripts/Make.defs
+++ b/boards/z80/ez80/ez80f910200kitg/scripts/Make.defs
@@ -36,7 +36,7 @@
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
 include ${TOPDIR}/arch/z80/src/ez80/Toolchain.defs
-include $(TOPDIR)/boards/z80/ez80/scripts/ez80_Config.mk
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
 # CFLAGS
 
diff --git a/boards/z80/ez80/ez80f910200zco/scripts/Make.defs b/boards/z80/ez80/ez80f910200zco/scripts/Make.defs
index 65bbffe..f2f587b 100644
--- a/boards/z80/ez80/ez80f910200zco/scripts/Make.defs
+++ b/boards/z80/ez80/ez80f910200zco/scripts/Make.defs
@@ -36,7 +36,7 @@
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
 include ${TOPDIR}/arch/z80/src/ez80/Toolchain.defs
-include $(TOPDIR)/boards/z80/ez80/scripts/ez80_Config.mk
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
 # CFLAGS
 
diff --git a/boards/z80/ez80/makerlisp/scripts/Make.defs b/boards/z80/ez80/makerlisp/scripts/Make.defs
index be7c09a..4af5ba0 100644
--- a/boards/z80/ez80/makerlisp/scripts/Make.defs
+++ b/boards/z80/ez80/makerlisp/scripts/Make.defs
@@ -36,7 +36,7 @@
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
 include ${TOPDIR}/arch/z80/src/ez80/Toolchain.defs
-include $(TOPDIR)/boards/z80/ez80/scripts/ez80_Config.mk
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
 # CFLAGS
 
diff --git a/boards/z80/ez80/z20x/scripts/Make.defs b/boards/z80/ez80/z20x/scripts/Make.defs
index 264f962..6ef267d 100644
--- a/boards/z80/ez80/z20x/scripts/Make.defs
+++ b/boards/z80/ez80/z20x/scripts/Make.defs
@@ -21,7 +21,7 @@
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
 include ${TOPDIR}/arch/z80/src/ez80/Toolchain.defs
-include $(TOPDIR)/boards/z80/ez80/scripts/ez80_Config.mk
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
 # CFLAGS
 
diff --git a/boards/z80/z8/z8encore000zco/configs/ostest/Make.defs b/boards/z80/z8/z8encore000zco/configs/ostest/Make.defs
deleted file mode 100644
index 92c7a6c..0000000
--- a/boards/z80/z8/z8encore000zco/configs/ostest/Make.defs
+++ /dev/null
@@ -1,287 +0,0 @@
-############################################################################
-# boards/z80/z8/z8encore000zco/configs/ostest/Make.defs
-#
-#   Copyright (C) 2008, 2012-2013 Gregory Nutt. All rights reserved.
-#   Author: Gregory Nutt <gn...@nuttx.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in
-#    the documentation and/or other materials provided with the
-#    distribution.
-# 3. Neither the name NuttX nor the names of its contributors may be
-#    used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-############################################################################
-
-include $(TOPDIR)/.config
-include $(TOPDIR)/tools/Config.mk
-
-# These are the directories where the ZDS-II toolchain is installed.  NOTE
-# that short 8.3 path names are used in order to avoid spaces.  On my machine
-# I have:
-#
-# C:\PROGRA~1\ = C:\Profram Files\
-# C:\PROGRA~2\ = C:\Program Files (x86)\
-#
-# Your PC may be configured differently.
-
-ifeq ($(CONFIG_Z8_ZDSII_V522),y)
-ZDSVERSION = 5.2.2
-else # ifeq ($(CONFIG_Z8_ZDSII_V500),y)
-ZDSVERSION = 5.0.0
-endif
-
-ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-  ZDSINSTALLDIR = C:/PROGRA~2/ZiLOG/ZDSII_Z8Encore!_$(ZDSVERSION)
-  INSTALLDIR = ${shell echo $(ZDSINSTALLDIR)| sed -e "s/\//\\/g"}
-  ZDSBINDIR = $(INSTALLDIR)\bin
-  ZDSSTDINCDIR = $(INSTALLDIR)\include\std
-  ZDSZILOGINCDIR = $(INSTALLDIR)\include\zilog
-ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
-  ZDSDEVINCDIR = $(INSTALLDIR)\Z8Encore_F642X
-endif
-ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
-  ZDSDEVINCDIR = $(INSTALLDIR)\Z8Encore_F640X
-endif
-  ZDSSTDLIBDIR = $(INSTALLDIR)\lib\std
-  ZDSZILOGLIBDIR = $(INSTALLDIR)\lib\zilog
-
-  # CFLAGs
-
-  ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
-  EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
-  ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR);$(ZDSDEVINCDIR)
-  ARCHUSRINCLUDES = -usrinc:.
-else
-  WINTOOL = y
-  ZDSINSTALLDIR = C:/PROGRA~2/ZiLOG/ZDSII_Z8Encore!_$(ZDSVERSION)
-  INSTALLDIR = ${shell cygpath -u "$(ZDSINSTALLDIR)"}
-  ZDSBINDIR = $(INSTALLDIR)/bin
-  ZDSSTDINCDIR = $(INSTALLDIR)/include/std
-  ZDSZILOGINCDIR = $(INSTALLDIR)/include/zilog
-ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
-  ZDSDEVINCDIR = $(ZDSZILOGINCDIR)/Z8Encore_F642X
-endif
-ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
-  ZDSDEVINCDIR = $(ZDSZILOGINCDIR)/Z8Encore_F640X
-endif
-  ZDSSTDLIBDIR = $(INSTALLDIR)/lib/std
-  ZDSZILOGLIBDIR = $(INSTALLDIR)/lib/zilog
-
-  # These are the same directories but with the directory separator
-  # character swapped as needed by the ZDS-II compiler
-
-  WTOPDIR = ${shell cygpath -w "$(TOPDIR)"}
-  WZDSSTDINCDIR = ${shell cygpath -w "$(ZDSSTDINCDIR)"}
-  WZDSZILOGINCDIR = ${shell cygpath -w "$(ZDSZILOGINCDIR)"}
-  WZDSDEVINCDIR = ${shell cygpath -w "$(ZDSDEVINCDIR)"}
-  WZDSSTDLIBDIR = ${shell cygpath -w "$(ZDSSTDLIBDIR)"}
-  WZDSZILOGLIBDIR = ${shell cygpath -w "$(ZDSZILOGLIBDIR)"}
-
-  # Escaped versions
-
-  ETOPDIR = ${shell echo "$(WTOPDIR)" | sed -e "s/ /%20/g"}
-  EZDSSTDINCDIR = ${shell echo "$(WZDSSTDINCDIR)" | sed -e "s/ /%20/g"}
-  EZDSZILOGINCDIR = ${shell echo "$(WZDSZILOGINCDIR)" | sed -e "s/ /%20/g"}
-
-  # CFLAGs
-
-  ARCHASMINCLUDES = -include:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
-  EARCHASMINCLUDES = -include:'$(ETOPDIR)\include;$(EZDSSTDINCDIR);$(EZDSZILOGINCDIR)'
-  ARCHSTDINCLUDES = -stdinc:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR);$(WZDSDEVINCDIR)'
-  ARCHUSRINCLUDES = -usrinc:'.'
-endif
-
-# Assembler definitions
-
-ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
-  ARCHFAMILYDEF = _Z8ENCORE_F642X
-  ARCHSERIESDEF = _Z8ENCORE_64K_SERIES
-  ARCHREVAA = -NOrevaa
-ifeq ($(CONFIG_ARCH_CHIP_Z8F6423),y)
-  ARCHCPU = Z8F6423
-  ARCHCPUDEF = _Z8F6423
-endif
-endif
-
-ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
-  ARCHFAMILYDEF = _Z8ENCORE_F640X
-  ARCHSERIESDEF = _Z8ENCORE_640_FAMILY
-  ARCHREVAA = -revaa
-ifeq ($(CONFIG_ARCH_CHIP_Z8F6403),y)
-  ARCHCPU = Z8F6403
-  ARCHCPUDEF = _Z8F6403
-endif
-endif
-
-ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
-  ARCHASMOPTIMIZATION = -debug -sdiopt
-else
-  ARCHASMOPTIMIZATION = -nodebug -sdiopt
-endif
-
-ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase $(ARCHREVAA)
-ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
-ARCHASMWARNINGS = -warn
-ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHSERIESDEF)=1 -define:$(ARCHFAMILYDEF)=1 -define:__ASSEMBLY__
-AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
-
-# Compiler definitions
-
-ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
-  ARCHOPTIMIZATION = -debug
-else
-  ARCHOPTIMIZATION = -nodebug
-endif
-
-ifeq ($(CONFIG_DEBUG_NOOPT),y)
-  ARCHOPTIMIZATION += -NOregvar -reduceopt
-else
-  ARCHOPTIMIZATION += -regvar
-endif
-
-ARCHCPUFLAGS = -chartype:S -model:L -const:RAM -NOoptlink -promote -cpu:$(ARCHCPU) $(ARCHREVAA) -NOgenprintf \
-			   -asmsw:" $(ARCHASMCPUFLAGS) $(EARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)"
-ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
-ARCHPICFLAGS =
-ARCHWARNINGS = -warn
-ARCHDEFINES = -define:$(ARCHFAMILYDEF) -define:$(ARCHCPUDEF) -define:$(ARCHSERIESDEF)
-ARCHINCLUDES = $(ARCHSTDINCLUDES) $(ARCHUSRINCLUDES)
-CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
-
-CPPDEFINES = -D$(ARCHFAMILYDEF) -D$(ARCHCPUDEF) -D$(ARCHSERIESDEF) -D__ASSEMBLY__
-CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
-CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
-
-# Librarian definitions
-
-ARFLAGS = -quiet -warn
-
-# Linker definitions
-
-LINKCMDTEMPLATE = $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD)$(DELIM)configs$(DELIM)ostest$(DELIM)ostest.linkcmd
-
-# Tool names/paths
-
-CROSSDEV =
-CC = ez8cc.exe
-CPP = gcc -E
-LD = ez8link.exe
-AS = ez8asm.exe
-AR = ez8lib.exe
-
-# File extensions
-
-ASMEXT = .asm
-OBJEXT = .obj
-LIBEXT = .lib
-EXEEXT = .hex
-
-# These are the macros that will be used in the NuttX make system
-# to compile and assembly source files and to insert the resulting
-# object files into an archive
-
-ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-
-define PREPROCESS
-	@echo CPP: $1->$2
-	$(Q) "$(CPP)" $(CPPFLAGS) $($(strip $1)_CPPFLAGS) $1 -o $2
-endef
-
-define COMPILE
-	$(Q) "$(CC)" $(CFLAGS) $($(strip $1)_CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
-endef
-
-define ASSEMBLE
-	$(Q) "$(AS)" $(AFLAGS) $($(strip $1)_AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
-endef
-
-define ARCHIVE
-	for %%G in ($(2)) do ( "$(AR)" $(ARFLAGS) $1=-+%%G )
-endef
-
-define CLEAN
-	$(Q) if exist *.obj (del /f /q *.obj)
-	$(Q) if exist *.src (del /f /q *.src)
-	$(Q) if exist *.lib (del /f /q *.lib)
-	$(Q) if exist *.hex (del /f /q *.hex)
-	$(Q) if exist *.lod (del /f /q *.lod)
-	$(Q) if exist *.lst (del /f /q *.lst)
-endef
-
-else
-
-define PREPROCESS
-	@echo "CPP: $1->$2"
-	$(Q) "$(CPP)" $(CPPFLAGS) $($(strip $1)_CPPFLAGS) $1 -o $2
-endef
-
-define COMPILE
-	$(Q) (wfile=`cygpath -w "$1"`; "$(CC)" $(CFLAGS) $($(strip $1)_CFLAGS) $$wfile)
-endef
-
-define ASSEMBLE
-	$(Q) (wfile=`cygpath -w "$1"`; "$(AS)" $(AFLAGS) $($(strip $1)_AFLAGS) $$wfile)
-endef
-
-define ARCHIVE
-	for __obj in $(2) ; do \
-		"$(AR)" $(ARFLAGS) $1=-+$$__obj \
-	done
-endef
-
-define CLEAN
-	$(Q) rm -f *.obj *.src *.lib *.hex *.lod *.lst
-endef
-endif
-
-# Windows native host tool definitions
-
-ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-  HOSTCC = mingw32-gcc.exe
-  HOSTINCLUDES = -I.
-  HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
-  HOSTLDFLAGS =
-  HOSTEXEEXT = .exe
-
-  # Windows-native host tools
-
-  MKDEP = $(TOPDIR)\tools\mkdeps.exe --winnative
-else
-
-# Linux/Cygwin host tool definitions
-
-  HOSTCC = gcc
-  HOSTINCLUDES = -I.
-  HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
-  HOSTLDFLAGS =
-
-  # This is the tool to use for dependencies (i.e., none)
-
-  MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mkwindeps.sh
-
-  # ZDS-II cannot follow Cygwin soft links, so we will have to use directory copies
-
-  DIRLINK = $(TOPDIR)$(DELIM)tools$(DELIM)copydir.sh
-  DIRUNLINK = $(TOPDIR)$(DELIM)tools$(DELIM)unlink.sh
-endif
diff --git a/boards/z80/ez80/ez80f910200zco/scripts/Make.defs b/boards/z80/z8/z8encore000zco/scripts/Make.defs
similarity index 78%
copy from boards/z80/ez80/ez80f910200zco/scripts/Make.defs
copy to boards/z80/z8/z8encore000zco/scripts/Make.defs
index 65bbffe..72402ee 100644
--- a/boards/z80/ez80/ez80f910200zco/scripts/Make.defs
+++ b/boards/z80/z8/z8encore000zco/scripts/Make.defs
@@ -1,7 +1,7 @@
 ############################################################################
-# boards/z80/ez80/ez80f910200zco/scripts/Make.defs
+# boards/z80/z8/z8encore000zco/scripts/ostest/Make.defs
 #
-#   Copyright (C) 2009, 2012-2013, 2020 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008, 2012-2013, 2020 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <gn...@nuttx.org>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -35,43 +35,43 @@
 
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
-include ${TOPDIR}/arch/z80/src/ez80/Toolchain.defs
-include $(TOPDIR)/boards/z80/ez80/scripts/ez80_Config.mk
+include ${TOPDIR}/arch/z80/src/z8/Toolchain.defs
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
 # CFLAGS
 
 ifeq ($(CONFIG_WINDOWS_NATIVE),y)
   ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
   EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
-  ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
+  ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR);$(ZDSDEVINCDIR)
   ARCHUSRINCLUDES = -usrinc:.
 else
   ARCHASMINCLUDES = -include:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
   EARCHASMINCLUDES = -include:'$(ETOPDIR)\include;$(EZDSSTDINCDIR);$(EZDSZILOGINCDIR)'
-  ARCHSTDINCLUDES = -stdinc:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
+  ARCHSTDINCLUDES = -stdinc:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR);$(WZDSDEVINCDIR)'
   ARCHUSRINCLUDES = -usrinc:'.'
 endif
 
 # Assembler definitions
 
-ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase
+ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase $(ARCHREVAA)
 ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
 ARCHASMWARNINGS = -warn
-ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHFAMILYDEF)=1 -define:__ASSEMBLY__
+ARCHASMDEFINES = -define:$(ARCHCPUDEF)=1 -define:$(ARCHSERIESDEF)=1 -define:$(ARCHFAMILYDEF)=1 -define:__ASSEMBLY__
 AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)
 
 # Compiler definitions
 
-ARCHCPUFLAGS = -chartype:S -promote -cpu:$(ARCHCPU) -NOgenprintf -NOmodsect \
-               -asmsw:" $(ARCHASMCPUFLAGS) $(EARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHOPTIMIZATION)"
+ARCHCPUFLAGS = -chartype:S -model:L -const:RAM -NOoptlink -promote -cpu:$(ARCHCPU) $(ARCHREVAA) -NOgenprintf \
+			   -asmsw:" $(ARCHASMCPUFLAGS) $(EARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)"
 ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
 ARCHPICFLAGS =
 ARCHWARNINGS = -warn
-ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILYDEF)
+ARCHDEFINES = -define:$(ARCHFAMILYDEF) -define:$(ARCHCPUDEF) -define:$(ARCHSERIESDEF)
 ARCHINCLUDES = $(ARCHSTDINCLUDES) $(ARCHUSRINCLUDES)
 CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHLIST) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
 
-CPPDEFINES = -D$(ARCHFAMILYDEF) -D$(ARCHCPUDEF) -D__ASSEMBLY__
+CPPDEFINES = -D$(ARCHFAMILYDEF) -D$(ARCHCPUDEF) -D$(ARCHSERIESDEF) -D__ASSEMBLY__
 CPPINCLUDES = -I$(TOPDIR)$(DELIM)include
 CPPFLAGS = $(CPPDEFINES) $(CPPINCLUDES)
 
@@ -81,7 +81,7 @@ ARFLAGS = -quiet -warn
 
 # Linker definitions
 
-LINKCMDTEMPLATE = $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD)$(DELIM)scripts$(DELIM)ez80f910200zco.linkcmd
+LINKCMDTEMPLATE = $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD)$(DELIM)configs$(DELIM)ostest$(DELIM)ostest.linkcmd
 
 # Windows native host tool definitions
 
@@ -94,8 +94,7 @@ ifeq ($(CONFIG_WINDOWS_NATIVE),y)
 
   # Windows-native host tools
 
-  #MKDEP = $(TOPDIR)\tools\mkdeps.exe --winnative
-  MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mknulldeps.sh
+  MKDEP = $(TOPDIR)\tools\mkdeps.exe --winnative
 else
 
 # Linux/Cygwin host tool definitions
@@ -107,7 +106,7 @@ else
 
   # This is the tool to use for dependencies (i.e., none)
 
-  MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mknulldeps.sh
+  MKDEP = $(TOPDIR)$(DELIM)tools$(DELIM)mkwindeps.sh
 
   # ZDS-II cannot follow Cygwin soft links, so we will have to use directory copies
 
diff --git a/boards/z80/z8/z8f64200100kit/configs/ostest/Make.defs b/boards/z80/z8/z8f64200100kit/scripts/Make.defs
similarity index 50%
rename from boards/z80/z8/z8f64200100kit/configs/ostest/Make.defs
rename to boards/z80/z8/z8f64200100kit/scripts/Make.defs
index ed9ba2a..ab663d0 100644
--- a/boards/z80/z8/z8f64200100kit/configs/ostest/Make.defs
+++ b/boards/z80/z8/z8f64200100kit/scripts/Make.defs
@@ -1,7 +1,7 @@
 ############################################################################
 # boards/z80/z8/z8f64200100kit/configs/ostest/Make.defs
 #
-#   Copyright (C) 2008, 2012-2013 Gregory Nutt. All rights reserved.
+#   Copyright (C) 2008, 2012-2013, 2020 Gregory Nutt. All rights reserved.
 #   Author: Gregory Nutt <gn...@nuttx.org>
 #
 # Redistribution and use in source and binary forms, with or without
@@ -35,77 +35,16 @@
 
 include $(TOPDIR)/.config
 include $(TOPDIR)/tools/Config.mk
+include ${TOPDIR}/arch/z80/src/z8/Toolchain.defs
+include $(TOPDIR)/tools/zds/zds_Config.mk
 
-# These are the directories where the ZDS-II toolchain is installed.  NOTE
-# that short 8.3 path names are used in order to avoid spaces.  On my machine
-# I have:
-#
-# C:\PROGRA~1\ = C:\Profram Files\
-# C:\PROGRA~2\ = C:\Program Files (x86)\
-#
-# Your PC may be configured differently.
-
-ifeq ($(CONFIG_Z8_ZDSII_V522),y)
-ZDSVERSION = 5.2.2
-else # ifeq ($(CONFIG_Z8_ZDSII_V500),y)
-ZDSVERSION = 5.0.0
-endif
-
+# CFLAGS
 ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-  ZDSINSTALLDIR = C:/PROGRA~2/ZiLOG/ZDSII_Z8Encore!_$(ZDSVERSION)
-  INSTALLDIR = ${shell echo $(ZDSINSTALLDIR)| sed -e "s/\//\\/g"}
-  ZDSBINDIR = $(INSTALLDIR)\bin
-  ZDSSTDINCDIR = $(INSTALLDIR)\include\std
-  ZDSZILOGINCDIR = $(INSTALLDIR)\include\zilog
-ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
-  ZDSDEVINCDIR = $(INSTALLDIR)\Z8Encore_F642X
-endif
-ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
-  ZDSDEVINCDIR = $(INSTALLDIR)\Z8Encore_F640X
-endif
-  ZDSSTDLIBDIR = $(INSTALLDIR)\lib\std
-  ZDSZILOGLIBDIR = $(INSTALLDIR)\lib\zilog
-
-  # CFLAGs
-
   ARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
   EARCHASMINCLUDES = -include:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR)
   ARCHSTDINCLUDES = -stdinc:$(TOPDIR)\include;$(ZDSSTDINCDIR);$(ZDSZILOGINCDIR);$(ZDSDEVINCDIR)
   ARCHUSRINCLUDES = -usrinc:.
 else
-  WINTOOL = y
-  ZDSINSTALLDIR = C:/PROGRA~2/ZiLOG/ZDSII_Z8Encore!_$(ZDSVERSION)
-  INSTALLDIR = ${shell cygpath -u "$(ZDSINSTALLDIR)"}
-  ZDSBINDIR = $(INSTALLDIR)/bin
-  ZDSSTDINCDIR = $(INSTALLDIR)/include/std
-  ZDSZILOGINCDIR = $(INSTALLDIR)/include/zilog
-ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
-  ZDSDEVINCDIR = $(ZDSZILOGINCDIR)/Z8Encore_F642X
-endif
-ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
-  ZDSDEVINCDIR = $(ZDSZILOGINCDIR)/Z8Encore_F640X
-endif
-  ZDSSTDLIBDIR = $(INSTALLDIR)/lib/std
-  ZDSZILOGLIBDIR = $(INSTALLDIR)/lib/zilog
-
-  # These are the same directories but with the directory separator
-  # character swapped as needed by the ZDS-II compiler
-
-  WTOPDIR = ${shell cygpath -w "$(TOPDIR)"}
-  WZDSSTDINCDIR = ${shell cygpath -w "$(ZDSSTDINCDIR)"}
-  WZDSZILOGINCDIR = ${shell cygpath -w "$(ZDSZILOGINCDIR)"}
-  WZDSDEVINCDIR = ${shell cygpath -w "$(ZDSDEVINCDIR)"}
-  WZDSSTDLIBDIR = ${shell cygpath -w "$(ZDSSTDLIBDIR)"}
-  WZDSZILOGLIBDIR = ${shell cygpath -w "$(ZDSZILOGLIBDIR)"}
-
-  # Escaped versions
-
-  ETOPDIR = ${shell echo "$(WTOPDIR)" | sed -e "s/ /%20/g"}
-  EZDSSTDINCDIR = ${shell echo "$(WZDSSTDINCDIR)" | sed -e "s/ /%20/g"}
-  EZDSZILOGINCDIR = ${shell echo "$(WZDSZILOGINCDIR)" | sed -e "s/ /%20/g"}
-
-  # CFLAGs
-
   ARCHASMINCLUDES = -include:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR)'
   EARCHASMINCLUDES = -include:'$(ETOPDIR)\include;$(EZDSSTDINCDIR);$(EZDSZILOGINCDIR)'
   ARCHSTDINCLUDES = -stdinc:'$(WTOPDIR)\include;$(WZDSSTDINCDIR);$(WZDSZILOGINCDIR);$(WZDSDEVINCDIR)'
@@ -114,32 +53,6 @@ endif
 
 # Assembler definitions
 
-ifeq ($(CONFIG_ARCH_CHIP_Z8F642X),y)
-  ARCHFAMILYDEF = _Z8ENCORE_F642X
-  ARCHSERIESDEF = _Z8ENCORE_64K_SERIES
-  ARCHREVAA = -NOrevaa
-ifeq ($(CONFIG_ARCH_CHIP_Z8F6423),y)
-  ARCHCPU = Z8F6423
-  ARCHCPUDEF = _Z8F6423
-endif
-endif
-
-ifeq ($(CONFIG_ARCH_CHIP_Z8F640X),y)
-  ARCHFAMILYDEF = _Z8ENCORE_F640X
-  ARCHSERIESDEF = _Z8ENCORE_640_FAMILY
-  ARCHREVAA = -revaa
-ifeq ($(CONFIG_ARCH_CHIP_Z8F6403),y)
-  ARCHCPU = Z8F6403
-  ARCHCPUDEF = _Z8F6403
-endif
-endif
-
-ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
-  ARCHASMOPTIMIZATION = -debug -sdiopt
-else
-  ARCHASMOPTIMIZATION = -nodebug -sdiopt
-endif
-
 ARCHASMCPUFLAGS = -cpu:$(ARCHCPU) -NOigcase $(ARCHREVAA)
 ARCHASMLIST = -list -NOlistmac -name -pagelen:56 -pagewidth:80 -quiet
 ARCHASMWARNINGS = -warn
@@ -148,18 +61,6 @@ AFLAGS = $(ARCHASMCPUFLAGS) $(ARCHASMINCLUDES) $(ARCHASMLIST) $(ARCHASMWARNINGS)
 
 # Compiler definitions
 
-ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
-  ARCHOPTIMIZATION = -debug
-else
-  ARCHOPTIMIZATION = -nodebug
-endif
-
-ifeq ($(CONFIG_DEBUG_NOOPT),y)
-  ARCHOPTIMIZATION += -NOregvar -reduceopt
-else
-  ARCHOPTIMIZATION += -regvar
-endif
-
 ARCHCPUFLAGS = -chartype:S -model:L -const:RAM -NOoptlink -promote -cpu:$(ARCHCPU) $(ARCHREVAA) -NOgenprintf \
 			   -asmsw:" $(ARCHASMCPUFLAGS) $(EARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)"
 ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm
@@ -181,80 +82,6 @@ ARFLAGS = -quiet -warn
 
 LINKCMDTEMPLATE = $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)$(CONFIG_ARCH_BOARD)$(DELIM)configs$(DELIM)ostest$(DELIM)ostest.linkcmd
 
-# Tool names/paths
-
-CROSSDEV =
-CC = ez8cc.exe
-CPP = gcc -E
-LD = ez8link.exe
-AS = ez8asm.exe
-AR = ez8lib.exe
-
-# File extensions
-
-ASMEXT = .asm
-OBJEXT = .obj
-LIBEXT = .lib
-EXEEXT = .hex
-
-# These are the macros that will be used in the NuttX make system
-# to compile and assembly source files and to insert the resulting
-# object files into an archive
-
-ifeq ($(CONFIG_WINDOWS_NATIVE),y)
-
-define PREPROCESS
-	@echo CPP: $1->$2
-	$(Q) "$(CPP)" $(CPPFLAGS) $($(strip $1)_CPPFLAGS) $1 -o $2
-endef
-
-define COMPILE
-	$(Q) "$(CC)" $(CFLAGS) $($(strip $1)_CFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
-endef
-
-define ASSEMBLE
-	$(Q) "$(AS)" $(AFLAGS) $($(strip $1)_AFLAGS) ${shell echo $1 | sed -e "s/\//\\/g"}
-endef
-
-define ARCHIVE
-	for %%G in ($(2)) do ( "$(AR)" $(ARFLAGS) $1=-+%%G )
-endef
-
-define CLEAN
-	$(Q) if exist *.obj (del /f /q *.obj)
-	$(Q) if exist *.src (del /f /q *.src)
-	$(Q) if exist *.lib (del /f /q *.lib)
-	$(Q) if exist *.hex (del /f /q *.hex)
-	$(Q) if exist *.lod (del /f /q *.lod)
-	$(Q) if exist *.lst (del /f /q *.lst)
-endef
-
-else
-
-define PREPROCESS
-	@echo "CPP: $1->$2"
-	$(Q) "$(CPP)" $(CPPFLAGS) $($(strip $1)_CPPFLAGS) $1 -o $2
-endef
-
-define COMPILE
-	$(Q) (wfile=`cygpath -w "$1"`; "$(CC)" $(CFLAGS) $($(strip $1)_CFLAGS) $$wfile)
-endef
-
-define ASSEMBLE
-	$(Q) (wfile=`cygpath -w "$1"`; "$(AS)" $(AFLAGS) $($(strip $1)_AFLAGS) $$wfile)
-endef
-
-define ARCHIVE
-	for __obj in $(2) ; do \
-		"$(AR)" $(ARFLAGS) $1=-+$$__obj \
-	done
-endef
-
-define CLEAN
-	$(Q) rm -f *.obj *.src *.lib *.hex *.lod *.lst
-endef
-endif
-
 # Windows native host tool definitions
 
 ifeq ($(CONFIG_WINDOWS_NATIVE),y)
diff --git a/tools/zds/README.txt b/tools/zds/README.txt
index 4f1e16c..fbcf546 100644
--- a/tools/zds/README.txt
+++ b/tools/zds/README.txt
@@ -7,6 +7,11 @@ tools/zds/zdsar.c:  This is a wrapper around the ZDS_II librarian.  It
   the build files but it also improves performance and, more importantly,i
   provides a common solution for the Windows native build case.
 
+tools/zds/zds_Config.mk:  This makefile fragment is include by ZDS-II
+  Make.defs files after including tools/Config.mk.  The definitions in this
+  file override some of the the definitions in tools/Config.mk to customize
+  the build for use with the ZDS-II tools.
+
 These tools should work with all ZDS-II based platforms including z8, zNeo,
 and ez80.
 
diff --git a/boards/z80/ez80/scripts/eZ80_Config.mk b/tools/zds/zds_Config.mk
similarity index 96%
rename from boards/z80/ez80/scripts/eZ80_Config.mk
rename to tools/zds/zds_Config.mk
index 7a4f98a..a7192cf 100644
--- a/boards/z80/ez80/scripts/eZ80_Config.mk
+++ b/tools/zds/zds_Config.mk
@@ -1,5 +1,5 @@
 ############################################################################
-# boards/z80/ez80/scripts/eZ80_Config.defs
+# tools/zds/zds_Config.defs
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
@@ -78,7 +78,7 @@ endef
 else
 
 define CONDMOVE
-	$(Q) if [ ! -e $(1) && -e $(2) ]; then mv -f $(2) $(3) ; fi
+	$(Q) if [ ! -e $(1) -a -e $(2) ] ; then mv -f $(2) $(3) ; fi
 endef
 
 define MVOBJS
@@ -104,7 +104,7 @@ endif
 # ARCHIVE will move a list of object files into the library.  This is
 # complex because:
 #
-# 1. The ez80lib.exe archive expects the library to reside within the
+# 1. The ZDS-II librarian expects the library to reside within the
 #    current directory; it expects the library argument to a file name
 #    like foo.lib.
 # 2. Normally, the library file is in the current directory, but other
diff --git a/tools/zds/zdsar.c b/tools/zds/zdsar.c
index 8026d11..2f3891a 100644
--- a/tools/zds/zdsar.c
+++ b/tools/zds/zdsar.c
@@ -78,7 +78,9 @@
 /* Maximum objects per librarian call.
  *
  * REVISIT:  The librarian is supposed to handle multiple object insertions
- * per call, but my experience is that it is unreliable in that case.
+ * per call, but my experience was that it was unreliable in that case.  That
+ * may have improved, however, and perhaps we can increase MAX_OPBJEXT.. TRY
+ * IT!
  */
 
 #define MAX_OBJECTS 1 /* 64 */