diff --git a/ghc/lib/std/cbits/closeFile.c b/ghc/lib/std/cbits/closeFile.lc
similarity index 61%
rename from ghc/lib/std/cbits/closeFile.c
rename to ghc/lib/std/cbits/closeFile.lc
index 90eeb9d34dd836518faaf2b452f53c952181abc7..9f4c80eb8d289b2e326f1be75d0066fa1d98e8a4 100644
--- a/ghc/lib/std/cbits/closeFile.c
+++ b/ghc/lib/std/cbits/closeFile.lc
@@ -1,16 +1,16 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: closeFile.c,v 1.1 1998/04/10 10:54:14 simonm Exp $
- *
- * hClose Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[closeFile.lc]{hClose Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 StgInt
-closeFile(StgAddr fp)
+closeFile(fp)
+StgForeignObj fp;
 {
     int rc;
 
@@ -29,5 +29,7 @@ closeFile(StgAddr fp)
     return 0;
 }
 
+\end{code}
+
 
 
diff --git a/ghc/lib/std/cbits/createDirectory.c b/ghc/lib/std/cbits/createDirectory.lc
similarity index 79%
rename from ghc/lib/std/cbits/createDirectory.c
rename to ghc/lib/std/cbits/createDirectory.lc
index 6165518977aadd026f52512057e39fc7b8a92309..759e99c9982fe7bb2ef7ae8cc1ff41ba986da1b2 100644
--- a/ghc/lib/std/cbits/createDirectory.c
+++ b/ghc/lib/std/cbits/createDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: createDirectory.c,v 1.1 1998/04/10 10:54:16 simonm Exp $
- *
- * createDirectory Runtime Support}
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[createDirectory.lc]{createDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,8 @@
 #endif
 
 StgInt 
-createDirectory(StgByteArray path)
+createDirectory(path)
+StgByteArray path;
 {
     int rc;
     struct stat sb;
@@ -54,3 +54,5 @@ createDirectory(StgByteArray path)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/errno.c b/ghc/lib/std/cbits/errno.lc
similarity index 98%
rename from ghc/lib/std/cbits/errno.c
rename to ghc/lib/std/cbits/errno.lc
index fc32980a58ed8b98173c4336c75977f0716100cc..0eaa9d1ac9f2cf2e8cab1a83a36d48e3792a331f 100644
--- a/ghc/lib/std/cbits/errno.c
+++ b/ghc/lib/std/cbits/errno.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: errno.c,v 1.1 1998/04/10 10:54:18 simonm Exp $
- *
- * GHC Error Number Conversion
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[errno.lc]{GHC Error Number Conversion}
+
+\begin{code}
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 int ghc_errno = 0;
@@ -16,7 +15,7 @@ char *ghc_errstr = NULL;
 
 /* Collect all of the grotty #ifdef's in one place. */
 
-void cvtErrno(void)
+void cvtErrno(STG_NO_ARGS)
 {
     switch(errno) {
 #ifdef E2BIG
@@ -527,7 +526,7 @@ void cvtErrno(void)
 }
 
 void
-stdErrno(void)
+stdErrno(STG_NO_ARGS)
 {
     switch(ghc_errno) {
     default:
@@ -931,3 +930,5 @@ stdErrno(void)
 	break;
     }
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/error.h b/ghc/lib/std/cbits/error.h
deleted file mode 100644
index 785fadb9a65cb73f2e55d3177232ebbe2d86a566..0000000000000000000000000000000000000000
--- a/ghc/lib/std/cbits/error.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: error.h,v 1.1 1998/04/10 10:54:20 simonm Exp $
- *
- * Error codes used by the IO subsystem.
- */
-
-#if !defined(COMPILING_NCG) && !defined(__GLASGOW_HASKELL__)
-extern int ghc_errno;
-extern int ghc_errtype;
-extern char *ghc_errstr;
-
-void cvtErrno (void);
-void stdErrno (void);
-#endif
-
-#define ERR_ALREADYEXISTS 1
-#define ERR_HARDWAREFAULT 2
-#define ERR_ILLEGALOPERATION 3
-#define ERR_INAPPROPRIATETYPE 4
-#define ERR_INTERRUPTED 5
-#define ERR_INVALIDARGUMENT 6
-#define ERR_NOSUCHTHING 7
-#define ERR_OTHERERROR 8
-#define ERR_PERMISSIONDENIED 9
-#define ERR_PROTOCOLERROR 10
-#define ERR_RESOURCEBUSY 11
-#define ERR_RESOURCEEXHAUSTED 12
-#define ERR_RESOURCEVANISHED 13
-#define ERR_SYSTEMERROR 14
-#define ERR_TIMEEXPIRED 15
-#define ERR_UNSATISFIEDCONSTRAINTS 16
-#define ERR_UNSUPPORTEDOPERATION 17
-#define ERR_USERERROR 18
-#define ERR_EOF 19
-
-#define GHC_E2BIG -1
-#define GHC_EACCES -2
-#define GHC_EADDRINUSE -3
-#define GHC_EADDRNOTAVAIL -4
-#define GHC_EADV -5
-#define GHC_EAFNOSUPPORT -6
-#define GHC_EAGAIN -7
-#define GHC_EAIO -8
-#define GHC_EALREADY -9
-#define GHC_EBADF -10
-#define GHC_EBADMSG -11
-#define GHC_EBADRPC -12
-#define GHC_EBUSY -13
-#define GHC_ECANCELED -14
-#define GHC_ECHILD -15
-#define GHC_ECLONEME -16
-#define GHC_ECOMM -17
-#define GHC_ECONNABORTED -18
-#define GHC_ECONNREFUSED -19
-#define GHC_ECONNRESET -20
-#define GHC_EDEADLK -21
-#define GHC_EDESTADDRREQ -22
-#define GHC_EDIRTY -23
-#define GHC_EDOM -24
-#define GHC_EDOTDOT -25
-#define GHC_EDQUOT -26
-#define GHC_EDUPPKG -27
-#define GHC_EEXIST -28
-#define GHC_EFAIL -29
-#define GHC_EFAULT -30
-#define GHC_EFBIG -31
-#define GHC_EFTYPE -32
-#define GHC_EHOSTDOWN -33
-#define GHC_EHOSTUNREACH -34
-#define GHC_EIDRM -35
-#define GHC_EILSEQ -36
-#define GHC_EINPROG -37
-#define GHC_EINPROGRESS -38
-#define GHC_EINTR -39
-#define GHC_EINVAL -40
-#define GHC_EIO -41
-#define GHC_EISCONN -42
-#define GHC_EISDIR -43
-#define GHC_ELOOP -44
-#define GHC_EMEDIA -45
-#define GHC_EMFILE -46
-#define GHC_EMLINK -47
-#define GHC_EMSGSIZE -48
-#define GHC_EMTIMERS -49
-#define GHC_EMULTIHOP -50
-#define GHC_ENAMETOOLONG -51
-#define GHC_ENETDOWN -52
-#define GHC_ENETRESET -53
-#define GHC_ENETUNREACH -54
-#define GHC_ENFILE -55
-#define GHC_ENOBUFS -56
-#define GHC_ENODATA -57
-#define GHC_ENODEV -58
-#define GHC_ENOENT -59
-#define GHC_ENOEXEC -60
-#define GHC_ENOLCK -61
-#define GHC_ENOLINK -62
-#define GHC_ENOMEM -63
-#define GHC_ENOMSG -64
-#define GHC_ENONET -65
-#define GHC_ENOPKG -66
-#define GHC_ENOPROTOOPT -67
-#define GHC_ENOSPC -68
-#define GHC_ENOSR -69
-#define GHC_ENOSTR -70
-#define GHC_ENOSYM -71
-#define GHC_ENOSYS -72
-#define GHC_ENOTBLK -73
-#define GHC_ENOTCONN -74
-#define GHC_ENOTDIR -75
-#define GHC_ENOTEMPTY -76
-#define GHC_ENOTSOCK -77
-#define GHC_ENOTSUP -78
-#define GHC_ENOTTY -79
-#define GHC_ENXIO -80
-#define GHC_EOPNOTSUPP -81
-#define GHC_EPERM -82
-#define GHC_EPFNOSUPPORT -83
-#define GHC_EPIPE -84
-#define GHC_EPROCLIM -85
-#define GHC_EPROCUNAVAIL -86
-#define GHC_EPROGMISMATCH -87
-#define GHC_EPROGUNAVAIL -88
-#define GHC_EPROTO -89
-#define GHC_EPROTONOSUPPORT -90
-#define GHC_EPROTOTYPE -91
-#define GHC_ERANGE -92
-#define GHC_ERELOCATED -93
-#define GHC_EREMCHG -94
-#define GHC_EREMOTE -95
-#define GHC_EROFS -96
-#define GHC_ERPCMISMATCH -97
-#define GHC_ERREMOTE -98
-#define GHC_ESHUTDOWN -99
-#define GHC_ESOCKTNOSUPPORT -100
-#define GHC_ESOFT -101
-#define GHC_ESPIPE -102
-#define GHC_ESRCH -103
-#define GHC_ESRMNT -104
-#define GHC_ESTALE -105
-#define GHC_ETIME -106
-#define GHC_ETIMEDOUT -107
-#define GHC_ETOOMANYREFS -108
-#define GHC_ETXTBSY -109
-#define GHC_EUSERS -110
-#define GHC_EVERSION -111
-#define GHC_EWOULDBLOCK -112
-#define GHC_EXDEV -113
diff --git a/ghc/lib/std/cbits/fileEOF.c b/ghc/lib/std/cbits/fileEOF.c
deleted file mode 100644
index ba978229153604bc1e1028a23aaba75c7ea9d2d0..0000000000000000000000000000000000000000
--- a/ghc/lib/std/cbits/fileEOF.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileEOF.c,v 1.1 1998/04/10 10:54:21 simonm Exp $
- *
- * hIsEOF Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-fileEOF(StgAddr fp)
-{
-    if (fileLookAhead(fp) != EOF)
-	return 0;
-    else if (ghc_errtype == ERR_EOF)
-	return 1;
-    else
-	return -1;
-}
diff --git a/ghc/lib/std/cbits/fileEOF.lc b/ghc/lib/std/cbits/fileEOF.lc
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3eb20cf2c16b77abf2d536a518c172f1713bf
--- /dev/null
+++ b/ghc/lib/std/cbits/fileEOF.lc
@@ -0,0 +1,23 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileEOF.lc]{hIsEOF Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+fileEOF(fp)
+StgForeignObj fp;
+{
+    if (fileLookAhead(fp) != EOF)
+	return 0;
+    else if (ghc_errtype == ERR_EOF)
+	return 1;
+    else
+	return -1;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/fileGetc.c b/ghc/lib/std/cbits/fileGetc.c
deleted file mode 100644
index 9c7b33feaabbacd04d0eec9b5d478fb258cd80ea..0000000000000000000000000000000000000000
--- a/ghc/lib/std/cbits/fileGetc.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileGetc.c,v 1.1 1998/04/10 10:54:22 simonm Exp $
- *
- * hGetChar Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-#include "error.h"
-
-StgInt
-fileGetc(StgAddr fp)
-{
-    int c;
-
-    if (feof((FILE *)fp)) {
-	ghc_errtype = ERR_EOF;
-	ghc_errstr = "";
-	return EOF;
-    }
-
-    /* Try to read a character */
-    while ((c = getc((FILE *)fp)) == EOF && errno == EINTR)
-	clearerr((FILE *)fp);
-
-    if (feof((FILE *)fp)) {
-	ghc_errtype = ERR_EOF;
-	ghc_errstr = "";
-    } else if (c == EOF) {
-	cvtErrno();
-	stdErrno();
-    }
-    return c;
-}
diff --git a/ghc/lib/std/cbits/fileGetc.lc b/ghc/lib/std/cbits/fileGetc.lc
new file mode 100644
index 0000000000000000000000000000000000000000..131c956364af3eab0b0334670d9f13ed7c7fbd2f
--- /dev/null
+++ b/ghc/lib/std/cbits/fileGetc.lc
@@ -0,0 +1,38 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileGetc.lc]{hGetChar Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+#include "error.h"
+
+StgInt
+fileGetc(fp)
+StgForeignObj fp;
+{
+    int c;
+
+    if (feof((FILE *) fp)) {
+	ghc_errtype = ERR_EOF;
+	ghc_errstr = "";
+	return EOF;
+    }
+
+    /* Try to read a character */
+    while ((c = getc((FILE *) fp)) == EOF && errno == EINTR)
+	clearerr((FILE *) fp);
+
+    if (feof((FILE *) fp)) {
+	ghc_errtype = ERR_EOF;
+	ghc_errstr = "";
+    } else if (c == EOF) {
+	cvtErrno();
+	stdErrno();
+    }
+    return c;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/fileLookAhead.c b/ghc/lib/std/cbits/fileLookAhead.c
deleted file mode 100644
index 360f119f6620f5c0caaf6949f0ff06b1acc74397..0000000000000000000000000000000000000000
--- a/ghc/lib/std/cbits/fileLookAhead.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileLookAhead.c,v 1.1 1998/04/10 10:54:24 simonm Exp $
- *
- * hLookAhead Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-fileLookAhead(StgAddr fp)
-{
-    int c;
-
-    if ((c = fileGetc((FILE *)fp)) == EOF) {
-	return c;
-    } else if (ungetc(c, (FILE *)fp) == EOF) {
-	cvtErrno();
-	stdErrno();
-	return EOF;
-    } else
-	return c;
-}
diff --git a/ghc/lib/std/cbits/fileLookAhead.lc b/ghc/lib/std/cbits/fileLookAhead.lc
new file mode 100644
index 0000000000000000000000000000000000000000..91a172251d6240c1e9e3d5fe298ab15966ef31a5
--- /dev/null
+++ b/ghc/lib/std/cbits/fileLookAhead.lc
@@ -0,0 +1,27 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileLookAhead.lc]{hLookAhead Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+fileLookAhead(fp)
+StgForeignObj fp;
+{
+    int c;
+
+    if ((c = fileGetc(fp)) == EOF) {
+	return c;
+    } else if (ungetc(c, (FILE *) fp) == EOF) {
+	cvtErrno();
+	stdErrno();
+	return EOF;
+    } else
+	return c;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/filePosn.c b/ghc/lib/std/cbits/filePosn.lc
similarity index 65%
rename from ghc/lib/std/cbits/filePosn.c
rename to ghc/lib/std/cbits/filePosn.lc
index e8131da74220e3bc8babe048fe90c5d1c61e4f52..7a0d7907b80a6786ace9e994db551b737d2e5af9 100644
--- a/ghc/lib/std/cbits/filePosn.c
+++ b/ghc/lib/std/cbits/filePosn.lc
@@ -1,16 +1,16 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: filePosn.c,v 1.1 1998/04/10 10:54:25 simonm Exp $
- *
- * hGetPosn and hSetPosn Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[filePosn.lc]{hGetPosn and hSetPosn Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 StgInt
-getFilePosn(StgAddr fp)
+getFilePosn(fp)
+StgForeignObj fp;
 {
     StgInt posn;
 
@@ -28,7 +28,9 @@ getFilePosn(StgAddr fp)
 /* The following is only called with a position that we've already visited */
 
 StgInt
-setFilePosn(StgAddr fp, I_ posn)
+setFilePosn(fp, posn)
+StgForeignObj fp;
+StgInt posn;
 {
     while (fseek((FILE *) fp, posn, SEEK_SET) != 0) {
 	if (errno != EINTR) {
@@ -40,4 +42,7 @@ setFilePosn(StgAddr fp, I_ posn)
     return 0;
 }
 
+\end{code}
+
+
 
diff --git a/ghc/lib/std/cbits/filePutc.c b/ghc/lib/std/cbits/filePutc.lc
similarity index 57%
rename from ghc/lib/std/cbits/filePutc.c
rename to ghc/lib/std/cbits/filePutc.lc
index 446304d4dff5ad64d14c3e368ae64ec8280fb2c3..980aa63e507d5ed725828b7d4451ee6ca2dedf8d 100644
--- a/ghc/lib/std/cbits/filePutc.c
+++ b/ghc/lib/std/cbits/filePutc.lc
@@ -1,17 +1,18 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: filePutc.c,v 1.1 1998/04/10 10:54:26 simonm Exp $
- *
- * hPutChar Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[filePut.lc]{hPutChar Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 #include "error.h"
 
 StgInt
-filePutc(StgAddr fp, I_ c)
+filePutc(fp, c)
+StgForeignObj fp;
+StgInt c;
 {
     int rc;
 
@@ -27,3 +28,5 @@ filePutc(StgAddr fp, I_ c)
 
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/fileSize.c b/ghc/lib/std/cbits/fileSize.lc
similarity index 70%
rename from ghc/lib/std/cbits/fileSize.c
rename to ghc/lib/std/cbits/fileSize.lc
index 3720251fd5843d2dd2d751e21f4e0251c10545bb..34348feedf8355577ed91fb5634bfa3401e44fb1 100644
--- a/ghc/lib/std/cbits/fileSize.c
+++ b/ghc/lib/std/cbits/fileSize.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: fileSize.c,v 1.1 1998/04/10 10:54:27 simonm Exp $
- *
- * hClose Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[fileSize.lc]{hfileSize Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,9 @@
 #endif
   
 StgInt
-fileSize(StgAddr fp, StgByteArray result)
+fileSize(fp, result)
+StgForeignObj fp;
+StgByteArray result;
 {
     struct stat sb;
 
@@ -40,3 +41,5 @@ fileSize(StgAddr fp, StgByteArray result)
 	return -1;
     }
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/floatExtreme.c b/ghc/lib/std/cbits/floatExtreme.lc
similarity index 82%
rename from ghc/lib/std/cbits/floatExtreme.c
rename to ghc/lib/std/cbits/floatExtreme.lc
index 997e6a92f5b8882aa9d56ef8cbb415e2c5b886d7..3dbecdeee59fbb432a772620d212ec955828f790 100644
--- a/ghc/lib/std/cbits/floatExtreme.c
+++ b/ghc/lib/std/cbits/floatExtreme.lc
@@ -1,21 +1,19 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: floatExtreme.c,v 1.1 1998/04/10 10:54:28 simonm Exp $
- *
- * Stubs to check for extremities of (IEEE) floats, 
- * the tests have been (artfully) lifted from the hbc-0.9999.3 (lib/fltcode.c)
- * source.
- */
-
-/*
+%
+%
+%
+
+Stubs to check for extremities of (IEEE) floats, 
+the tests have been (artfully) lifted from the hbc-0.9999.3 (lib/fltcode.c)
+source.
+
 ToDo:
   - avoid hard-wiring the fact that on an
     Alpha we repr. a StgFloat as a double.
     (introduce int equivalent of {ASSIGN,PK}_FLT? )
-*/
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "ieee-flpt.h"
 #include "floatExtreme.h"
 
@@ -30,7 +28,8 @@ ToDo:
 #ifdef IEEE_FLOATING_POINT
 
 StgInt
-isDoubleNaN(StgDouble d)
+isDoubleNaN(d)
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int hx,lx;
@@ -47,7 +46,8 @@ isDoubleNaN(StgDouble d)
 }
 
 StgInt
-isDoubleInfinite(StgDouble d)
+isDoubleInfinite(d)
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int hx,lx;
@@ -62,7 +62,8 @@ isDoubleInfinite(StgDouble d)
 }
 
 StgInt
-isDoubleDenormalized(StgDouble d) 
+isDoubleDenormalized(d) 
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int high, iexp;
@@ -74,7 +75,8 @@ isDoubleDenormalized(StgDouble d)
 }
 
 StgInt
-isDoubleNegativeZero(StgDouble d) 
+isDoubleNegativeZero(d) 
+StgDouble d;
 {
     union { double d; int i[2]; } u;
     int high, iexp;
@@ -86,7 +88,8 @@ isDoubleNegativeZero(StgDouble d)
 /* Same tests, this time for StgFloats. */
 
 StgInt
-isFloatNaN(StgFloat f)
+isFloatNaN(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -104,7 +107,8 @@ isFloatNaN(StgFloat f)
 }
 
 StgInt
-isFloatInfinite(StgFloat f)
+isFloatInfinite(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -121,7 +125,8 @@ isFloatInfinite(StgFloat f)
 }
 
 StgInt
-isFloatDenormalized(StgFloat f)
+isFloatDenormalized(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -137,7 +142,8 @@ isFloatDenormalized(StgFloat f)
 }
 
 StgInt
-isFloatNegativeZero(StgFloat f)
+isFloatNegativeZero(f) 
+StgFloat f;
 {
 #if !defined(alpha_TARGET_OS)
     /* StgFloat = double on alphas */
@@ -163,3 +169,6 @@ StgInt isFloatDenormalized(f) StgFloat f; { return 0; }
 StgInt isFloatNegativeZero(f) StgFloat f; { return 0; }
 
 #endif
+
+
+\end{code}
diff --git a/ghc/lib/std/cbits/flushFile.c b/ghc/lib/std/cbits/flushFile.c
deleted file mode 100644
index 54cf1069f9e7a9c2b115ed0b2b6dc9b6ab823734..0000000000000000000000000000000000000000
--- a/ghc/lib/std/cbits/flushFile.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: flushFile.c,v 1.1 1998/04/10 10:54:30 simonm Exp $
- *
- * hFlush Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-flushFile(StgAddr fp)
-{
-    int rc;
-
-    while ((rc = fflush((FILE *) fp)) != 0) {
-	if (errno != EINTR) {
-	    cvtErrno();
-	    stdErrno();
-	    return rc;
-	}
-    }
-    return 0;
-}
diff --git a/ghc/lib/std/cbits/flushFile.lc b/ghc/lib/std/cbits/flushFile.lc
new file mode 100644
index 0000000000000000000000000000000000000000..6cfd484e741eaac24aa4578c82c983cb477cf706
--- /dev/null
+++ b/ghc/lib/std/cbits/flushFile.lc
@@ -0,0 +1,30 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[flushFile.lc]{hFlush Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+flushFile(fp)
+StgForeignObj fp;
+{
+    int rc;
+
+    while ((rc = fflush((FILE *) fp)) != 0) {
+	if (errno != EINTR) {
+	    cvtErrno();
+	    stdErrno();
+	    return rc;
+	}
+    }
+    return 0;
+}
+
+\end{code}
+
+
+
diff --git a/ghc/lib/std/cbits/freeFile.c b/ghc/lib/std/cbits/freeFile.lc
similarity index 81%
rename from ghc/lib/std/cbits/freeFile.c
rename to ghc/lib/std/cbits/freeFile.lc
index 751a48f11430bc23abedcc2f143bfedcb67d101e..1ac3d526614fac42094fb562e22da82f29d309d3 100644
--- a/ghc/lib/std/cbits/freeFile.c
+++ b/ghc/lib/std/cbits/freeFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: freeFile.c,v 1.1 1998/04/10 10:54:31 simonm Exp $
- *
- * Giving up files
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1997
+%
+\subsection[freeFile.lc]{Giving up files}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 /* sigh, the FILEs attached to the standard descriptors are 
@@ -14,10 +13,12 @@
    ForeignObj finaliser, as we probably want to use these
    before we *really* shut down (dumping stats etc.)
 */
-void freeStdFile(StgAddr fp)
+void freeStdFile(fp)
+StgForeignObj fp;
 { return; }
 
-void freeFile(StgAddr fp)
+void freeFile(fp)
+StgForeignObj fp;
 {
     int rc;
 
@@ -48,3 +49,4 @@ void freeFile(StgAddr fp)
 
     return;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/getBufferMode.c b/ghc/lib/std/cbits/getBufferMode.lc
similarity index 78%
rename from ghc/lib/std/cbits/getBufferMode.c
rename to ghc/lib/std/cbits/getBufferMode.lc
index a34b3173f9c574ec91f11b184837258040215554..cb0b9840d2a25cb502d70f748c6cb5f5ecd208fe 100644
--- a/ghc/lib/std/cbits/getBufferMode.c
+++ b/ghc/lib/std/cbits/getBufferMode.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getBufferMode.c,v 1.1 1998/04/10 10:54:33 simonm Exp $
- *
- * hIs...Buffered Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[getBufferMode.lc]{hIs...Buffered Runtime Support}
+
+\begin{code}
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -28,7 +27,8 @@
 #define GBM_ERR (-3)
 
 StgInt
-getBufferMode(StgAddr fp)
+getBufferMode(fp)
+StgForeignObj fp;
 {
     struct stat sb;
 
@@ -48,3 +48,5 @@ getBufferMode(StgAddr fp)
     else
 	return GBM_BB;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/getCPUTime.c b/ghc/lib/std/cbits/getCPUTime.lc
similarity index 88%
rename from ghc/lib/std/cbits/getCPUTime.c
rename to ghc/lib/std/cbits/getCPUTime.lc
index 250e51c207d43cc0365ce1b629e4cfb1d5a7befc..d3d7b2a4895eb0ddab58aeaca665b5d812db99fb 100644
--- a/ghc/lib/std/cbits/getCPUTime.c
+++ b/ghc/lib/std/cbits/getCPUTime.lc
@@ -1,10 +1,9 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getCPUTime.c,v 1.1 1998/04/10 10:54:34 simonm Exp $
- *
- * getCPUTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getCPUTime.lc]{getCPUTime Runtime Support}
+
+\begin{code}
 
 #ifndef _AIX
 #define NON_POSIX_SOURCE /*needed for solaris2 only?*/
@@ -15,7 +14,7 @@
 #define _INCLUDE_HPUX_SOURCE
 #endif
 
-#include "Rts.h"
+#include "rtsdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -48,7 +47,7 @@
 #endif
 
 StgInt 
-clockTicks (void)
+clockTicks ()
 {
  return (
 #if defined(CLK_TCK)
@@ -101,5 +100,8 @@ getCPUTime(StgByteArray cpuStruct)
     return NULL;
 # endif
 #endif
-    return (StgByteArray)cpuStruct;
+    return (StgByteArray) cpuStruct;
 }
+
+\end{code}
+
diff --git a/ghc/lib/std/cbits/getClockTime.c b/ghc/lib/std/cbits/getClockTime.lc
similarity index 85%
rename from ghc/lib/std/cbits/getClockTime.c
rename to ghc/lib/std/cbits/getClockTime.lc
index 9f031bf99c8a1cf7315d31895bacf12f9f6ad6e8..b6f42e6c289ea10c2433aa6053d0547639c7df63 100644
--- a/ghc/lib/std/cbits/getClockTime.c
+++ b/ghc/lib/std/cbits/getClockTime.lc
@@ -1,16 +1,15 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getClockTime.c,v 1.1 1998/04/10 10:54:35 simonm Exp $
- *
- * getClockTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getClockTime.lc]{getClockTime Runtime Support}
+
+\begin{code}
 
 #ifndef _AIX
 #define NON_POSIX_SOURCE    /* gettimeofday */
 #endif
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_GETCLOCK
@@ -75,3 +74,4 @@ getClockTime(StgByteArray sec, StgByteArray nsec)
 #endif
 #endif
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/getCurrentDirectory.c b/ghc/lib/std/cbits/getCurrentDirectory.lc
similarity index 75%
rename from ghc/lib/std/cbits/getCurrentDirectory.c
rename to ghc/lib/std/cbits/getCurrentDirectory.lc
index a132e0b27aa7d8768367b39043422322311343c4..4da895aaccf0b6b4ec55c3b03ce659feee27618a 100644
--- a/ghc/lib/std/cbits/getCurrentDirectory.c
+++ b/ghc/lib/std/cbits/getCurrentDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getCurrentDirectory.c,v 1.1 1998/04/10 10:54:37 simonm Exp $
- *
- * getCurrentDirectory Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getCurrentDirectory.lc]{getCurrentDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifndef PATH_MAX
@@ -18,7 +17,7 @@
 #endif
 
 StgAddr
-getCurrentDirectory(void)
+getCurrentDirectory(STG_NO_ARGS)
 {
     char *pwd;
     int alloc;
@@ -45,3 +44,5 @@ getCurrentDirectory(void)
     }
     return (StgAddr) pwd;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/getDirectoryContents.c b/ghc/lib/std/cbits/getDirectoryContents.lc
similarity index 90%
rename from ghc/lib/std/cbits/getDirectoryContents.c
rename to ghc/lib/std/cbits/getDirectoryContents.lc
index d51f760628dfac6afb0d9a77ba79dea9c489b10a..025aae97512db5da3d79eea2973e18bbd87524d5 100644
--- a/ghc/lib/std/cbits/getDirectoryContents.c
+++ b/ghc/lib/std/cbits/getDirectoryContents.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getDirectoryContents.c,v 1.1 1998/04/10 10:54:38 simonm Exp $
- *
- * getDirectoryContents Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[getDirectoryContents.lc]{getDirectoryContents Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -45,7 +44,8 @@ freeEntries(char **entries, int count)
  */
 
 StgAddr
-getDirectoryContents(StgByteArray path)
+getDirectoryContents(path)
+StgByteArray path;
 {
     struct stat sb;
     DIR *dir;
@@ -120,3 +120,5 @@ getDirectoryContents(StgByteArray path)
 	}
     }
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/getLock.c b/ghc/lib/std/cbits/getLock.lc
similarity index 87%
rename from ghc/lib/std/cbits/getLock.c
rename to ghc/lib/std/cbits/getLock.lc
index c2b4762a820156e926342f94fcea4c71802991d9..1ed0dbf7eedfe3a70687b4bfd2e7a9d8634da960 100644
--- a/ghc/lib/std/cbits/getLock.c
+++ b/ghc/lib/std/cbits/getLock.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: getLock.c,v 1.1 1998/04/10 10:54:39 simonm Exp $
- *
- * stdin/stout/stderr Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[getLock.lc]{stdin/stout/stderr Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -42,7 +41,9 @@ static int readLocks = 0;
 static int writeLocks = 0;
 
 int
-lockFile(int fd, int exclusive)
+lockFile(fd, exclusive)
+int fd;
+int exclusive;
 {
     int i;
     struct stat sb;
@@ -85,7 +86,8 @@ lockFile(int fd, int exclusive)
 }
 
 int
-unlockFile(int fd)
+unlockFile(fd)
+int fd;
 {
     int i, rc;
 
@@ -109,7 +111,9 @@ unlockFile(int fd)
 }
 
 StgInt
-getLock(StgAddr fp, StgInt exclusive)
+getLock(fp, exclusive)
+StgForeignObj fp;
+StgInt exclusive;
 {
     if (lockFile(fileno((FILE *) fp), exclusive) < 0) {
 	if (errno == EBADF)
@@ -133,3 +137,4 @@ getLock(StgAddr fp, StgInt exclusive)
     return 1;
 }
 
+\end{code}
diff --git a/ghc/lib/std/cbits/inputReady.c b/ghc/lib/std/cbits/inputReady.lc
similarity index 91%
rename from ghc/lib/std/cbits/inputReady.c
rename to ghc/lib/std/cbits/inputReady.lc
index e987e5a704a199887a7aebf481d89c9d4ba8359c..8baa5829716d5c38c3442d66141f7e552401ae58 100644
--- a/ghc/lib/std/cbits/inputReady.c
+++ b/ghc/lib/std/cbits/inputReady.lc
@@ -1,17 +1,16 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: inputReady.c,v 1.1 1998/04/10 10:54:40 simonm Exp $
- *
- * hReady Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[inputReady.lc]{hReady Runtime Support}
+
+\begin{code}
 
 /* select and supporting types is not */
 #ifndef _AIX
 #define NON_POSIX_SOURCE  
 #endif
 
-#include "Rts.h"
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -37,7 +36,9 @@
 #endif
 
 StgInt
-inputReady(StgAddr fp, StgInt nsecs)
+inputReady(fp, nsecs)
+StgForeignObj fp;
+StgInt nsecs;
 {
     int flags, c, fd, maxfd, ready;
     fd_set rfd;
@@ -121,3 +122,5 @@ inputReady(StgAddr fp, StgInt nsecs)
 	return 1;
     */
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/openFile.c b/ghc/lib/std/cbits/openFile.lc
similarity index 94%
rename from ghc/lib/std/cbits/openFile.c
rename to ghc/lib/std/cbits/openFile.lc
index d203bbb1ffc219c651b72eef91941041ab743a64..4b92aca8b5883e134262fac56a2f8c8122bb08b7 100644
--- a/ghc/lib/std/cbits/openFile.c
+++ b/ghc/lib/std/cbits/openFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: openFile.c,v 1.1 1998/04/10 10:54:42 simonm Exp $
- *
- * openFile Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[openFile.lc]{openFile Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -26,7 +25,9 @@
 #endif
 
 StgAddr
-openFile(StgByteArray file, StgByteArray how)
+openFile(file, how)
+StgByteArray file;
+StgByteArray how;
 {
     FILE *fp;
     int fd;
@@ -55,7 +56,7 @@ openFile(StgByteArray file, StgByteArray how)
 	break;
     default:
 	fprintf(stderr, "openFile: unknown mode `%s'\n", how);
-	exit(EXIT_FAILURE);
+	EXIT(EXIT_FAILURE);
     }
 
     /* First try to open without creating */
@@ -212,3 +213,5 @@ openFile(StgByteArray file, StgByteArray how)
 
     return (StgAddr) fp;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/readFile.c b/ghc/lib/std/cbits/readFile.lc
similarity index 79%
rename from ghc/lib/std/cbits/readFile.c
rename to ghc/lib/std/cbits/readFile.lc
index 2ae839c345c116e09a5265e8a3e9c63c59bc499c..0cc9c2c7b9319ef3e95be070e9fbb1afd91443b3 100644
--- a/ghc/lib/std/cbits/readFile.c
+++ b/ghc/lib/std/cbits/readFile.lc
@@ -1,18 +1,20 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: readFile.c,v 1.1 1998/04/10 10:54:43 simonm Exp $
- *
- * hGetContents Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[readFile.lc]{hGetContents Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #define EOT 4
 
 StgInt
-readBlock(StgAddr buf, StgAddr fp, StgInt size)
+readBlock(buf, fp, size)
+StgAddr buf;
+StgForeignObj fp;
+StgInt size;
 {
     int count;
 
@@ -39,7 +41,10 @@ readBlock(StgAddr buf, StgAddr fp, StgInt size)
 }
 
 StgInt
-readLine(StgAddr buf, StgAddr fp, StgInt size)
+readLine(buf, fp, size)
+StgAddr buf;
+StgForeignObj fp;
+StgInt size;
 {
     if (feof((FILE *) fp)) {
 	ghc_errtype = ERR_EOF;
@@ -64,7 +69,8 @@ readLine(StgAddr buf, StgAddr fp, StgInt size)
 }
 
 StgInt
-readChar(StgAddr fp)
+readChar(fp)
+StgForeignObj fp;
 {
     int c;
 
@@ -92,3 +98,5 @@ readChar(StgAddr fp)
     else
         return c;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/removeDirectory.c b/ghc/lib/std/cbits/removeDirectory.lc
similarity index 77%
rename from ghc/lib/std/cbits/removeDirectory.c
rename to ghc/lib/std/cbits/removeDirectory.lc
index 9eb53109f4d0d48652bd7bf3f516ef7935defd82..3347fd7c0908924ba65ae7b31a577a86d60293fd 100644
--- a/ghc/lib/std/cbits/removeDirectory.c
+++ b/ghc/lib/std/cbits/removeDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: removeDirectory.c,v 1.1 1998/04/10 10:54:44 simonm Exp $
- *
- * removeDirectory Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[removeDirectory.lc]{removeDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,8 @@
 #endif
 
 StgInt
-removeDirectory(StgByteArray path)
+removeDirectory(path)
+StgByteArray path;
 {
     struct stat sb;
 
@@ -53,3 +53,5 @@ removeDirectory(StgByteArray path)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/removeFile.c b/ghc/lib/std/cbits/removeFile.lc
similarity index 72%
rename from ghc/lib/std/cbits/removeFile.c
rename to ghc/lib/std/cbits/removeFile.lc
index 12f2e99fc33dadad833db7cc6e2e4f54163eb7bd..095b6215b529f2a22739382addf520429b3886c0 100644
--- a/ghc/lib/std/cbits/removeFile.c
+++ b/ghc/lib/std/cbits/removeFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: removeFile.c,v 1.1 1998/04/10 10:54:45 simonm Exp $
- *
- * removeFile Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[removeFile.lc]{removeFile Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,8 @@
 #endif
 
 StgInt
-removeFile(StgByteArray path)
+removeFile(path)
+StgByteArray path;
 {
     struct stat sb;
 
@@ -44,3 +44,5 @@ removeFile(StgByteArray path)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/renameDirectory.c b/ghc/lib/std/cbits/renameDirectory.lc
similarity index 69%
rename from ghc/lib/std/cbits/renameDirectory.c
rename to ghc/lib/std/cbits/renameDirectory.lc
index 95c3af121732b1f34128a84aff1a01c8aace130e..2a41186bfe175b2125ade2b7f8d92aa1d9e76490 100644
--- a/ghc/lib/std/cbits/renameDirectory.c
+++ b/ghc/lib/std/cbits/renameDirectory.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: renameDirectory.c,v 1.1 1998/04/10 10:54:47 simonm Exp $
- *
- * renameDirectory Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[renameDirectory.lc]{renameDirectory Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,9 @@
 #endif
 
 StgInt
-renameDirectory(StgByteArray opath, StgByteArray npath)
+renameDirectory(opath, npath)
+StgByteArray opath;
+StgByteArray npath;
 {
     struct stat sb;
 
@@ -44,3 +45,4 @@ renameDirectory(StgByteArray opath, StgByteArray npath)
     }
     return 0;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/renameFile.c b/ghc/lib/std/cbits/renameFile.lc
similarity index 91%
rename from ghc/lib/std/cbits/renameFile.c
rename to ghc/lib/std/cbits/renameFile.lc
index c52d5753508fe11907e2abb1ceec6fc9f93a762d..2bcb9c0e0486240551ebcd20bef85c563ab27442 100644
--- a/ghc/lib/std/cbits/renameFile.c
+++ b/ghc/lib/std/cbits/renameFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: renameFile.c,v 1.1 1998/04/10 10:54:48 simonm Exp $
- *
- * renameFile Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[renameFile.lc]{renameFile Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -22,7 +21,9 @@
 #endif
 
 StgInt
-renameFile(StgByteArray opath, StgByteArray npath)
+renameFile(opath, npath)
+StgByteArray opath;
+StgByteArray npath;
 {
     struct stat sb;
     int fd;
@@ -128,3 +129,4 @@ renameFile(StgByteArray opath, StgByteArray npath)
     close(fd);    
     return 0;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/seekFile.c b/ghc/lib/std/cbits/seekFile.lc
similarity index 88%
rename from ghc/lib/std/cbits/seekFile.c
rename to ghc/lib/std/cbits/seekFile.lc
index 2946fe2e630203151a3ee821d592b09c73e0828e..48c0cf7d3b91a942cc3991a09815a07f96365862 100644
--- a/ghc/lib/std/cbits/seekFile.c
+++ b/ghc/lib/std/cbits/seekFile.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: seekFile.c,v 1.1 1998/04/10 10:54:49 simonm Exp $
- *
- * hSeek and hIsSeekable Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[seekFile.lc]{hSeek and hIsSeekable Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -18,7 +17,11 @@
 #endif
 
 StgInt
-seekFile(StgAddr fp, StgInt whence, StgInt size, StgByteArray d)
+seekFile(fp, whence, size, d)
+StgForeignObj fp;
+StgInt whence;
+StgInt size;
+StgByteArray d;
 {
     struct stat sb;
     long int offset;
@@ -102,7 +105,8 @@ seekFile(StgAddr fp, StgInt whence, StgInt size, StgByteArray d)
 }
 
 StgInt
-seekFileP(StgAddr fp)
+seekFileP(fp)
+StgForeignObj fp;
 {
     struct stat sb;
 
@@ -124,3 +128,8 @@ seekFileP(StgAddr fp)
 	return 0;
     }
 }
+
+\end{code}
+
+
+
diff --git a/ghc/lib/std/cbits/setBuffering.c b/ghc/lib/std/cbits/setBuffering.lc
similarity index 89%
rename from ghc/lib/std/cbits/setBuffering.c
rename to ghc/lib/std/cbits/setBuffering.lc
index b8cf4139fa3588ff31afe51e9ec683b65ebd9281..0169b50ce2f26c62a8b21fd214d8892450782e00 100644
--- a/ghc/lib/std/cbits/setBuffering.c
+++ b/ghc/lib/std/cbits/setBuffering.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: setBuffering.c,v 1.1 1998/04/10 10:54:51 simonm Exp $
- *
- * hSetBuffering Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[setBuffering.lc]{hSetBuffering Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -30,7 +29,9 @@
 #define SB_BB (-2)
 
 StgInt
-setBuffering(StgAddr fp, StgInt size)
+setBuffering(fp, size)
+StgForeignObj fp;
+StgInt size;
 {
     int flags;
     int input;
@@ -118,3 +119,5 @@ setBuffering(StgAddr fp, StgInt size)
     }
     return 0;
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/setCurrentDirectory.c b/ghc/lib/std/cbits/setCurrentDirectory.c
deleted file mode 100644
index 60fbdaf520ae76e02513c9f80df7c96e761ef061..0000000000000000000000000000000000000000
--- a/ghc/lib/std/cbits/setCurrentDirectory.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: setCurrentDirectory.c,v 1.1 1998/04/10 10:54:52 simonm Exp $
- *
- * setCurrentDirectory Runtime Support
- */
-
-#include "Rts.h"
-#include "stgio.h"
-
-StgInt
-setCurrentDirectory(StgByteArray path)
-{
-    while (chdir(path) != 0) {
-	if (errno != EINTR) {
-	    cvtErrno();
-	    stdErrno();
-	    return -1;
-	}
-    }
-    return 0;
-}
diff --git a/ghc/lib/std/cbits/setCurrentDirectory.lc b/ghc/lib/std/cbits/setCurrentDirectory.lc
new file mode 100644
index 0000000000000000000000000000000000000000..96fdf59fa9bb85d069834f0fc27b81c8fe36d7bb
--- /dev/null
+++ b/ghc/lib/std/cbits/setCurrentDirectory.lc
@@ -0,0 +1,25 @@
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[setCurrentDirectory.lc]{setCurrentDirectory Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
+#include "stgio.h"
+
+StgInt
+setCurrentDirectory(path)
+StgByteArray path;
+{
+    while (chdir(path) != 0) {
+	if (errno != EINTR) {
+	    cvtErrno();
+	    stdErrno();
+	    return -1;
+	}
+    }
+    return 0;
+}
+
+\end{code}
diff --git a/ghc/lib/std/cbits/showTime.c b/ghc/lib/std/cbits/showTime.lc
similarity index 83%
rename from ghc/lib/std/cbits/showTime.c
rename to ghc/lib/std/cbits/showTime.lc
index 3e2bfd7e9f98e4f2bc0042cdbda190aaace94d5c..08adcd50f4e791bea3e17b478e2553bb08d92560 100644
--- a/ghc/lib/std/cbits/showTime.c
+++ b/ghc/lib/std/cbits/showTime.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: showTime.c,v 1.1 1998/04/10 10:54:53 simonm Exp $
- *
- * ClockTime.showsPrec Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[showTime.lc]{ClockTime.showsPrec Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #if TIME_WITH_SYS_TIME
@@ -49,3 +48,4 @@ showTime(I_ size, StgByteArray d, StgByteArray buf)
        return (StgAddr)buf;
     return (StgAddr)strcpy(buf, "ClockTime.show{LibTime}: internal error");
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/system.c b/ghc/lib/std/cbits/system.lc
similarity index 86%
rename from ghc/lib/std/cbits/system.c
rename to ghc/lib/std/cbits/system.lc
index aff3a88e8ec844433775e6e8f2812096b0f14584..924c8d4636771faf6957597640e88686de5bb140 100644
--- a/ghc/lib/std/cbits/system.c
+++ b/ghc/lib/std/cbits/system.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: system.c,v 1.1 1998/04/10 10:54:55 simonm Exp $
- *
- * system Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[system.lc]{system Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 #ifdef HAVE_SYS_WAIT_H
@@ -22,7 +21,8 @@
 #endif
 
 StgInt
-systemCmd(StgByteArray cmd)
+systemCmd(cmd)
+StgByteArray cmd;
 {
 #if defined(cygwin32_TARGET_OS)
    /* The implementation of std. fork() has its problems
@@ -77,3 +77,5 @@ systemCmd(StgByteArray cmd)
     return -1;
 #endif
 }
+
+\end{code}
diff --git a/ghc/lib/std/cbits/toClockSec.c b/ghc/lib/std/cbits/toClockSec.lc
similarity index 75%
rename from ghc/lib/std/cbits/toClockSec.c
rename to ghc/lib/std/cbits/toClockSec.lc
index 3d4a5d17172451e63e566df6256155d1026fa76e..3107ae37e33b5b6d4fb560b306535884021a355d 100644
--- a/ghc/lib/std/cbits/toClockSec.c
+++ b/ghc/lib/std/cbits/toClockSec.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: toClockSec.c,v 1.1 1998/04/10 10:54:57 simonm Exp $
- *
- * toClockSec Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[toClockSec.lc]{toClockSec Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "timezone.h"
 #include "stgio.h"
 
@@ -39,3 +38,4 @@ toClockSec(I_ year, I_ mon, I_ mday, I_ hour, I_ min, I_ sec, I_ isdst, StgByteA
     *(time_t *)res = t;
     return res;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/toLocalTime.c b/ghc/lib/std/cbits/toLocalTime.lc
similarity index 87%
rename from ghc/lib/std/cbits/toLocalTime.c
rename to ghc/lib/std/cbits/toLocalTime.lc
index 6e775b7d792ca899e7ff4db5ee84e84e1e13bf20..11a1e30d9b0f39e8d1a63ae52f6bf90249184436 100644
--- a/ghc/lib/std/cbits/toLocalTime.c
+++ b/ghc/lib/std/cbits/toLocalTime.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: toLocalTime.c,v 1.1 1998/04/10 10:54:58 simonm Exp $
- *
- * toCalendarTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[toLocalTime.lc]{toCalendarTime Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "timezone.h"
 #include "stgio.h"
 
@@ -65,3 +64,4 @@ toLocalTime(I_ size, StgByteArray d, StgByteArray res)
 
     return (StgAddr)res;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/toUTCTime.c b/ghc/lib/std/cbits/toUTCTime.lc
similarity index 88%
rename from ghc/lib/std/cbits/toUTCTime.c
rename to ghc/lib/std/cbits/toUTCTime.lc
index 80c41a36c29d0709afcd8dc072837ec1eb9e9870..86f449e286ceed73112ab5e83bee7bd470530b0b 100644
--- a/ghc/lib/std/cbits/toUTCTime.c
+++ b/ghc/lib/std/cbits/toUTCTime.lc
@@ -1,12 +1,11 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: toUTCTime.c,v 1.1 1998/04/10 10:54:59 simonm Exp $
- *
- * toUTCTime Runtime Support
- */
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1995
+%
+\subsection[toUTCTime.lc]{toUTCTime Runtime Support}
 
-#include "Rts.h"
+\begin{code}
+
+#include "rtsdefs.h"
 #include "timezone.h"
 #include "stgio.h"
 
@@ -70,3 +69,4 @@ toUTCTime(I_ size, StgByteArray d, StgByteArray res)
 
     return (StgAddr)res;
 }
+\end{code}
diff --git a/ghc/lib/std/cbits/writeFile.c b/ghc/lib/std/cbits/writeFile.lc
similarity index 69%
rename from ghc/lib/std/cbits/writeFile.c
rename to ghc/lib/std/cbits/writeFile.lc
index 65e1f95b7e30b4a9aec7757db72560bf3b03fba1..80b946f11724d09c53fdabd4eecd05d5421fc214 100644
--- a/ghc/lib/std/cbits/writeFile.c
+++ b/ghc/lib/std/cbits/writeFile.lc
@@ -1,16 +1,18 @@
-/* 
- * (c) The GRASP/AQUA Project, Glasgow University, 1994-1998
- *
- * $Id: writeFile.c,v 1.1 1998/04/10 10:55:00 simonm Exp $
- *
- * hPutStr Runtime Support
- */
-
-#include "Rts.h"
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1994
+%
+\subsection[writeFile.lc]{hPutStr Runtime Support}
+
+\begin{code}
+
+#include "rtsdefs.h"
 #include "stgio.h"
 
 StgInt
-writeFile(StgAddr buf, StgAddr fp, StgInt bytes)
+writeFile(buf, fp, bytes)
+StgAddr buf;
+StgForeignObj fp;
+StgInt bytes;
 {
     int count;
     char *p = (char *) buf;
@@ -35,7 +37,11 @@ writeFile(StgAddr buf, StgAddr fp, StgInt bytes)
 
 
 StgInt
-writeBuf(StgAddr fp, W_ elt_sz, I_ len, StgAddr buf)
+writeBuf(fp, elt_sz, len, buf)
+StgForeignObj fp;
+StgWord elt_sz;
+StgInt  len;
+StgAddr buf;
 {
     int count;
     char *p = (char *) buf;
@@ -57,3 +63,5 @@ writeBuf(StgAddr fp, W_ elt_sz, I_ len, StgAddr buf)
 
     return 0;
 }
+
+\end{code}