dosdetect.o     \
        drives.o        \
        exec.o          \
+       exehdr.o        \
        filedes.o       \
        filename.o      \
         get_ostype.o    \
 
 ;
-; Oliver Schmidt, 15.09.2009
+; Oliver Schmidt, 2009-09-15
 ;
 ; Startup code for cc65 (Apple2 version)
 ;
 
         .export         _exit, done, return
-        .export         __STARTUP__ : absolute = 1      ; Mark as startup
+        .export         __STARTUP__ : absolute = 1     ; Mark as startup
         .import         zerobss
         .import        initlib, donelib
         .import        callmain, callirq
-        .import                __RAM_START__ , __RAM_LAST__    ; Linker generated
-        .import         __MOVE_START__, __MOVE_LAST__  ; Linker generated
-        .import         __LC_START__  , __LC_LAST__    ; Linker generated
-        .import                __ZPSAVE_RUN__, __INIT_SIZE__   ; Linker generated
+        .import                __RAM_LAST__, __ZPSAVE_RUN__    ; Linker generated
+        .import         __LC_START__, __LC_LAST__      ; Linker generated
+        .import                __INIT_SIZE__                   ; Linker generated
         .import                __INTERRUPTOR_COUNT__           ; Linker generated
 
         .include        "zeropage.inc"
         .include        "apple2.inc"
 
-        .linecont      +
-
-; ------------------------------------------------------------------------
-
-        .segment        "EXEHDR"
-
-        .addr           __RAM_START__                  ; Start address
-        .word           __ZPSAVE_RUN__ - __RAM_START__ + \
-                       __MOVE_LAST__  - __MOVE_START__ ; Size
-
 ; ------------------------------------------------------------------------
 
         .segment        "STARTUP"
 
--- /dev/null
+;
+; Oliver Schmidt, 2012-06-10
+;
+; This module supplies a 4 byte DOS 3.3 header
+; containing the load address and load length.
+;
+
+        .export         __EXEHDR__ : absolute = 1      ; Linker referenced
+        .import                __RAM_START__, __ZPSAVE_RUN__   ; Linker generated
+        .import         __MOVE_START__, __MOVE_LAST__  ; Linker generated
+
+        .linecont      +
+
+; ------------------------------------------------------------------------
+
+        .segment        "EXEHDR"
+
+        .addr           __RAM_START__                  ; Start address
+        .word           __ZPSAVE_RUN__ - __RAM_START__ + \
+                       __MOVE_LAST__  - __MOVE_START__ ; Size
 
        dosdetect.o     \
        drives.o        \
        exec.o          \
+       exehdr.o        \
        filedes.o       \
        filename.o      \
         get_ostype.o    \
 
     STARTADDRESS: default = $0803;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0800;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0800;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
 # Configuration for ProDOS 8 system programs (without the header)
 
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0803;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0803;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0800;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0800;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
 # Configuration for ProDOS 8 system programs (without the header)
 
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {
 
     STARTADDRESS: default = $0803;
 }
 SYMBOLS {
+    __EXEHDR__:    type = import;
     __STACKSIZE__: type = weak, value = $0800; # 2k stack
 }
 MEMORY {