diff --git a/asdf.lisp b/asdf.lisp
index 7ec465644f9d585180ff4723fade9a280ab3b4eb..6a7b67be9f40aaf20253203c61a83ed7decb0979 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -187,7 +187,7 @@
 ;;;;
 (defparameter *asdf-version*
   ;; the 1+ hair is to ensure that we don't do an inadvertent find and replace
-  (subseq "VERSION:1.604" (1+ (length "VERSION"))))
+  (subseq "VERSION:1.605" (1+ (length "VERSION"))))
 
 (defun asdf-version ()
   *asdf-version*)
@@ -2259,7 +2259,9 @@ with a different configuration, so the configuration would be re-read then."
 
 (defun compile-file-pathname* (input-file &rest keys)
   (apply-output-translations
-   (apply #'compile-file-pathname input-file keys)))
+   (apply #'compile-file-pathname
+          (truenamize (merge-pathnames (make-pathname :type "lisp") input-file))
+          keys)))
 
 ;;;; -----------------------------------------------------------------
 ;;;; Windows shortcut support.  Based on:
diff --git a/test/compile-asdf.lisp b/test/compile-asdf.lisp
index 0f8969711a8257b3e4c471e2559dfe0bf3df48fd..dc171c2c95e2945fb0e58066843a9fcf44a7d40b 100644
--- a/test/compile-asdf.lisp
+++ b/test/compile-asdf.lisp
@@ -1,15 +1,17 @@
 (in-package #:common-lisp-user)
 
-(load "test/script-support.lisp")
+(load (merge-pathnames "script-support" *load-pathname*))
 
-(cond ((probe-file "asdf.lisp")
+(cond ((probe-file *asdf-lisp*)
+       (ensure-directories-exist *asdf-fasl*)
        (multiple-value-bind (result warnings-p errors-p)
            ;; style warnings shouldn't abort the compilation [2010/02/03:rpg]
            (handler-bind ((style-warning
                            #'(lambda (w)
                                (princ w *error-output*)
                                (muffle-warning w))))
-             (compile-file "asdf.lisp"))
+             (compile-file *asdf-lisp*
+                           :output-file *asdf-fasl*))
          (declare (ignore result))
          (cond (warnings-p
                 ;;; ECL gives warnings that it shouldn't!
@@ -22,4 +24,3 @@
                 (leave-lisp "ASDF compiled cleanly" 0)))))
       (t
        (leave-lisp "Testsuite failed: unable to find ASDF source" 3)))
-
diff --git a/test/script-support.lisp b/test/script-support.lisp
index deb4013ab48878a0602b116d3c146034b1e46b42..37c63eb8684e2ebaaf865cdbac11f5ae2126ab2a 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -1,5 +1,9 @@
 (in-package #:common-lisp-user)
 
+(defvar *asdf-lisp* (truename (merge-pathnames "../asdf.lisp" *load-truename*)))
+(defvar *asdf-fasl* (compile-file-pathname (merge-pathnames "tmp/" *asdf-lisp*)))
+(defun load-asdf () (load *asdf-fasl*))
+
 #+allegro
 (setf excl:*warn-on-nested-reader-conditionals* nil)
 
diff --git a/test/test-force.script b/test/test-force.script
index 47e8569b367c4315d36fc663e25545b38064f95c..ee35beaad8dfbbf1de00dd70acebf2fb83cb9bf2 100644
--- a/test/test-force.script
+++ b/test/test-force.script
@@ -1,12 +1,12 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 
 (quit-on-error
  (setf asdf:*central-registry* '(*default-pathname-defaults*))
  (asdf:operate 'asdf:load-op 'test-force)
 
-  (let* ((file1 (asdf:compile-file-pathname* (truename "file1.lisp")))
+  (let* ((file1 (asdf:compile-file-pathname* "file1"))
          (file1-date (file-write-date file1)))
 
     (assert file1)
diff --git a/test/test-module-pathnames.script b/test/test-module-pathnames.script
index d7a1995386eb441f927e096f1eb22d1f777aed50..fee40aa9257afa82e383fdcb8c6f811d36c971ec 100644
--- a/test/test-module-pathnames.script
+++ b/test/test-module-pathnames.script
@@ -1,6 +1,6 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 
 (quit-on-error
  (setf asdf:*central-registry* '(*default-pathname-defaults*))
diff --git a/test/test-nested-components.script b/test/test-nested-components.script
index c8983b19f6b83193ea97a0ee15fd564a9f6e4af2..beaaf7b5dc3352257fd2ee56fdb5ecc06066f87f 100644
--- a/test/test-nested-components.script
+++ b/test/test-nested-components.script
@@ -3,7 +3,7 @@
 ;;; check that added nesting via modules doesn't confuse ASDF
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (in-package #:common-lisp-user)
 
 (quit-on-error
diff --git a/test/test-package.script b/test/test-package.script
index f1f5017575e564b0f1509296af95762ec956faa2..861fbc1a6d6160ef1e406d17857c9132be89a36b 100644
--- a/test/test-package.script
+++ b/test/test-package.script
@@ -1,7 +1,7 @@
 ;;; -*- Lisp -*-
 (in-package :cl-user)
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (quit-on-error 
  (defun module () 1)
  (load "test-package.asd")
diff --git a/test/test-retry-loading-component-1.script b/test/test-retry-loading-component-1.script
index a4f3a6e2fa815ce6f17c78a866c44558329e652e..7495f747ce88f16047a57bd4dbf58afdcb513d3c 100644
--- a/test/test-retry-loading-component-1.script
+++ b/test/test-retry-loading-component-1.script
@@ -3,7 +3,7 @@
 ;;; test asdf:try-recompiling restart
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 ;(trace asdf::find-component)
 ;(trace asdf:run-shell-command asdf:oos asdf:perform asdf:operate)
 ;#+allegro
diff --git a/test/test-static-and-serial.script b/test/test-static-and-serial.script
index a5138196317eb2a5d206aceda9fc447722e536a0..6e20a0cbb243c73bf49b6f905180e7093c1ef890 100644
--- a/test/test-static-and-serial.script
+++ b/test/test-static-and-serial.script
@@ -1,6 +1,6 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (quit-on-error
  (setf asdf:*central-registry* '(*default-pathname-defaults*))
 
diff --git a/test/test-touch-system-1.script b/test/test-touch-system-1.script
index 250ce9b65715eed7c564681e6088b751eca823d4..9480c292374c4b09b458fabd1ab3b688d5f2c5ba 100644
--- a/test/test-touch-system-1.script
+++ b/test/test-touch-system-1.script
@@ -4,7 +4,7 @@
 ;;; system that can be found using *system-definition-search-functions*
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (quit-on-error
  (flet ((system-load-time (name)
           (let ((data (asdf::system-registered-p name)))
diff --git a/test/test-touch-system-2.script b/test/test-touch-system-2.script
index cf43f236eedfa383f47c63845d42df361b452716..04b9019551e67765d3194b893ad4c9b30aca67b5 100644
--- a/test/test-touch-system-2.script
+++ b/test/test-touch-system-2.script
@@ -4,7 +4,7 @@
 ;;; system that canNOT be found using *system-definition-search-functions*
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (quit-on-error
  (flet ((system-load-time (name)
           (let ((data (asdf::system-registered-p name)))
diff --git a/test/test-try-recompiling-1.script b/test/test-try-recompiling-1.script
index 85dbf8d62fe4f9e768060b9c23938af0ddd6dec4..ac1ad293ce1ad454e470021f4e8196e2c7d98f3c 100644
--- a/test/test-try-recompiling-1.script
+++ b/test/test-try-recompiling-1.script
@@ -3,7 +3,7 @@
 ;;; test asdf:try-recompiling restart
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (defvar *caught-error* nil)
 
 (quit-on-error
diff --git a/test/test-utilities.script b/test/test-utilities.script
index 5dadd6396a7b7dbe752e3da8df5189f6e6b0e57d..19eacc18a3cfdb0866f078710dfb421adc70bdf2 100644
--- a/test/test-utilities.script
+++ b/test/test-utilities.script
@@ -1,6 +1,6 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (in-package :asdf)
 (cl-user::quit-on-error
 
diff --git a/test/test-version.script b/test/test-version.script
index 621e009d98e9965817c7eaa92cfcbd69c57d348f..d1d11488556382742c87edbedb0252775c9ddad2 100644
--- a/test/test-version.script
+++ b/test/test-version.script
@@ -1,6 +1,6 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (setf asdf:*central-registry* '(*default-pathname-defaults*))
 
 (defpackage :test-version-system
diff --git a/test/test1.script b/test/test1.script
index b759ea5cbf2067c636b0a6e91d3f5e5c74d34e27..d22190c73bee4bbd38710471ab8f706b561fff61 100644
--- a/test/test1.script
+++ b/test/test1.script
@@ -1,14 +1,14 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 
 (quit-on-error
  (setf asdf:*central-registry* '(*default-pathname-defaults*))
  (asdf:operate 'asdf:load-op 'test1)
 
  ;; test that it compiled
- (let* ((file1 (asdf:compile-file-pathname* (truename "file1.lisp")))
-        (file2 (asdf:compile-file-pathname* (truename "file2.lisp")))
+ (let* ((file1 (asdf:compile-file-pathname* "file1"))
+        (file2 (asdf:compile-file-pathname* "file2"))
         (file1-date (file-write-date file1)))
 
    (format t "~&test1 1: ~S ~S~%" file1 file1-date)
diff --git a/test/test2.script b/test/test2.script
index d2c75e98e9549a5871225162d64dcc2cd97bb3fb..4fcfb09360d70eda16e6af05e4ae8bfd929ea3ab 100644
--- a/test/test2.script
+++ b/test/test2.script
@@ -1,6 +1,6 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (quit-on-error
  (format t "test2 1~%")
  (setf asdf:*central-registry* '(*default-pathname-defaults*))
diff --git a/test/test3.script b/test/test3.script
index 3686261f80ae5dc3c11417adf17280c18cf82c6e..5fe09acd9ab05761b7bebbb0dcd2c92121db7b94 100644
--- a/test/test3.script
+++ b/test/test3.script
@@ -2,7 +2,7 @@
 #+(or f1 f2)
     (error "This test cannot run if :f1 or :f2 are on *features*")
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (in-package :asdf)
 (cl-user::quit-on-error
  (let ((fasl1 (asdf:compile-file-pathname* (truename "file1.lisp")))
diff --git a/test/test4.script b/test/test4.script
index d9213413614be40fad427be5c3f4485319d273eb..4488347f9671ef8b38029388d3a69f551e3010f9 100644
--- a/test/test4.script
+++ b/test/test4.script
@@ -1,7 +1,7 @@
 ;;; -*- Lisp -*-
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (in-package :asdf)
 (cl-user::quit-on-error
  (setf asdf:*central-registry* '(*default-pathname-defaults*))
diff --git a/test/test8.script b/test/test8.script
index d6338b92f27c38c625a294a75dc201be59c2dfa2..50f00f949755c8b2e5c289607b6862954ac17cdc 100644
--- a/test/test8.script
+++ b/test/test8.script
@@ -3,7 +3,7 @@
 ;;; make sure we get a missing-component error
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (in-package #:common-lisp-user)
 
 (quit-on-error
diff --git a/test/test9.script b/test/test9.script
index eeaf1a80515500826aba92679ebe62068ba75126..35b3cc78b19dc42863ea792696ef5e6df100b6f9 100644
--- a/test/test9.script
+++ b/test/test9.script
@@ -3,7 +3,7 @@
 ;;; make sure we get a missing-component-of-version error
 
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (in-package #:common-lisp-user)
 
 (quit-on-error
diff --git a/test/wild-module.script b/test/wild-module.script
index 8db0160a8d3c26f91aff7226b1c0c087b5dc6ae7..997203b1182760e333eb87be5b11ff966d477eae 100644
--- a/test/wild-module.script
+++ b/test/wild-module.script
@@ -1,8 +1,8 @@
 ;;; -*- Lisp -*-
 (load "script-support")
-(load (compile-file-pathname "../asdf"))
+(load-asdf)
 (quit-on-error
- (load (compile-file-pathname "../asdf"))
+ (load-asdf)
  (load "../wild-modules")
 
  (setf asdf:*central-registry* '(*default-pathname-defaults*))