diff --git a/!MkExportAll,fd7 b/!MkExportAll,fd7
new file mode 100644
index 0000000000000000000000000000000000000000..8ba44e3cbfa967fa6deee34170297e80a4770c55
--- /dev/null
+++ b/!MkExportAll,fd7
@@ -0,0 +1,16 @@
+| Copyright 2008 Castle Technology Ltd
+|
+| Licensed 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.
+|
+Dir <Obey$Dir>
+amu_machine export OPTIONS=ALL
diff --git a/Makefile b/Makefile
index 5358a6d46c3c5c19ebf6e314f4555d9e9b0d943d..988abd17320813297caa73ea21daa6aa058dc0ee 100644
--- a/Makefile
+++ b/Makefile
@@ -43,27 +43,7 @@ HDRDIR = ${TOPDIR}.Global
 HDIR   = <CExport$dir>
 LIBDIR = <Lib$Dir>
 
-# Generic options:
-#
-MKDIR    = do mkdir -p
-AC       = access
-AS       = objasm
-LD       = link
-CP       = copy
-RM       = remove
-WIPE     = -wipe
-TOKENISE = tokenise
-HDR2H    = build:Hdr2H
-STRIP    = stripdepnd
-
-CFLAGS   = -c -depend !Depend ${THROWBACK} -IC:
-AFLAGS   = -depend !Depend ${THROWBACK}
-LDFLAGS  = -bin
-ACFLAGS  = rw/r
-CPFLAGS  = ~cfr~v
-WFLAGS   = FR~C~V
-
-TOKENS   = Hdr:Tokens
+include StdTools
 
 #
 # Program specific options:
@@ -85,7 +65,6 @@ EXPORTS   = \
  ${HDRDIR}.Devices \
  ${HDRDIR}.DevNos \
  ${HDRDIR}.DrawObj \
- ${HDRDIR}.DrawTags \
  ${HDRDIR}.ExtraLong \
  ${HDRDIR}.FDC.FDC711 \
  ${HDRDIR}.FileTypes \
@@ -116,7 +95,6 @@ EXPORTS   = \
  ${HDRDIR}.PDumperReg \
  ${HDRDIR}.PoduleReg \
  ${HDRDIR}.Pointer \
- ${HDRDIR}.PrintTypes \
  ${HDRDIR}.Proc \
  ${HDRDIR}.Services \
  ${HDRDIR}.Sprite \
@@ -135,7 +113,6 @@ EXPORTS   = \
  ${HDIR}.Global.h.Devices \
  ${HDIR}.Global.h.DevNos \
  ${HDIR}.Global.h.DrawObj \
- ${HDIR}.Global.h.DrawTags \
  ${HDIR}.Global.h.EnvNumbers \
  ${HDIR}.Global.h.FileTypes \
  ${HDIR}.Global.h.FreeWay \
@@ -160,12 +137,6 @@ EXPORTS   = \
  ${HDIR}.Global.IO.h.GenericIO \
  ${HDIR}.Global.IO.h.IOMD \
 
-#
-# Derived assembler header files
-#
-FILETYPES = Derived.FileTypes
-SWIS      = Derived.SWIs
-
 #
 # Generic rules:
 #
@@ -191,15 +162,10 @@ Dirs:
 	${MKDIR} ${HDIR}.Global.h
 	${MKDIR} ${HDIR}.Global.IO.h
 	${MKDIR} ${HDIR}.Interface.h
-	${MKDIR} ${HDIR}.Interface2.h
 	${MKDIR} ${LIBDIR}
-	${MKDIR} o
 
 clean:
-	${RM} ${FILETYPES}
-	${RM} ${SWIS}
-	${WIPE} o ${WFLAGS}
-	@echo ${COMPONENT}: derived headers cleaned
+	@echo ${COMPONENT}: nothing to clean
 
 #
 # Special rule for exporting all ImageSize, Machine and UserIF files.
@@ -211,87 +177,58 @@ ALL: ${HDRDIR}.Machine.Machine ${HDRDIR}.UserIF.UserIF ${HDRDIR}.ImageSize.<Imag
 	${CP} hdr.ImageSize ${HDRDIR}.ImageSize ${CPFLAGS}
 	${CP} hdr.APCS ${HDRDIR}.APCS ${CPFLAGS}
 
-#
-# Rules for deriving headers:
-#
-${FILETYPES}: o.FileTypes
-	${LD} ${LDFLAGS} -o $@ o.FileTypes
-	stripnulls $@
-	${AC} $@ ${ACFLAGS}
-	settype $@ text
-
-o.FileTypes: Register.ISV-Types s.DoTypes
-	${AS} ${AFLAGS} s.DoTypes -o $@
-
-${SWIS}: o.SWIs
-	${LD} -bin -o $@ o.SWIs
-	stripnulls $@
-	${AC} $@ ${ACFLAGS}
-	settype $@ text
-
-o.SWIs: Register.ISV-SWIs s.DoSWIs
-	${AS} ${AFLAGS} s.DoSWIs -o $@
-
 #
 # Rules for exporting:
 #
 
 # Registration headers:
-${HDRDIR}.AUN:        Register.AUN;            ${CP} Register.AUN        $@ ${CPFLAGS}
-${HDRDIR}.Countries:  Register.Countries;      ${CP} Register.Countries  $@ ${CPFLAGS}
-${HDRDIR}.Devices:    Register.Devices;        ${CP} Register.Devices    $@ ${CPFLAGS}
-${HDRDIR}.DevNos:     Register.DevNos;         ${CP} Register.DevNos     $@ ${CPFLAGS}
-${HDRDIR}.DrawObj:    Register.DrawObj;        ${CP} Register.DrawObj    $@ ${CPFLAGS}
-${HDRDIR}.DrawTags:   Register.DrawTags;       ${CP} Register.DrawTags   $@ ${CPFLAGS}
-${HDRDIR}.FSNumbers:  Register.FSNumbers;      ${CP} Register.FSNumbers  $@ ${CPFLAGS}
-${HDRDIR}.GraphicsV:  Register.GraphicsV;      ${CP} Register.GraphicsV  $@ ${CPFLAGS}
-${HDRDIR}.Keyboard:   Register.Keyboard;       ${CP} Register.Keyboard   $@ ${CPFLAGS}
-${HDRDIR}.KEYV:       Register.KEYV;           ${CP} Register.KEYV       $@ ${CPFLAGS}
-${HDRDIR}.Messages:   Register.Messages;       ${CP} Register.Messages   $@ ${CPFLAGS}
-${HDRDIR}.NewErrors:  Register.NewErrors;      ${CP} Register.NewErrors  $@ ${CPFLAGS}
-${HDRDIR}.OsWords:    Register.OsWords;        ${CP} Register.OsWords    $@ ${CPFLAGS}
-${HDRDIR}.PaletteV:   Register.PaletteV;       ${CP} Register.PaletteV   $@ ${CPFLAGS}
-${HDRDIR}.Pointer:    Register.Pointer;        ${CP} Register.Pointer    $@ ${CPFLAGS}
-${HDRDIR}.PDriverReg: Register.PDriverReg;     ${CP} Register.PDriverReg $@ ${CPFLAGS}
-${HDRDIR}.PDumperReg: Register.PDumperReg;     ${CP} Register.PDumperReg $@ ${CPFLAGS}
-${HDRDIR}.PoduleReg:  Register.PoduleReg;      ${CP} Register.PoduleReg  $@ ${CPFLAGS}
-${HDRDIR}.PrintTypes: Register.PrintTypes;     ${CP} Register.PrintTypes $@ ${CPFLAGS}
-${HDRDIR}.Services:   Register.Services;       ${CP} Register.Services   $@ ${CPFLAGS}
-${HDRDIR}.UpCall:     Register.UpCall;         ${CP} Register.UpCall     $@ ${CPFLAGS}
-
-# Derived registration headers:
-${HDRDIR}.FileTypes:  ${FILETYPES};            ${CP} ${FILETYPES}        $@ ${CPFLAGS}
-${HDRDIR}.SWIs:       ${SWIS};                 ${CP} ${SWIS}             $@ ${CPFLAGS}
+${HDRDIR}.AUN:        hdr.AUN;         ${CP} hdr.AUN        $@ ${CPFLAGS}
+${HDRDIR}.Countries:  hdr.Countries;   ${CP} hdr.Countries  $@ ${CPFLAGS}
+${HDRDIR}.Devices:    hdr.Devices;     ${CP} hdr.Devices    $@ ${CPFLAGS}
+${HDRDIR}.DevNos:     hdr.DevNos;      ${CP} hdr.DevNos     $@ ${CPFLAGS}
+${HDRDIR}.DrawObj:    hdr.DrawObj;     ${CP} hdr.DrawObj    $@ ${CPFLAGS}
+${HDRDIR}.FileTypes:  hdr.FileTypes;   ${CP} hdr.FileTypes  $@ ${CPFLAGS}
+${HDRDIR}.FSNumbers:  hdr.FSNumbers;   ${CP} hdr.FSNumbers  $@ ${CPFLAGS}
+${HDRDIR}.GraphicsV:  hdr.GraphicsV;   ${CP} hdr.GraphicsV  $@ ${CPFLAGS}
+${HDRDIR}.Keyboard:   hdr.Keyboard;    ${CP} hdr.Keyboard   $@ ${CPFLAGS}
+${HDRDIR}.KEYV:       hdr.KEYV;        ${CP} hdr.KEYV       $@ ${CPFLAGS}
+${HDRDIR}.Messages:   hdr.Messages;    ${CP} hdr.Messages   $@ ${CPFLAGS}
+${HDRDIR}.NewErrors:  hdr.NewErrors;   ${CP} hdr.NewErrors  $@ ${CPFLAGS}
+${HDRDIR}.OsWords:    hdr.OsWords;     ${CP} hdr.OsWords    $@ ${CPFLAGS}
+${HDRDIR}.PaletteV:   hdr.PaletteV;    ${CP} hdr.PaletteV   $@ ${CPFLAGS}
+${HDRDIR}.PDriverReg: hdr.PDriverReg;  ${CP} hdr.PDriverReg $@ ${CPFLAGS}
+${HDRDIR}.PDumperReg: hdr.PDumperReg;  ${CP} hdr.PDumperReg $@ ${CPFLAGS}
+${HDRDIR}.PoduleReg:  hdr.PoduleReg;   ${CP} hdr.PoduleReg  $@ ${CPFLAGS}
+${HDRDIR}.Pointer:    hdr.Pointer;     ${CP} hdr.Pointer    $@ ${CPFLAGS}
+${HDRDIR}.Services:   hdr.Services;    ${CP} hdr.Services   $@ ${CPFLAGS}
+${HDRDIR}.SWIs:       hdr.SWIs;        ${CP} hdr.SWIs       $@ ${CPFLAGS}
+${HDRDIR}.UpCall:     hdr.UpCall;      ${CP} hdr.UpCall     $@ ${CPFLAGS}
 
 # The C versions of registration headers:
-${HDIR}.Global.h.AUN:        Register.AUN ${HDR2H};            perl ${HDR2H} Register.AUN        $@
-${HDIR}.Global.h.Countries:  Register.Countries ${HDR2H};      perl ${HDR2H} Register.Countries  $@
-${HDIR}.Global.h.Devices:    Register.Devices ${HDR2H};        perl ${HDR2H} Register.Devices    $@
-${HDIR}.Global.h.DevNos:     Register.DevNos ${HDR2H};         perl ${HDR2H} Register.DevNos     $@
-${HDIR}.Global.h.DrawObj:    Register.DrawObj ${HDR2H};        perl ${HDR2H} Register.DrawObj    $@
-${HDIR}.Global.h.DrawTags:   Register.DrawTags ${HDR2H};       perl ${HDR2H} Register.DrawTags   $@
-${HDIR}.Global.h.EnvNumbers: Register.EnvNumbers ${HDR2H};     perl ${HDR2H} Register.EnvNumbers $@
-${HDIR}.Global.h.FreeWay:    Register.FreeWay ${HDR2H};        perl ${HDR2H} Register.FreeWay    $@
-${HDIR}.Global.h.FSNumbers:  Register.FSNumbers ${HDR2H};      perl ${HDR2H} Register.FSNumbers  $@
-${HDIR}.Global.h.GraphicsV:  Register.GraphicsV ${HDR2H};      perl ${HDR2H} Register.GraphicsV  $@
-${HDIR}.Global.h.Keyboard:   Register.Keyboard  ${HDR2H};      perl ${HDR2H} Register.Keyboard   $@
-${HDIR}.Global.h.KeyV:       Register.KeyV ${HDR2H};           perl ${HDR2H} Register.KeyV       $@
-${HDIR}.Global.h.Messages:   Register.Messages ${HDR2H};       perl ${HDR2H} Register.Messages   $@
-${HDIR}.Global.h.NewErrors:   Register.NewErrors ${HDR2H};       perl ${HDR2H} Register.NewErrors   $@
+${HDIR}.Global.h.AUN:        hdr.AUN;         ${HDR2H} hdr.AUN        $@
+${HDIR}.Global.h.Countries:  hdr.Countries;   ${HDR2H} hdr.Countries  $@
+${HDIR}.Global.h.Devices:    hdr.Devices;     ${HDR2H} hdr.Devices    $@
+${HDIR}.Global.h.DevNos:     hdr.DevNos;      ${HDR2H} hdr.DevNos     $@
+${HDIR}.Global.h.DrawObj:    hdr.DrawObj;     ${HDR2H} hdr.DrawObj    $@
+${HDIR}.Global.h.EnvNumbers: hdr.EnvNumbers;  ${HDR2H} hdr.EnvNumbers $@
+${HDIR}.Global.h.FileTypes:  hdr.FileTypes;   ${HDR2H} hdr.FileTypes  $@
+${HDIR}.Global.h.FreeWay:    hdr.FreeWay;     ${HDR2H} hdr.FreeWay    $@
+${HDIR}.Global.h.FSNumbers:  hdr.FSNumbers;   ${HDR2H} hdr.FSNumbers  $@
+${HDIR}.Global.h.GraphicsV:  hdr.GraphicsV;   ${HDR2H} hdr.GraphicsV  $@
+${HDIR}.Global.h.Keyboard:   hdr.Keyboard;    ${HDR2H} hdr.Keyboard   $@
+${HDIR}.Global.h.KeyV:       hdr.KeyV;        ${HDR2H} hdr.KeyV       $@
+${HDIR}.Global.h.Messages:   hdr.Messages;    ${HDR2H} hdr.Messages   $@
+${HDIR}.Global.h.NewErrors:  hdr.NewErrors;   ${HDR2H} hdr.NewErrors  $@
 # NewErrors still has a few problems.  Partial support is there.
-${HDIR}.Global.h.OsWords:    Register.OsWords ${HDR2H};        perl ${HDR2H} Register.OsWords    $@
-${HDIR}.Global.h.PaletteV:   Register.PaletteV ${HDR2H};       perl ${HDR2H} Register.PaletteV   $@
-${HDIR}.Global.h.PDriverReg: Register.PDriverReg ${HDR2H};     perl ${HDR2H} Register.PDriverReg $@
-${HDIR}.Global.h.PDumperReg: Register.PDumperReg ${HDR2H};     perl ${HDR2H} Register.PDumperReg $@
-${HDIR}.Global.h.PoduleReg:  Register.PoduleReg ${HDR2H};      perl ${HDR2H} Register.PoduleReg  $@
-${HDIR}.Global.h.Pointer:    Register.Pointer ${HDR2H};        perl ${HDR2H} Register.Pointer    $@
-# PrintTypes is just full of comments
-${HDIR}.Global.h.Services:   Register.Services ${HDR2H};       perl ${HDR2H} Register.Services   $@
-${HDIR}.Global.h.UpCall:     Register.UpCall ${HDR2H};         perl ${HDR2H} Register.UpCall     $@
-
-# The C versions of derived registration headers:
-${HDIR}.Global.h.FileTypes:  ${FILETYPES} ${HDR2H};            perl ${HDR2H} ${FILETYPES}        $@
-${HDIR}.Global.h.SWIs:       ${SWIS} ${HDR2H};                 perl ${HDR2H} ${SWIS}             $@
+${HDIR}.Global.h.OsWords:    hdr.OsWords;     ${HDR2H} hdr.OsWords    $@
+${HDIR}.Global.h.PaletteV:   hdr.PaletteV;    ${HDR2H} hdr.PaletteV   $@
+${HDIR}.Global.h.PDriverReg: hdr.PDriverReg;  ${HDR2H} hdr.PDriverReg $@
+${HDIR}.Global.h.PDumperReg: hdr.PDumperReg;  ${HDR2H} hdr.PDumperReg $@
+${HDIR}.Global.h.PoduleReg:  hdr.PoduleReg;   ${HDR2H} hdr.PoduleReg  $@
+${HDIR}.Global.h.Pointer:    hdr.Pointer;     ${HDR2H} hdr.Pointer    $@
+${HDIR}.Global.h.Services:   hdr.Services;    ${HDR2H} hdr.Services   $@
+${HDIR}.Global.h.SWIs:       hdr.SWIs;        ${HDR2H} hdr.SWIs       $@
+${HDIR}.Global.h.UpCall:     hdr.UpCall;      ${HDR2H} hdr.UpCall     $@
 
 
 # The C versions of local header files.
@@ -301,12 +238,12 @@ ${HDIR}.Global.h.SWIs:       ${SWIS} ${HDR2H};                 perl ${HDR2H} ${S
 #   Sprite
 # Files which have no equivalent.
 #   DDVMacros   Debug       ExtraLong   ListOpts    Macros      NdrDebug    Proc        Symbols
-${HDIR}.Global.h.Heap:       Hdr.Heap ${HDR2H};           perl ${HDR2H} Hdr.Heap       $@
-${HDIR}.Global.h.Sprite:     Hdr.Sprite ${HDR2H};         perl ${HDR2H} Hdr.Sprite     $@
-${HDIR}.Global.h.Tokens:     Hdr.Tokens ${HDR2H};         perl ${HDR2H} Hdr.Tokens     $@
-${HDIR}.Global.h.CMOS:       Hdr.CMOS ${HDR2H};           perl ${HDR2H} Hdr.CMOS       $@
-${HDIR}.Global.IO.h.GenericIO: Hdr.IO.GenericIO ${HDR2H}; perl ${HDR2H} Hdr.IO.GenericIO $@
-${HDIR}.Global.IO.h.IOMD:    Hdr.IO.IOMD ${HDR2H};        perl ${HDR2H} Hdr.IO.IOMD    $@
+${HDIR}.Global.h.Heap:         hdr.Heap;         ${HDR2H} hdr.Heap         $@
+${HDIR}.Global.h.Sprite:       hdr.Sprite;       ${HDR2H} hdr.Sprite       $@
+${HDIR}.Global.h.Tokens:       hdr.Tokens;       ${HDR2H} hdr.Tokens       $@
+${HDIR}.Global.h.CMOS:         hdr.CMOS;         ${HDR2H} hdr.CMOS         $@
+${HDIR}.Global.IO.h.GenericIO: hdr.IO.GenericIO; ${HDR2H} hdr.IO.GenericIO $@
+${HDIR}.Global.IO.h.IOMD:      hdr.IO.IOMD;      ${HDR2H} hdr.IO.IOMD      $@
 
 
 # C headers:
diff --git a/VersionNum b/VersionNum
index 6f0ad61a195dfd9edbe50ff91a178e11ff0f879e..e67c812133fb809d66314453b4fee0f479d32f60 100644
--- a/VersionNum
+++ b/VersionNum
@@ -6,18 +6,18 @@
  */
 #define Module_MajorVersion_CMHG        1.59
 #define Module_MinorVersion_CMHG        
-#define Module_Date_CMHG                04 Dec 2005
+#define Module_Date_CMHG                21 Mar 2008
 
 #define Module_MajorVersion             "1.59"
 #define Module_Version                  159
 #define Module_MinorVersion             ""
-#define Module_Date                     "04 Dec 2005"
+#define Module_Date                     "21 Mar 2008"
 
-#define Module_ApplicationDate          "04-Dec-05"
+#define Module_ApplicationDate          "21-Mar-08"
 
 #define Module_ComponentName            "HdrSrc"
 #define Module_ComponentPath            "RiscOS/Sources/Programmer/HdrSrc"
 
 #define Module_FullVersion              "1.59"
-#define Module_HelpVersion              "1.59 (04 Dec 2005)"
+#define Module_HelpVersion              "1.59 (21 Mar 2008)"
 #define Module_LibraryVersionInfo       "1:59"