New set of files for the OS/2 port by Jeff Rush.
diff --git a/PC/os2vacpp/_tkinter.def b/PC/os2vacpp/_tkinter.def
new file mode 100644
index 0000000..49dab8d
--- /dev/null
+++ b/PC/os2vacpp/_tkinter.def
@@ -0,0 +1,8 @@
+LIBRARY        _TKINTER INITINSTANCE TERMINSTANCE
+DESCRIPTION    'Python Extension DLL v1.0 for Access to Tcl/Tk Environment'
+PROTMODE
+DATA           MULTIPLE NONSHARED
+
+EXPORTS
+               init_tkinter
+
diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c
index 3e7adf9..11caad2 100644
--- a/PC/os2vacpp/config.c
+++ b/PC/os2vacpp/config.c
@@ -50,7 +50,6 @@
 extern void initoperator();
 extern void initposix();
 extern void initregex();
-extern void initreop();
 extern void initrgbimg();
 extern void initrotor();
 extern void initsignal();
@@ -97,7 +96,6 @@
 #endif
         {"operator", initoperator},
         {"regex", initregex},
-        {"reop", initreop},
 //        {"rgbimg", initrgbimg},
 //        {"rotor", initrotor},
         {"signal", initsignal},
diff --git a/PC/os2vacpp/config.h b/PC/os2vacpp/config.h
index 373d009..e7901e3 100644
--- a/PC/os2vacpp/config.h
+++ b/PC/os2vacpp/config.h
@@ -4,10 +4,9 @@
 /**********************************************************************
  * config.h.  NOT Generated automatically by configure.
  *
- * This is a manually maintained version used for the Watcom,
- * Borland and Microsoft Visual C++ compilers on the MS Windows
- * platform, and the IBM VisualAge C/C++ compiler on the OS/2
- * platform.  It is a standard part of the Python distribution.
+ * This is a manually maintained version used for the IBM VisualAge
+ * C/C++ compiler on the OS/2 platform.  It is a standard part of
+ * the Python distribution.
  *
  * FILESYSTEM DEFINES:
  * The code specific to a particular way of naming files and
@@ -17,28 +16,12 @@
  *     DOSFILESYS   PCDOS-Style (for PCDOS, Windows and OS/2)
  *     MACFILESYS   Macintosh-Style
  *     UNIXFILESYS  Unix-Style
- *     AMIGAFILESYS AmigaDOS-Style (to-be-supported)
+ *     AMIGAFILESYS AmigaDOS-Style
  * 
  * Because of the different compilers and operating systems in
  * use on the Intel platform, neither the compiler name nor
  * the operating system name is sufficient.
  *
- * WINDOWS DEFINES:
- * The code specific to Windows should be wrapped around one of
- * the following #defines
- *
- * MS_WIN32 - Code specific to the MS Win32 API
- * MS_WIN16 - Code specific to the old 16 bit Windows API.
- * MS_WINDOWS - Code specific to Windows, but all versions.
- * MS_COREDLL - Code if the Python core is built as a DLL.
- *
- * Note that the old defines "NT" and "WIN32" are still supported, but
- * will soon be dropped.
- *
- * Also note that neither "_M_IX86" or "_MSC_VER" should be used for
- * any purpose other than "Windows Intel x86 specific" and "Microsoft
- * compiler specific".  Therefore, these should be very rare.
- *
  * OS/2 DEFINES:
  * The code specific to OS/2's Program API should be wrapped around
  *
@@ -64,565 +47,156 @@
 
 #include <io.h>
 
-#define HAVE_LIMITS_H
-#define HAVE_HYPOT
-#define DONT_HAVE_SIG_ALARM
-#define DONT_HAVE_SIG_PAUSE
-
-#define LONG_BIT               32
-
 /* Configuration Options for Finding Modules */
 #define PREFIX                 ""
 #define EXEC_PREFIX            ""
 
+/* Provide a default library so writers of extension modules
+ * won't have to explicitly specify it anymore
+ */
+#pragma library("Python15.lib")
+
 /***************************************************/
 /*    32-Bit IBM VisualAge C/C++ v3.0 for OS/2     */
 /*  (Convert Compiler Flags into Useful Switches)  */
 /***************************************************/
-#if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
-
-  #define COMPILER "[VisualAge C/C++]"
-  #define PYOS_OS2   /* Define Indicator of Operating System */
-  #define PYCC_VACPP /* Define Indicator of C Compiler */
+#define PLATFORM    "os2"
+#define COMPILER    "[VisualAge C/C++]"
+#define PYOS_OS2    /* Define Indicator of Operating System */
+#define PYCC_VACPP  /* Define Indicator of C Compiler */
 
   /* Platform Filesystem */
-  #define PYTHONPATH ".;.\\lib;.\\lib\\plat-win;.\\lib\\dos-8x3;.\\lib\\lib-tk"
-  #define DOSFILESYS /* OS/2 Uses the DOS File Naming Conventions */
-  /* #define IMPORT_8x3_NAMES */
+#define PYTHONPATH  ".;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
+#define DOSFILESYS  /* OS/2 Uses the DOS File Naming Conventions */
+/* #define IMPORT_8x3_NAMES (let's move up to long filenames) */
 
   /* Platform CPU-Mode Dependencies */
-  #define WORD_BIT  32  /* OS/2 is a 32-Bit Operating System */
+#define WORD_BIT                32 /* OS/2 is a 32-Bit Operating System */
+#define LONG_BIT                32
+#define SIZEOF_INT               4 /* Count of Bytes in an (int)            */
+#define SIZEOF_LONG              4 /* Count of Bytes in a (long)            */
+#define SIZEOF_VOID_P            4 /* Count of Bytes in a (void *)          */
+/* #define HAVE_LONG_LONG     1 */ /* VAC++ does not support (long long)    */
+/* #define SIZEOF_LONG_LONG   8 */ /* Count of Bytes in a (long long)       */
 
-  typedef int mode_t;
-  typedef int uid_t;
-  typedef int gid_t;
-  typedef int pid_t;
+/* Define if type char is unsigned and you are not using gcc.  */
+#ifndef __CHAR_UNSIGNED__
+/* #undef __CHAR_UNSIGNED__ */
+#endif
 
-  #if defined(__MULTI__)  /* If Compiler /Gt+ Multithread Option Enabled,  */
-    #define WITH_THREAD     /* Then Enable Threading Throughout Python     */
-    #define OS2_THREADS     /* And Use the OS/2 Flavor of Threads          */
-  #endif
+typedef int mode_t;
+typedef int uid_t;
+typedef int gid_t;
+typedef int pid_t;
+
+#if defined(__MULTI__)     /* If Compiler /Gt+ Multithread Option Enabled,  */
+  #define WITH_THREAD            1 /* Enable Threading Throughout Python    */
+  #define OS2_THREADS            1 /* And Use the OS/2 Flavor of Threads    */
+/* #define _REENTRANT 1 */ /* Use thread-safe errno, h_errno, and other fns */
+#endif
 
   /* Compiler Runtime Library Capabilities */
 #include <ctype.h>
 #include <direct.h>
+/* #undef BAD_STATIC_FORWARD */ /* if compiler botches static fwd decls */
 
-  /* #define VA_LIST_IS_ARRAY */
-  #define HAVE_CLOCK        /* We support all of the Unix clock() API      */
-  #define HAVE_STRFTIME     /* We have a strftime() formatting function    */
-  #define HAVE_PUTENV       /* We have a putenv() function                 */
-  #define HAVE_SYS_SELECT_H /* We have sys/select.h (under TCP/IP dirs)    */
-  #define HAVE_PROTOTYPES   /* Our Compiler Supports C Function Prototypes */
+#define STDC_HEADERS             1 /* VAC++ is an ANSI C Compiler           */
+#define HAVE_LIMITS_H            1 /* #include <limits.h>                   */
+#define HAVE_STDLIB_H            1 /* #include <stdlib.h>                   */
+#define HAVE_HYPOT               1 /* hypot()                               */
+#define HAVE_PUTENV              1 /* putenv()                              */
+#define HAVE_STDDEF_H            1 /* #include <stddef.h>                   */
+/* #define VA_LIST_IS_ARRAY   1 */ /* if va_list is an array of some kind   */
 
-  #ifdef USE_DL_EXPORT
-    #define DL_IMPORT(RTYPE) RTYPE _Export
-  #endif
+  /* Variable-Arguments/Prototypes */
+#define HAVE_PROTOTYPES          1 /* VAC++ supports C Function Prototypes  */
+#define HAVE_STDARG_H            1 /* #include <stdarg.h>                   */
+#define HAVE_STDARG_PROTOTYPES   1 /* Our <stdarg.h> has prototypes         */
 
-#endif /* VAC++ for OS/2 */
+  /* String/Memory/Locale Operations */
+#define HAVE_STRDUP              1 /* strdup()                              */
+#define HAVE_MEMMOVE             1 /* memmove()                             */
+#define HAVE_STRERROR            1 /* strerror()                            */
+#define HAVE_SETLOCALE           1 /* setlocale()                           */
+#define HAVE_LOCALE_H            1 /* #include <locale.h>                   */
+#define MALLOC_ZERO_RETURNS_NULL 1 /* Our malloc(0) returns a NULL ptr      */
 
-/***************************************************/
-/* 32-Bit Microsoft Visual C/C++ v2.0+ for Windows */
-/*  (Convert Compiler Flags into Useful Switches)  */
-/***************************************************/
-#if defined(_MSC_VER) && _MSC_VER > 850
-  /* Start of defines for MS_WIN32 using VC++ 2.0 and up */
-  #define NT        /* NT is obsolete - please use MS_WIN32 instead */
-  #define MS_WIN32
-  #define MS_WINDOWS
+  /* Signal Handling */
+#define RETSIGTYPE            void /* Return type of handlers (int or void) */
+#define HAVE_SIGNAL_H            1 /* #include <signal.h>                   */
+/* #undef WANT_SIGFPE_HANDLER   */ /* Handle SIGFPE (see Include/pyfpe.h)   */
+/* #define HAVE_ALARM         1 */ /* alarm()                               */
+/* #define HAVE_SIGINTERRUPT  1 */ /* siginterrupt()                        */
+/* #define HAVE_SIGRELSE      1 */ /* sigrelse()                            */
+#define DONT_HAVE_SIG_ALARM      1
+#define DONT_HAVE_SIG_PAUSE      1
 
-  /* For NT the Python core is in a DLL by default.  Test the
-   * standard macro MS_COREDLL to find out.  If you have an exception
-   * you must define MS_NO_COREDLL (do not test this macro)
-   */
-  #ifndef MS_NO_COREDLL
-    #define MS_COREDLL  /* Python core is in a DLL */
-    #ifndef USE_DL_EXPORT
-      #define USE_DL_IMPORT
-    #endif /* !USE_DL_EXPORT */
-  #endif /* !MS_NO_COREDLL */
+  /* Clock/Time Support */
+#define HAVE_FTIME               1 /* We have ftime() in <sys/timeb.h>      */
+#define HAVE_CLOCK               1 /* clock()                               */
+#define HAVE_STRFTIME            1 /* strftime()                            */
+#define HAVE_STRPTIME            1 /* strptime()                            */
+#define HAVE_MKTIME              1 /* mktime()                              */
+#define HAVE_TZNAME              1 /* No tm_zone but do have tzname[]       */
+#define HAVE_TIMES               1 /* #include <sys/times.h>                */
+#define HAVE_SYS_UTIME_H         1 /* #include <sys/utime.h>                */
+/* #define HAVE_UTIME_H       1 */ /* #include <utime.h>                    */
+#define HAVE_SYS_TIME_H          1 /* #include <sys/time.h>                 */
+/* #define TM_IN_SYS_TIME     1 */ /* <sys/time.h> declares struct tm       */
+#define HAVE_GETTIMEOFDAY        1 /* gettimeofday()                        */
+/* #define GETTIMEOFDAY_NO_TZ 1 */ /* gettimeofday() does not have 2nd arg  */
+/* #define HAVE_TIMEGM        1 */ /* timegm()                              */
+#define TIME_WITH_SYS_TIME       1 /* Mix <sys/time.h> and <time.h>         */
+#define SYS_SELECT_WITH_SYS_TIME 1 /* Mix <sys/select.h> and <sys/time.h>   */
+/* #define HAVE_ALTZONE       1 */ /* if <time.h> defines altzone           */
 
-  #ifdef _M_IX86
-    #define COMPILER "[MSC 32 bit (Intel)]"
-  #else
-    #define COMPILER "[MSC (Unknown)]"
-  #endif
+  /* Network/Sockets Support */
+#define HAVE_SYS_SELECT_H       1 /* #include <sys/select.h>                */
+#define BSD_SELECT              1 /* Use BSD versus OS/2 form of select()   */
+#define HAVE_SELECT             1 /* select()                               */
+#define HAVE_GETPEERNAME        1 /* getpeername()                          */
+/* #undef HAVE_GETHOSTNAME_R 1 */ /* gethostname_r()                        */
 
-  /* Platform Filesystem */
-  #define PYTHONPATH ".\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
-  #define DOSFILESYS /* Windows Uses the DOS File Naming Conventions */
+  /* File I/O */
+#define HAVE_DUP2                1 /* dup2()                                */
+#define HAVE_EXECV               1 /* execv()                               */
+#define HAVE_SETVBUF             1 /* setvbuf()                             */
+#define HAVE_GETCWD              1 /* getcwd()                              */
+#define HAVE_PIPE                1 /* pipe()     [OS/2-specific code added] */
+#define HAVE_FCNTL_H             1 /* #include <fcntl.h>                    */
+/* #define HAVE_FLOCK         1 */ /* flock()                               */
+/* #define HAVE_TRUNCATE      1 */ /* truncate()                            */
+/* #define HAVE_FTRUNCATE     1 */ /* ftruncate()                           */
+/* #define HAVE_LSTAT         1 */ /* lstat()                               */
+/* #define HAVE_DIRENT_H      1 */ /* #include <dirent.h>                   */
+/* #define HAVE_OPENDIR       1 */ /* opendir()                             */
 
-  /* Platform CPU-Mode Dependencies */
-  #define WORD_BIT 32
+  /* Process Operations */
+#define HAVE_GETPID              1 /* getpid()                              */
+#define HAVE_SYSTEM              1 /* system()                              */
+#define HAVE_WAIT                1 /* wait()                                */
+#define HAVE_KILL                1 /* kill()     [OS/2-specific code added] */
+#define HAVE_POPEN               1 /* popen()    [OS/2-specific code added] */
+/* #define HAVE_GETPPID       1 */ /* getppid()                             */
+/* #define HAVE_WAITPID       1 */ /* waitpid()                             */
+/* #define HAVE_FORK          1 */ /* fork()                                */
 
-  typedef int pid_t;
-  #define hypot _hypot
+  /* User/Group ID Queries */
+/* #define HAVE_GETEGID       1 */
+/* #define HAVE_GETEUID       1 */
+/* #define HAVE_GETGID        1 */
+/* #define HAVE_GETUID        1 */
 
-  /* Compiler Runtime Library Capabilities */
-  #pragma warning(disable:4113)
-  #include <stdio.h>
+  /* Unix-Specific */
+#define HAVE_SYS_UN_H            1 /* #include <sys/un.h>                   */
+/* #define HAVE_SYS_UTSNAME_H 1 */ /* #include <sys/utsname.h>              */
+/* #define HAVE_SYS_WAIT_H    1 */ /* #include <sys/wait.h>                 */
+/* #define HAVE_UNISTD_H      1 */ /* #include <unistd.h>                   */
+/* #define HAVE_UNAME         1 */ /* uname ()                              */
 
-  #define HAVE_CLOCK        /* We support all of the Unix clock() API      */
-  #define HAVE_STRFTIME     /* We have a strftime() formatting function    */
-  #define NT_THREADS
-  #define WITH_THREAD
-
-  #ifndef NETSCAPE_PI
-    #define USE_SOCKET
-  #endif
-
-  #ifdef USE_DL_IMPORT
-    #define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
-  #endif
-
-  #ifdef USE_DL_EXPORT
-    #define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
-  #endif
-#endif /* _MSC_VER && > 850 */
-
-/***************************************************/
-/* 16-Bit Microsoft Visual C/C++ v1.5+ for Windows */
-/*  (Convert Compiler Flags into Useful Switches)  */
-/***************************************************/
-#if defined(_MSC_VER) && _MSC_VER <= 850
-  #define COMPILER "[MSC 16-bit]"
-  #define MS_WIN16
-  #define MS_WINDOWS
-
-  /* Platform Filesystem */
-  #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
-  #define IMPORT_8x3_NAMES
-  #define DOSFILESYS /* Windows Uses the DOS File Naming Conventions */
-
-  /* Platform CPU-Mode Dependencies */
-  #define WORD_BIT 16
-
-  typedef int pid_t;
-
-  /* Compiler Runtime Library Capabilities */
-  #pragma warning(disable:4113)
-  #define memcpy memmove  /* memcpy dangerous pointer wrap in Win 3.1 */
-  #define hypot _hypot
-  #define SIGINT  2
-
-#include <stdio.h>
-
-  /* Windows 3.1 will not tolerate any console io in a dll */
-
-  #ifdef _USRDLL
-    #include <time.h>
-
-    #ifdef __cplusplus
-      extern "C" {
-    #endif
-
-    #define stdin   ((FILE *)0)
-    #define stdout  ((FILE *)1)
-    #define stderr  ((FILE *)2)
-
-    #define fflush  Py_fflush
-    int Py_fflush(FILE *);
-
-    #define fgets   Py_fgets
-    char *Py_fgets(char *, int, FILE *);
-
-    #define fileno  Py_fileno
-    int Py_fileno(FILE *);
-
-    #define fprintf Py_fprintf
-    int Py_fprintf(FILE *, const char *, ...);
-
-    #define printf  Py_printf
-    int Py_printf(const char *, ...);
-
-    #define sscanf  Py_sscanf
-    int Py_sscanf(const char *, const char *, ...);
-
-    clock_t  clock();
-    void     _exit(int);
-    void     exit(int);
-    int      sscanf(const char *, const char *, ...);
-
-    #ifdef __cplusplus
-      }
-    #endif
-  #endif /* _USRDLL */
-
-  #ifndef NETSCAPE_PI
-    /* use sockets, but not in a Netscape dll */
-    #define USE_SOCKET
-  #endif
-#endif /* MS_WIN16 */
-
-/***************************************************/
-/*      32-Bit Watcom C/C++ v?.? for Windows       */
-/*  (Convert Compiler Flags into Useful Switches)  */
-/***************************************************/
-#ifdef __WATCOMC__
-  #define COMPILER "[Watcom]"
-
-  /* Platform Filesystem */
-  #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
-  #define IMPORT_8x3_NAMES
-  #define DOSFILESYS /* Watcom Uses the DOS File Naming Conventions */
-
-  typedef int mode_t;
-  typedef int uid_t;
-  typedef int gid_t;
-  typedef int pid_t;
-
-  #if defined(__NT__)
-    #define NT  /* NT is obsolete - please use MS_WIN32 instead */
-    #define MS_WIN32
-    #define MS_WINDOWS
-    #define NT_THREADS
-    #define USE_SOCKET
-    #define WITH_THREAD
-  #elif defined(__WINDOWS__)
-    #define MS_WIN16
-    #define MS_WINDOWS
-  #endif
-
-  #ifdef M_I386
-    #define WORD_BIT 32
-  #else
-    #define WORD_BIT 16
-  #endif
-
-  /* Compiler Runtime Library Capabilities */
-  #include <ctype.h>
-  #include <direct.h>
-
-  #define VA_LIST_IS_ARRAY
-  #define HAVE_CLOCK
-  #define HAVE_STRFTIME
-
-  #ifdef USE_DL_EXPORT
-    #define DL_IMPORT(RTYPE) RTYPE __export
-  #endif
-#endif /* __WATCOMC__ */
-
-/***************************************************/
-/*      32-Bit Borland C/C++ v?.? for Windows      */
-/*  (Convert Compiler Flags into Useful Switches)  */
-/***************************************************/
-/* The Borland compiler defines __BORLANDC__ */
-/* XXX These defines are likely incomplete, but should be easy to fix. */
-#ifdef __BORLANDC__
-  #define COMPILER "[Borland]"
-
-  /* Platform Filesystem */
-  #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
-  #define IMPORT_8x3_NAMES
-  #define DOSFILESYS /* Borland Uses the DOS File Naming Conventions */
-
-  /* Compiler Runtime Library Capabilities */
-  #define HAVE_CLOCK
-  #define HAVE_STRFTIME
-
-  #ifdef USE_DL_IMPORT
-    #define DL_IMPORT(RTYPE)  RTYPE __import
-  #endif
-#endif /* BORLANDC */
-
-/********************************/
-/* End of compilers - finish up */
-/********************************/
-
-/****************************************
- * Adjustments for the Operating System
- ****************************************/
-#ifdef MS_WIN32
-  #define PLATFORM "win32"
-#else
-  #ifdef MS_WIN16
-    #define PLATFORM "win16"
-  #else
-    #ifdef PYOS_OS2
-      #define PLATFORM "os2"
-    #else
-      #define PLATFORM "dos"
-    #endif
-  #endif /* !MS_WIN16 */
-#endif /* !MS_WIN32 */
-
-/****************************************
- *   Supported Features in Runtime API
- ****************************************/
-
-/* Define if on AIX 3.
-   System headers sometimes define this.
-   We just want to avoid a redefinition error message.  */
-#ifndef _ALL_SOURCE
-/* #undef _ALL_SOURCE */
+#ifdef USE_DL_EXPORT
+  #define DL_IMPORT(RTYPE) RTYPE _System
 #endif
 
-/* Define to empty if the keyword does not work.  */
-/* #define const  */
-
-/* Define if you have dirent.h.  */
-/* #define DIRENT 1 */
-
-/* Define to the type of elements in the array set by `getgroups'.
-   Usually this is either `int' or `gid_t'.  */
-/* #undef GETGROUPS_T */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef gid_t */
-
-/* Define if your struct tm has tm_zone.  */
-/* #undef HAVE_TM_ZONE */
-
-/* Define if you don't have tm_zone but do have the external array
-   tzname.  */
-#define HAVE_TZNAME
-
-/* Define if on MINIX.  */
-/* #undef _MINIX */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef mode_t */
-
-/* Define if you don't have dirent.h, but have ndir.h.  */
-/* #undef NDIR */
-
-/* Define to `long' if <sys/types.h> doesn't define.  */
-/* #undef off_t */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef pid_t */
-
-/* Define if the system does not provide POSIX.1 features except
-   with this defined.  */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define if you need to in order for stat and other things to work.  */
-/* #undef _POSIX_SOURCE */
-
-/* Define as the return type of signal handlers (int or void).  */
-#define RETSIGTYPE void
-
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-/* #undef size_t */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if you don't have dirent.h, but have sys/dir.h.  */
-/* #undef SYSDIR */
-
-/* Define if you don't have dirent.h, but have sys/ndir.h.  */
-/* #undef SYSNDIR */
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define if your <sys/time.h> declares struct tm.  */
-/* #define TM_IN_SYS_TIME 1 */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef uid_t */
-
-/* Define if the closedir function returns void instead of int.  */
-/* #undef VOID_CLOSEDIR */
-
-/* Define if your <unistd.h> contains bad prototypes for exec*()
-   (as it does on SGI IRIX 4.x) */
-/* #undef BAD_EXEC_PROTOTYPES */
-
-/* Define if your compiler botches static forward declarations
-   (as it does on SCI ODT 3.0) */
-/* #define BAD_STATIC_FORWARD 1 */
-
-/* Define if getpgrp() must be called as getpgrp(0)
-   and (consequently) setpgrp() as setpgrp(0, 0). */
-/* #undef GETPGRP_HAVE_ARGS */
-
-/* Define this if your time.h defines altzone */
-/* #define HAVE_ALTZONE */
-
-/* Define if you have the putenv function.  */
-#ifdef MS_WIN32
-/* Does this exist on Win16? */
-#define HAVE_PUTENV
-#endif
-
-/* Define if your compiler supports function prototypes */
-#define HAVE_PROTOTYPES
-
-/* Define if  you can safely include both <sys/select.h> and <sys/time.h>
-   (which you can't on SCO ODT 3.0). */
-/* #undef SYS_SELECT_WITH_SYS_TIME */
-
-/* Define if you want to use SGI (IRIX 4) dynamic linking.
-   This requires the "dl" library by Jack Jansen,
-   ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
-   Don't bother on IRIX 5, it already has dynamic linking using SunOS
-   style shared libraries */
-/* #undef WITH_SGI_DL */
-
-/* Define if you want to emulate SGI (IRIX 4) dynamic linking.
-   This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
-   Sequent Symmetry (Dynix), and Atari ST.
-   This requires the "dl-dld" library,
-   ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
-   as well as the "GNU dld" library,
-   ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
-   Don't bother on SunOS 4 or 5, they already have dynamic linking using
-   shared libraries */
-/* #undef WITH_DL_DLD */
-
-/* Define if you want to compile in rudimentary thread support */
-/* #undef WITH_THREAD */
-
-/* Define if you want to use the GNU readline library */
-/* #define WITH_READLINE 1 */
-
-/* Define if you have clock.  */
-#define HAVE_CLOCK
-
-/* Define if you have ftime.  */
-#define HAVE_FTIME
-
-/* Define if you have getpeername.  */
-#define HAVE_GETPEERNAME
-
-/* Define if you have getpgrp.  */
-/* #undef HAVE_GETPGRP */
-
-/* Define if you have getpid.  */
-#define HAVE_GETPID
-
-/* Define if you have gettimeofday.  */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define if you have getwd.  */
-/* #undef HAVE_GETWD */
-
-/* Define if you have lstat.  */
-/* #undef HAVE_LSTAT */
-
-/* Define if you have nice.  */
-/* #undef HAVE_NICE */
-
-/* Define if you have readlink.  */
-/* #undef HAVE_READLINK */
-
-/* Define if you have select.  */
-/* #undef HAVE_SELECT */
-
-/* Define if you have setpgid.  */
-/* #undef HAVE_SETPGID */
-
-/* Define if you have setpgrp.  */
-/* #undef HAVE_SETPGRP */
-
-/* Define if you have setsid.  */
-/* #undef HAVE_SETSID */
-
-/* Define if you have setvbuf.  */
-#define HAVE_SETVBUF
-
-/* Define if you have siginterrupt.  */
-/* #undef HAVE_SIGINTERRUPT */
-
-/* Define if you have symlink.  */
-/* #undef HAVE_SYMLINK */
-
-/* Define if you have tcgetpgrp.  */
-/* #undef HAVE_TCGETPGRP */
-
-/* Define if you have tcsetpgrp.  */
-/* #undef HAVE_TCSETPGRP */
-
-/* Define if you have times.  */
-#define HAVE_TIMES
-
-/* Define if you have uname.  */
-/* #undef HAVE_UNAME */
-
-/* Define if you have waitpid.  */
-/* #undef HAVE_WAITPID */
-
-/* Define if you have the <dlfcn.h> header file.  */
-/* #undef HAVE_DLFCN_H */
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <signal.h> header file.  */
-#define HAVE_SIGNAL_H 1
-
-/* Define if you have the <stdarg.h> header file.  */
-#define HAVE_STDARG_H 1
-
-/* Define if you have the <stdarg.h> prototypes.  */
-#define HAVE_STDARG_PROTOTYPES 1
-
-/* Define if malloc(0) returns a NULL pointer */
-#define MALLOC_ZERO_RETURNS_NULL 1
-
-/* Define if you have the <stdlib.h> header file.  */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <sys/audioio.h> header file.  */
-/* #undef HAVE_SYS_AUDIOIO_H */
-
-/* Define if you have the <sys/param.h> header file.  */
-/* #define HAVE_SYS_PARAM_H 1 */
-
-/* Define if you have the <sys/select.h> header file.  */
-/* #define HAVE_SYS_SELECT_H 1 */
-
-/* Define if you have the <sys/time.h> header file.  */
-/* #define HAVE_SYS_TIME_H 1 */
-
-/* Define if you have the <sys/times.h> header file.  */
-/* #define HAVE_SYS_TIMES_H 1 */
-
-/* Define if you have the <sys/un.h> header file.  */
-/* #define HAVE_SYS_UN_H 1 */
-
-/* Define if you have the <sys/utime.h> header file.  */
-#define HAVE_SYS_UTIME_H 1
-
-/* Define if you have the <sys/utsname.h> header file.  */
-/* #define HAVE_SYS_UTSNAME_H 1 */
-
-/* Define if you have the <thread.h> header file.  */
-/* #undef HAVE_THREAD_H */
-
-/* Define if you have the <unistd.h> header file.  */
-/* #define HAVE_UNISTD_H 1 */
-
-/* Define if you have the <utime.h> header file.  */
-/* #define HAVE_UTIME_H 1 */
-
-/* Define if you have the dl library (-ldl).  */
-/* #undef HAVE_LIBDL */
-
-/* Define if you have the mpc library (-lmpc).  */
-/* #undef HAVE_LIBMPC */
-
-/* Define if you have the nsl library (-lnsl).  */
-#define HAVE_LIBNSL 1
-
-/* Define if you have the seq library (-lseq).  */
-/* #undef HAVE_LIBSEQ */
-
-/* Define if you have the socket library (-lsocket).  */
-#define HAVE_LIBSOCKET 1
-
-/* Define if you have the sun library (-lsun).  */
-/* #undef HAVE_LIBSUN */
-
-/* Define if you have the termcap library (-ltermcap).  */
-/* #undef HAVE_LIBTERMCAP */
-
-/* Define if you have the termlib library (-ltermlib).  */
-/* #undef HAVE_LIBTERMLIB */
-
-/* Define if you have the thread library (-lthread).  */
-/* #undef HAVE_LIBTHREAD */
-
 #endif /* !Py_CONFIG_H */
 
diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile
index d609d50..c60cd80 100644
--- a/PC/os2vacpp/makefile
+++ b/PC/os2vacpp/makefile
@@ -26,6 +26,7 @@
 #
 # History (Most Recent First)
 #
+# 26-Sep-98 jrr Retested and adjusted for building w/Python 1.5.2a1
 # 20-Nov-97 jrr Cleaned Up for Applying to Distribution
 # 29-Oct-97 jrr Modified for Use with Python 1.5 Alpha 4
 # 03-Aug-96 jrr Original for Use with Python 1.4 Release
@@ -48,18 +49,24 @@
 # Where to Find the IBM TCP/IP Socket Includes and Libraries
 OS2TCPIP        = C:\MPTN
 
+# Where to Find the Tcl/Tk Base Directory for Libs/Includes
+TCLTK		= D:\TclTk
+TCLBASE		= D:\Tcl7.6\OS2
+TKBASE		= D:\Tk4.2\OS2
+
 # Where to Put the .OBJ Files, To Keep Them Out of the Way
 PATHOBJ		= obj
 
 # Search Path for Include Files
-PROJINCLUDE	= .;$(OS2TCPIP)\Include;$(PY_INCLUDES)
+PROJINCLUDE	= .;$(TCLBASE);$(TKBASE);$(OS2TCPIP)\Include;$(PY_INCLUDES)
 
 # Place to Search for Sources re OpusMAKE Dependency Generator (Commercial)
 MKMF_SRCS	= $(PY_MODULES)\*.c $(PY_OBJECTS)\*.c $(PY_PARSER)\*.c $(PY_PYTHON)\*.c
 
 #.HDRPATH.c	:= $(PROJINCLUDE,;= ) $(.HDRPATH.c)
 #.PATH.c         = .;$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
-OTHERLIBS	= $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib
+OTHERLIBS	= $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib \
+                  $(TCLTK)\Lib\Tcl76.lib $(TCLTK)\Lib\Tk42.lib
 
 #################
 # Inference Rules
@@ -171,7 +178,6 @@
                   $(PATHOBJ)\PosixModule.obj   \
                   $(PATHOBJ)\RegexModule.obj   \
                   $(PATHOBJ)\RegExpr.obj       \
-                  $(PATHOBJ)\ReopModule.obj    \
                   $(PATHOBJ)\SelectModule.obj  \
                   $(PATHOBJ)\SignalModule.obj  \
                   $(PATHOBJ)\SocketModule.obj  \
@@ -204,6 +210,8 @@
 		# /G4  = Generate Code for 486 (Use 386 for Debugger)
 		# /Gm  = Use Multithread Runtime
 		# /Gd  = Dynamically Load Runtime
+		# /Ms  = Use _System Calling Convention (vs _Optlink)
+		#        (to allow non-VAC++ code to call into Python15.dll)
 
 _OPT		= /O /Gl
 		# /O   = Enable Speed-Optimizations
@@ -238,7 +246,8 @@
 ###################
 # Primary Target(s)
 ###################
-All:  obj noise PyCore.lib Python15.lib Python15.dll Python.exe PGen.exe
+All:  obj noise PyCore.lib Python15.lib PGen.exe \
+      Python.exe PythonPM.exe Python15.dll _tkinter.dll
 
 Modules: $(MODULES)
 Objects: $(OBJECTS)
@@ -257,6 +266,15 @@
 #
 ##############
 
+# Python Extension DLL: Tcl/Tk Interface
+_tkinter.dll: $(PATHOBJ)\_tkinter.obj Python15.lib _tkinter.def
+	@ Echo Linking $@ As DLL
+	@ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+$(PATHOBJ)\_tkinter.obj: $(PY_MODULES)\_tkinter.c
+	@ Echo Compiling $**
+	@ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
+
 # Object Library of All Essential Python Routines
 PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj
 	@ Echo Adding Updated Object Files to Link Library $@
@@ -265,6 +283,8 @@
 Python15.dll: $(PATHOBJ)\Compile.obj PyCore.lib Python.def
 	@ Echo Linking $@ As DLL
 	@ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+	@ Echo Compressing $@ with LxLite
+	@ lxlite $@
 
 # IBM Linker Requires One Explicit .OBJ To Build a .DLL from a .LIB
 $(PATHOBJ)\Compile.obj: $(PY_PYTHON)\Compile.c
@@ -277,10 +297,15 @@
 	@ IMPLIB /NOLOGO /NOIGNORE $@ $** >>$(ERRS)
 	@ ILIB /NOLOGO /CONVFORMAT /NOEXTDICTIONARY /NOBROWSE /NOBACKUP $@; >>$(ERRS)
 
-# Small Program to Start Interpreter in Python15.dll
+# Small Command-Line Program to Start Interpreter in Python15.dll
 Python.exe: $(PATHOBJ)\Python.obj Python15.lib
 	@ Echo Linking $@ As EXE
-	@ $(CC) $(CFLAGS) $(_EXE) /B"/STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+	@ $(CC) $(CFLAGS) $(_EXE) /B"/PM:VIO /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+
+# Small PM-GUI Program to Start Interpreter in Python15.dll
+PythonPM.exe: $(PATHOBJ)\Python.obj Python15.lib
+	@ Echo Linking $@ As EXE
+	@ $(CC) $(CFLAGS) $(_EXE) /B"/PM:PM /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
 
 PGen.exe: $(PGEN) PyCore.lib
 	@ Echo Linking $@ As EXE
@@ -305,6 +330,7 @@
 	-- @Echo Y | copy /U Python.exe   D:\EXEs
 	-- @Echo Y | copy /U Python15.dll D:\DLLs
 	-- @Echo Y | copy /U Python15.lib E:\Tau\Lib
+	-- @Echo Y | copy /U _tkinter.dll D:\Python
 
 test:
         python ..\..\lib\test\regrtest.py
@@ -947,19 +973,6 @@
 	 $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \
 	 $(PY_INCLUDE)\tupleobject.h
 
-reopmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \
-	 $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h config.h \
-	 $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \
-	 $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \
-	 $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \
-	 $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \
-	 $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \
-	 $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \
-	 $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \
-	 $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \
-	 $(PY_MODULES)\regexpr.h $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \
-	 $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h
-
 resource.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\time.h $(PY_INCLUDE)\ceval.h \
 	 $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \
 	 config.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \
diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def
index b671d83..6477536 100644
--- a/PC/os2vacpp/python.def
+++ b/PC/os2vacpp/python.def
@@ -4,369 +4,472 @@
 DATA           MULTIPLE NONSHARED
 
 EXPORTS
-                ; Data
-                PyCFunction_Type
-                PyCObject_Type
-                PyClass_Type
-                PyCode_Type
-                PyComplex_Type
-                PyDict_Type
-                PyExc_ArithmeticError
-                PyExc_AttributeError
-                PyExc_EOFError
-                PyExc_Exception
-                PyExc_FloatingPointError
-                PyExc_IOError
-                PyExc_ImportError
-                PyExc_IndexError
-                PyExc_KeyError
-                PyExc_KeyboardInterrupt
-                PyExc_LookupError
-                PyExc_MemoryError
-                PyExc_NameError
-                PyExc_OverflowError
-                PyExc_RuntimeError
-                PyExc_StandardError
-                PyExc_SyntaxError
-                PyExc_SystemError
-                PyExc_SystemExit
-                PyExc_TypeError
-                PyExc_ValueError
-                PyExc_ZeroDivisionError
-                PyFile_Type
-                PyFloat_Type
-                PyFrame_Type
-                PyFunction_Type
-                PyInstance_Type
-                PyInt_Type
-                PyList_Type
-                PyLong_Type
-                PyMethod_Type
-                PyModule_Type
-                PyOS_InputHook
-                PyOS_ReadlineFunctionPointer
-                PyRange_Type
-                PySlice_Type
-                PyString_Type
-                PyTuple_Type
-                PyType_Type
-                Py_DebugFlag
-                Py_InteractiveFlag
-                Py_NoSiteFlag
-                Py_UseClassExceptionsFlag
-                Py_VerboseFlag
-                _PyParser_Grammar
-                _PyParser_TokenNames
-                _PyThread_Started
-                _Py_EllipsisObject
-                _Py_NoneStruct
-                _Py_TrueStruct
-                _Py_ZeroStruct
+               ; Data
+               PyCFunction_Type
+               PyCObject_Type
+               PyClass_Type
+               PyCode_Type
+               PyComplex_Type
+               PyDict_Type
+               PyExc_ArithmeticError
+               PyExc_AssertionError
+               PyExc_AttributeError
+               PyExc_EOFError
+               PyExc_EnvironmentError
+               PyExc_Exception
+               PyExc_FloatingPointError
+               PyExc_IOError
+               PyExc_ImportError
+               PyExc_IndexError
+               PyExc_KeyError
+               PyExc_KeyboardInterrupt
+               PyExc_LookupError
+               PyExc_MemoryError
+               PyExc_MemoryErrorInst
+               PyExc_NameError
+               PyExc_OSError
+               PyExc_OverflowError
+               PyExc_RuntimeError
+               PyExc_StandardError
+               PyExc_SyntaxError
+               PyExc_SystemError
+               PyExc_SystemExit
+               PyExc_TypeError
+               PyExc_ValueError
+               PyExc_ZeroDivisionError
+               PyFile_Type
+               PyFloat_Type
+               PyFrame_Type
+               PyFunction_Type
+               PyImport_FrozenModules
+               PyImport_Inittab
+               PyInstance_Type
+               PyInt_Type
+               PyList_Type
+               PyLong_Type
+               PyMethod_Type
+               PyModule_Type
+               PyOS_InputHook
+               PyOS_ReadlineFunctionPointer
+               PyRange_Type
+               PySlice_Type
+               PyString_Type
+               PyTraceBack_Type
+               PyTuple_Type
+               PyType_Type
+               Py_DebugFlag
+               Py_FrozenFlag
+               Py_InteractiveFlag
+               Py_NoSiteFlag
+               Py_OptimizeFlag
+               Py_TabcheckFlag
+               Py_UseClassExceptionsFlag
+               Py_VerboseFlag
+               _PyImport_Filetab
+               _PyImport_Inittab
+               _PyParser_Grammar
+               _PyParser_TokenNames
+               _PyThread_Started
+               _Py_EllipsisObject
+               _Py_NoneStruct
+               _Py_PackageContext
+               _Py_TrueStruct
+               _Py_ZeroStruct
+               _Py_abstract_hack
+               _Py_cobject_hack
+               _Py_re_syntax
+               _Py_re_syntax_table
 
-                ; Code
-                PyArg_Parse
-                PyArg_ParseTuple
-                PyArg_ParseTupleAndKeywords
-                PyArg_VaParse
-                PyCFunction_GetFunction
-                PyCFunction_GetSelf
-                PyCFunction_New
-                PyCObject_AsVoidPtr
-                PyCObject_FromVoidPtr
-                PyCObject_Import
-                PyCallable_Check
-                PyClass_IsSubclass
-                PyClass_New
-                PyCode_New
-                PyComplex_AsCComplex
-                PyComplex_FromCComplex
-                PyComplex_FromDoubles
-                PyComplex_ImagAsDouble
-                PyComplex_RealAsDouble
-                PyDict_Clear
-                PyDict_DelItem
-                PyDict_DelItemString
-                PyDict_GetItem
-                PyDict_GetItemString
-                PyDict_Items
-                PyDict_Keys
-                PyDict_New
-                PyDict_Next
-                PyDict_SetItem
-                PyDict_SetItemString
-                PyDict_Size
-                PyDict_Values
-                PyErr_BadArgument
-                PyErr_BadInternalCall
-                PyErr_CheckSignals
-                PyErr_Clear
-                PyErr_Fetch
-                PyErr_Format
-                PyErr_NewException
-                PyErr_NoMemory
-                PyErr_Occurred
-                PyErr_Print
-                PyErr_Restore
-                PyErr_SetFromErrno
-                PyErr_SetInterrupt
-                PyErr_SetNone
-                PyErr_SetObject
-                PyErr_SetString
-                PyEval_AcquireLock
-                PyEval_AcquireThread
-                PyEval_CallObject
-                PyEval_CallObjectWithKeywords
-                PyEval_EvalCode
-                PyEval_GetBuiltins
-                PyEval_GetFrame
-                PyEval_GetGlobals
-                PyEval_GetLocals
-                PyEval_GetRestricted
-                PyEval_InitThreads
-                PyEval_ReleaseLock
-                PyEval_ReleaseThread
-                PyEval_RestoreThread
-                PyEval_SaveThread
-                PyFile_AsFile
-                PyFile_FromFile
-                PyFile_FromString
-                PyFile_GetLine
-                PyFile_Name
-                PyFile_SetBufSize
-                PyFile_SoftSpace
-                PyFile_WriteObject
-                PyFile_WriteString
-                PyFloat_AsDouble
-                PyFloat_AsString
-                PyFloat_FromDouble
-                PyFrame_BlockPop
-                PyFrame_BlockSetup
-                PyFrame_FastToLocals
-                PyFrame_LocalsToFast
-                PyFrame_New
-                PyFunction_GetCode
-                PyFunction_GetGlobals
-                PyFunction_New
-                PyGrammar_AddAccelerators
-                PyGrammar_FindDFA
-                PyGrammar_LabelRepr
-                PyImport_AddModule
-                PyImport_Cleanup
-                PyImport_FrozenModules
-                PyImport_GetMagicNumber
-                PyImport_GetModuleDict
-                PyImport_Import
-                PyImport_ImportFrozenModule
-                PyImport_ImportModule
-                PyImport_ImportModuleEx
-                PyImport_ReloadModule
-                PyInstance_DoBinOp
-                PyInstance_New
-                PyInt_AsLong
-                PyInt_FromLong
-                PyInt_GetMax
-                PyInterpreterState_Clear
-                PyInterpreterState_Delete
-                PyInterpreterState_New
-                PyList_Append
-                PyList_AsTuple
-                PyList_GetItem
-                PyList_GetSlice
-                PyList_Insert
-                PyList_New
-                PyList_Reverse
-                PyList_SetItem
-                PyList_SetSlice
-                PyList_Size
-                PyList_Sort
-                PyLong_AsDouble
-                PyLong_AsLong
-                PyLong_AsUnsignedLong
-                PyLong_FromDouble
-                PyLong_FromLong
-                PyLong_FromString
-                PyLong_FromUnsignedLong
-                PyMapping_Check
-                PyMapping_GetItemString
-                PyMapping_HasKey
-                PyMapping_HasKeyString
-                PyMapping_Length
-                PyMapping_SetItemString
-                PyMarshal_Init
-                PyMarshal_ReadLongFromFile
-                PyMarshal_ReadObjectFromFile
-                PyMarshal_ReadObjectFromString
-                PyMarshal_WriteLongToFile
-                PyMarshal_WriteObjectToFile
-                PyMem_Free
-                PyMem_Malloc
-                PyMem_Realloc
-                PyMember_Get
-                PyMember_Set
-                PyMethod_Class
-                PyMethod_Function
-                PyMethod_New
-                PyMethod_Self
-                PyModule_GetDict
-                PyModule_GetName
-                PyModule_New
-                PyNode_AddChild
-                PyNode_Compile
-                PyNode_Free
-                PyNode_New
-                PyNumber_Absolute
-                PyNumber_Add
-                PyNumber_And
-                PyNumber_Check
-                PyNumber_Coerce
-                PyNumber_Divide
-                PyNumber_Divmod
-                PyNumber_Float
-                PyNumber_Int
-                PyNumber_Invert
-                PyNumber_Long
-                PyNumber_Lshift
-                PyNumber_Multiply
-                PyNumber_Negative
-                PyNumber_Or
-                PyNumber_Positive
-                PyNumber_Power
-                PyNumber_Remainder
-                PyNumber_Rshift
-                PyNumber_Subtract
-                PyNumber_Xor
-                PyOS_GetLastModificationTime
-                PyOS_InitInterrupts
-                PyOS_InterruptOccurred
-                PyOS_Readline
-                PyOS_strtol
-                PyOS_strtoul
-                PyObject_CallFunction
-                PyObject_CallMethod
-                PyObject_CallObject
-                PyObject_Compare
-                PyObject_GetAttr
-                PyObject_GetAttrString
-                PyObject_GetItem
-                PyObject_HasAttrString
-                PyObject_Hash
-                PyObject_IsTrue
-                PyObject_Length
-                PyObject_Print
-                PyObject_Repr
-                PyObject_SetAttr
-                PyObject_SetAttrString
-                PyObject_SetItem
-                PyObject_Str
-                PyObject_Type
-                PyParser_AddToken
-                PyParser_Delete
-                PyParser_New
-                PyParser_ParseFile
-                PyParser_ParseString
-                PyParser_SimpleParseFile
-                PyParser_SimpleParseString
-                PyRange_New
-                PyRun_AnyFile
-                PyRun_File
-                PyRun_InteractiveLoop
-                PyRun_InteractiveOne
-                PyRun_SimpleFile
-                PyRun_SimpleString
-                PyRun_String
-                PySequence_Check
-                PySequence_Concat
-                PySequence_Count
-                PySequence_GetItem
-                PySequence_GetSlice
-                PySequence_In
-                PySequence_Index
-                PySequence_Length
-                PySequence_Repeat
-                PySequence_SetItem
-                PySequence_SetSlice
-                PySequence_Tuple
-                PySlice_GetIndices
-                PySlice_New
-                PyString_AsString
-                PyString_Concat
-                PyString_ConcatAndDel
-                PyString_Format
-                PyString_FromString
-                PyString_FromStringAndSize
-                PyString_Size
-                PySys_GetFile
-                PySys_GetObject
-                PySys_SetArgv
-                PySys_SetObject
-                PySys_SetPath
-                PyThreadState_Clear
-                PyThreadState_Delete
-                PyThreadState_Get
-                PyThreadState_New
-                PyThreadState_Swap
-                PyThread_acquire_lock
-                PyThread_allocate_lock
-                PyThread_allocate_sema
-                PyThread_down_sema
-                PyThread_exit_thread
-                PyThread_free_lock
-                PyThread_free_sema
-                PyThread_get_thread_ident
-                PyThread_init_thread
-                PyThread_release_lock
-                PyThread_start_new_thread
-                PyThread_up_sema
-                PyToken_OneChar
-                PyToken_TwoChars
-                PyTokenizer_Free
-                PyTokenizer_FromFile
-                PyTokenizer_FromString
-                PyTokenizer_Get
-                PyTraceBack_Here
-                PyTraceBack_Print
-                PyTuple_GetItem
-                PyTuple_GetSlice
-                PyTuple_New
-                PyTuple_SetItem
-                PyTuple_Size
-                Py_AtExit
-                Py_BuildValue
-                Py_CompileString
-                Py_EndInterpreter
-                Py_Exit
-                Py_FatalError
-                Py_FdIsInteractive
-                Py_Finalize
-                Py_FindMethod
-                Py_FindMethodInChain
-                Py_FlushLine
-                Py_Free
-                Py_FrozenMain
-                Py_GetBuildInfo
-                Py_GetCopyright
-                Py_GetExecPrefix
-                Py_GetPath
-                Py_GetPrefix
-                Py_GetProgramFullPath
-                Py_GetProgramName
-                Py_GetVersion
-                Py_InitModule4
-                Py_Initialize
-                Py_IsInitialized
-                Py_Main
-                Py_Malloc
-                Py_NewInterpreter
-                Py_Realloc
-                Py_SetProgramName
-                Py_VaBuildValue
-                _PyObject_New
-                _PyObject_NewVar
-                _PyString_Resize
-                _Py_c_diff
-                _Py_c_neg
-                _Py_c_pow
-                _Py_c_prod
-                _Py_c_quot
-                _Py_c_sum
-                initimp
+               ; Code
+               PyArg_Parse
+               PyArg_ParseTuple
+               PyArg_ParseTupleAndKeywords
+               PyArg_VaParse
+               PyCFunction_Fini
+               PyCFunction_GetFlags
+               PyCFunction_GetFunction
+               PyCFunction_GetSelf
+               PyCFunction_New
+               PyCObject_AsVoidPtr
+               PyCObject_FromVoidPtrAndDesc
+               PyCObject_FromVoidPtr
+               PyCObject_GetDesc
+               PyCObject_Import
+               PyCallable_Check
+               PyClass_IsSubclass
+               PyClass_New
+               PyCode_Addr2Line
+               PyCode_New
+               PyComplex_AsCComplex
+               PyComplex_FromCComplex
+               PyComplex_FromDoubles
+               PyComplex_ImagAsDouble
+               PyComplex_RealAsDouble
+               PyDict_Clear
+               PyDict_DelItem
+               PyDict_DelItemString
+               PyDict_GetItem
+               PyDict_GetItemString
+               PyDict_Items
+               PyDict_Keys
+               PyDict_New
+               PyDict_Next
+               PyDict_SetItem
+               PyDict_SetItemString
+               PyDict_Size
+               PyDict_Values
+               PyErr_BadArgument
+               PyErr_BadInternalCall
+               PyErr_CheckSignals
+               PyErr_Clear
+               PyErr_ExceptionMatches
+               PyErr_Fetch
+               PyErr_Format
+               PyErr_GivenExceptionMatches
+               PyErr_NewException
+               PyErr_NoMemory
+               PyErr_NormalizeException
+               PyErr_Occurred
+               PyErr_Print
+               PyErr_PrintEx
+               PyErr_Restore
+               PyErr_SetFromErrno
+               PyErr_SetFromErrnoWithFilename
+               PyErr_SetInterrupt
+               PyErr_SetNone
+               PyErr_SetObject
+               PyErr_SetString
+               PyEval_AcquireLock
+               PyEval_AcquireThread
+               PyEval_CallFunction
+               PyEval_CallMethod
+               PyEval_CallObject
+               PyEval_CallObjectWithKeywords
+               PyEval_EvalCode
+               PyEval_GetBuiltins
+               PyEval_GetFrame
+               PyEval_GetGlobals
+               PyEval_GetLocals
+               PyEval_GetRestricted
+               PyEval_InitThreads
+               PyEval_ReleaseLock
+               PyEval_ReleaseThread
+               PyEval_RestoreThread
+               PyEval_SaveThread
+               PyFile_AsFile
+               PyFile_FromFile
+               PyFile_FromString
+               PyFile_GetLine
+               PyFile_Name
+               PyFile_SetBufSize
+               PyFile_SoftSpace
+               PyFile_WriteObject
+               PyFile_WriteString
+               PyFloat_AsDouble
+               PyFloat_AsString
+               PyFloat_Fini
+               PyFloat_FromDouble
+               PyFrame_BlockPop
+               PyFrame_BlockSetup
+               PyFrame_FastToLocals
+               PyFrame_Fini
+               PyFrame_LocalsToFast
+               PyFrame_New
+               PyFunction_GetCode
+               PyFunction_GetDefaults
+               PyFunction_GetGlobals
+               PyFunction_New
+               PyFunction_SetDefaults
+               PyGrammar_AddAccelerators
+               PyGrammar_FindDFA
+               PyGrammar_LabelRepr
+               PyGrammar_RemoveAccelerators
+               PyImport_AddModule
+               PyImport_AppendInittab
+               PyImport_Cleanup
+               PyImport_ExecCodeModule
+               PyImport_ExecCodeModuleEx
+               PyImport_ExtendInittab
+               PyImport_GetMagicNumber
+               PyImport_GetModuleDict
+               PyImport_Import
+               PyImport_ImportFrozenModule
+               PyImport_ImportModule
+               PyImport_ImportModuleEx
+               PyImport_ReloadModule
+               PyInstance_DoBinOp
+               PyInstance_New
+               PyInt_AsLong
+               PyInt_Fini
+               PyInt_FromLong
+               PyInt_GetMax
+               PyInterpreterState_Clear
+               PyInterpreterState_Delete
+               PyInterpreterState_New
+               PyList_Append
+               PyList_AsTuple
+               PyList_GetItem
+               PyList_GetSlice
+               PyList_Insert
+               PyList_New
+               PyList_Reverse
+               PyList_SetItem
+               PyList_SetSlice
+               PyList_Size
+               PyList_Sort
+               PyLong_AsDouble
+               PyLong_AsLong
+;               PyLong_AsLongLong
+               PyLong_AsUnsignedLong
+;               PyLong_AsUnsignedLongLong
+               PyLong_AsVoidPtr
+               PyLong_FromDouble
+               PyLong_FromLong
+;               PyLong_FromLongLong
+               PyLong_FromString
+               PyLong_FromUnsignedLong
+;               PyLong_FromUnsignedLongLong
+               PyLong_FromVoidPtr
+               PyMapping_Check
+               PyMapping_GetItemString
+               PyMapping_HasKey
+               PyMapping_HasKeyString
+               PyMapping_Length
+               PyMapping_SetItemString
+               PyMarshal_Init
+               PyMarshal_ReadLongFromFile
+               PyMarshal_ReadObjectFromFile
+               PyMarshal_ReadObjectFromString
+               PyMarshal_WriteLongToFile
+               PyMarshal_WriteObjectToFile
+               PyMarshal_WriteObjectToString
+               PyMem_Free
+               PyMem_Malloc
+               PyMem_Realloc
+               PyMember_Get
+               PyMember_Set
+               PyMethod_Class
+               PyMethod_Fini
+               PyMethod_Function
+               PyMethod_New
+               PyMethod_Self
+               PyModule_GetDict
+               PyModule_GetName
+               PyModule_New
+               PyNode_AddChild
+               PyNode_Compile
+               PyNode_Free
+;               PyNode_ListTree
+               PyNode_New
+               PyNumber_Absolute
+               PyNumber_Add
+               PyNumber_And
+               PyNumber_Check
+               PyNumber_Coerce
+               PyNumber_CoerceEx
+               PyNumber_Divide
+               PyNumber_Divmod
+               PyNumber_Float
+               PyNumber_Int
+               PyNumber_Invert
+               PyNumber_Long
+               PyNumber_Lshift
+               PyNumber_Multiply
+               PyNumber_Negative
+               PyNumber_Or
+               PyNumber_Positive
+               PyNumber_Power
+               PyNumber_Remainder
+               PyNumber_Rshift
+               PyNumber_Subtract
+               PyNumber_Xor
+               PyOS_AfterFork
+               PyOS_FiniInterrupts
+               PyOS_GetLastModificationTime
+               PyOS_InitInterrupts
+               PyOS_InterruptOccurred
+               PyOS_Readline
+               PyOS_StdioReadline
+               PyOS_strtol
+               PyOS_strtoul
+               PyObject_CallFunction
+               PyObject_CallMethod
+               PyObject_CallObject
+               PyObject_Cmp
+               PyObject_Compare
+               PyObject_DelItem
+               PyObject_GetAttr
+               PyObject_GetAttrString
+               PyObject_GetItem
+               PyObject_HasAttr
+               PyObject_HasAttrString
+               PyObject_Hash
+               PyObject_IsTrue
+               PyObject_Length
+               PyObject_Not
+               PyObject_Print
+               PyObject_Repr
+               PyObject_SetAttr
+               PyObject_SetAttrString
+               PyObject_SetItem
+               PyObject_Str
+               PyObject_Type
+               PyParser_AddToken
+               PyParser_Delete
+               PyParser_New
+               PyParser_ParseFile
+               PyParser_ParseString
+               PyParser_SimpleParseFile
+               PyParser_SimpleParseString
+               PyRange_New
+               PyRun_AnyFile
+               PyRun_File
+               PyRun_InteractiveLoop
+               PyRun_InteractiveOne
+               PyRun_SimpleFile
+               PyRun_SimpleString
+               PyRun_String
+               PySequence_Check
+               PySequence_Concat
+               PySequence_Contains
+               PySequence_Count
+               PySequence_DelItem
+               PySequence_DelSlice
+               PySequence_GetItem
+               PySequence_GetSlice
+               PySequence_In
+               PySequence_Index
+               PySequence_Length
+               PySequence_List
+               PySequence_Repeat
+               PySequence_SetItem
+               PySequence_SetSlice
+               PySequence_Tuple
+               PySlice_GetIndices
+               PySlice_New
+               PyString_AsString
+               PyString_Concat
+               PyString_ConcatAndDel
+               PyString_Fini
+               PyString_Format
+               PyString_FromString
+               PyString_FromStringAndSize
+               PyString_InternFromString
+               PyString_InternInPlace
+               PyString_Size
+               PySys_GetFile
+               PySys_GetObject
+               PySys_SetArgv
+               PySys_SetObject
+               PySys_SetPath
+               PySys_WriteStderr
+               PySys_WriteStdout
+               PyThreadState_Clear
+               PyThreadState_Delete
+               PyThreadState_Get
+               PyThreadState_GetDict
+               PyThreadState_New
+               PyThreadState_Swap
+               PyThread__exit_thread
+               PyThread_acquire_lock
+               PyThread_allocate_lock
+               PyThread_allocate_sema
+               PyThread_down_sema
+               PyThread_exit_thread
+               PyThread_free_lock
+               PyThread_free_sema
+               PyThread_get_thread_ident
+               PyThread_init_thread
+               PyThread_release_lock
+               PyThread_start_new_thread
+               PyThread_up_sema
+               PyToken_OneChar
+               PyToken_TwoChars
+               PyTokenizer_Free
+               PyTokenizer_FromFile
+               PyTokenizer_FromString
+               PyTokenizer_Get
+               PyTraceBack_Here
+               PyTraceBack_Print
+               PyTuple_Fini
+               PyTuple_GetItem
+               PyTuple_GetSlice
+               PyTuple_New
+               PyTuple_SetItem
+               PyTuple_Size
+               Py_AddPendingCall
+               Py_AtExit
+               Py_BuildValue
+               Py_CompileString
+               Py_EndInterpreter
+               Py_Exit
+               Py_FatalError
+               Py_FdIsInteractive
+               Py_Finalize
+               Py_FindMethod
+               Py_FindMethodInChain
+               Py_FlushLine
+               Py_Free
+               Py_GetArgcArgv
+               Py_GetBuildInfo
+               Py_GetCompiler
+               Py_GetCopyright
+               Py_GetExecPrefix
+               Py_GetPath
+               Py_GetPlatform
+               Py_GetPrefix
+               Py_GetProgramFullPath
+               Py_GetProgramName
+               Py_GetPythonHome
+               Py_GetVersion
+               Py_InitModule4
+               Py_Initialize
+               Py_IsInitialized
+               Py_Main
+               Py_MakePendingCalls
+               Py_Malloc
+               Py_NewInterpreter
+               Py_Realloc
+               Py_ReprEnter
+               Py_ReprLeave
+               Py_SetProgramName
+               Py_SetPythonHome
+               Py_VaBuildValue
+               _PyBuiltin_Fini_1
+               _PyBuiltin_Fini_2
+               _PyBuiltin_Init_1
+               _PyBuiltin_Init_2
+               _PyImport_FindExtension
+               _PyImport_Fini
+               _PyImport_FixupExtension
+               _PyImport_Init
+               _PyImport_LoadDynamicModule
+               _PyLong_New
+               _PyModule_Clear
+               _PyObject_New
+               _PyObject_NewVar
+               _PyString_Resize
+               _PySys_Init
+               _PyTuple_Resize
+               _Py_MD5Final
+               _Py_MD5Init
+               _Py_MD5Update
+;               _Py_addbit
+               _Py_c_diff
+               _Py_c_neg
+               _Py_c_pow
+               _Py_c_prod
+               _Py_c_quot
+               _Py_c_sum
+;               _Py_delbitset
+;               _Py_mergebitset
+;               _Py_meta_grammar
+;               _Py_newbitset
+               _Py_re_compile_fastmap
+               _Py_re_compile_initialize
+               _Py_re_compile_pattern
+               _Py_re_match
+               _Py_re_search
+               _Py_re_set_syntax
+;               _Py_samebitset
+
diff --git a/PC/os2vacpp/readme.txt b/PC/os2vacpp/readme.txt
index f805232..2da27b9 100644
--- a/PC/os2vacpp/readme.txt
+++ b/PC/os2vacpp/readme.txt
@@ -1,114 +1,114 @@
-IBM VisualAge C/C++ for OS/2

-============================

-

-To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE'

-command.  This will build a PYTHON15.DLL containing the set of Python

-modules listed in config.c and a small PYTHON.EXE to start the

-interpreter.

-

-By changing the C compiler flag /Gd- in the makefile to /Gd+, you can

-reduce the size of these by causing Python to dynamically link to the

-C runtime DLLs instead of including their bulk in your binaries. 

-However, this means that any system on which you run Python must have

-the VAC++ compiler installed in order to have those DLLs available.

-

-During the build process you may see a couple of harmless warnings:

-

-  From the C Compiler, "No function prototype given for XXX", which

-  comes from the use of K&R parameters within Python for portability.

-

-  From the ILIB librarian, "Module Not Found (XXX)", which comes

-  from its attempt to perform the (-+) operation, which removes and

-  then adds a .OBJ to the library.  The first time a build is done,

-  it obviously cannot remove what is not yet built.

-

-This build includes support for most Python functionality as well as

-TCP/IP sockets.  It omits the Posix ability to 'fork' a process but

-supports threads using OS/2 native capabilities.  I have tried to

-support everything possible but here are a few usage notes.

-

-

--- os.popen() Usage Warnings

-

-With respect to my implementation of popen() under OS/2:

-

-    import os

-

-    fd = os.popen("pkzip.exe -@ junk.zip", 'wb')

-    fd.write("file1.txt\n")

-    fd.write("file2.txt\n")

-    fd.write("file3.txt\n")

-    fd.write("\x1a")  # Should Not Be Necessary But Is

-    fd.close()

-

-There is a bug, either in the VAC++ compiler or OS/2 itself, where the

-simple closure of the write-side of a pipe -to- a process does not

-send an EOF to that process.  I find I must explicitly write a

-control-Z (EOF) before closing the pipe.  This is not a problem when

-using popen() in read mode.

-

-One other slight difference with my popen() is that I return None

-from the close(), instead of the Unix convention of the return code

-of the spawned program.  I could find no easy way to do this under

-OS/2.

-

-

--- BEGINLIBPATH/ENDLIBPATH

-

-With respect to environment variables, this OS/2 port supports the

-special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to

-control where to load conventional DLLs from.  Those names are

-intercepted and converted to calls on the OS/2 kernel APIs and

-are inherited by child processes, whether Python-based or not.

-

-A few new attributes have been added to the os module:

-

-    os.meminstalled  # Count of Bytes of RAM Installed on Machine

-    os.memkernel     # Count of Bytes of RAM Reserved (Non-Swappable)

-    os.memvirtual    # Count of Bytes of Virtual RAM Possible

-    os.timeslice     # Duration of Scheduler Timeslice, in Milliseconds

-    os.maxpathlen    # Maximum Length of a Path Specification, in chars

-    os.maxnamelen    # Maximum Length of a Single Dir/File Name, in chars

-    os.version       # Version of OS/2 Being Run e.g. "4.00"

-    os.revision      # Revision of OS/2 Being Run (usually zero)

-    os.bootdrive     # Drive that System Booted From e.g. "C:"

-                     # (useful to find the CONFIG.SYS used to boot with)

-

-

--- Using Python as the Default OS/2 Batch Language

-

-Note that OS/2 supports the Unix technique of putting the special

-comment line at the time of scripts e.g. "#!/usr/bin/python" in

-a different syntactic form.  To do this, put your script into a file

-with a .CMD extension and added 'extproc' to the top as follows:

-

-    extproc C:\Python\Python.exe -x

-    import os

-    print "Hello from Python"

-

-The '-x' option tells Python to skip the first line of the file

-while processing the rest as normal Python source.

-

-

--- Suggested Environment Variable Setup

-

-With respect to the environment variables for Python, I use the

-following setup:

-

-    Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs

-    Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \

-                     E:\Tau\Projects\Python\Lib\plat-win

-

-The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where

-you put any Python extension DLLs you may create/obtain.  There

-are none provided with this release.

-

-

--- Contact Info

-

-If you have questions, suggestions or problems specifically with

-the OS/2 VAC++ port of Python, please contact me at:

-

-    Jeff Rush <jrush@summit-research.com>.

-

-I support no other platform but OS/2 (and eventually AmigaDOS).

+IBM VisualAge C/C++ for OS/2
+============================
+
+To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE'
+command.  This will build a PYTHON15.DLL containing the set of Python
+modules listed in config.c and a small PYTHON.EXE to start the
+interpreter.
+
+By changing the C compiler flag /Gd- in the makefile to /Gd+, you can
+reduce the size of these by causing Python to dynamically link to the
+C runtime DLLs instead of including their bulk in your binaries. 
+However, this means that any system on which you run Python must have
+the VAC++ compiler installed in order to have those DLLs available.
+
+During the build process you may see a couple of harmless warnings:
+
+  From the C Compiler, "No function prototype given for XXX", which
+  comes from the use of K&R parameters within Python for portability.
+
+  From the ILIB librarian, "Module Not Found (XXX)", which comes
+  from its attempt to perform the (-+) operation, which removes and
+  then adds a .OBJ to the library.  The first time a build is done,
+  it obviously cannot remove what is not yet built.
+
+This build includes support for most Python functionality as well as
+TCP/IP sockets.  It omits the Posix ability to 'fork' a process but
+supports threads using OS/2 native capabilities.  I have tried to
+support everything possible but here are a few usage notes.
+
+
+-- os.popen() Usage Warnings
+
+With respect to my implementation of popen() under OS/2:
+
+    import os
+
+    fd = os.popen("pkzip.exe -@ junk.zip", 'wb')
+    fd.write("file1.txt\n")
+    fd.write("file2.txt\n")
+    fd.write("file3.txt\n")
+    fd.write("\x1a")  # Should Not Be Necessary But Is
+    fd.close()
+
+There is a bug, either in the VAC++ compiler or OS/2 itself, where the
+simple closure of the write-side of a pipe -to- a process does not
+send an EOF to that process.  I find I must explicitly write a
+control-Z (EOF) before closing the pipe.  This is not a problem when
+using popen() in read mode.
+
+One other slight difference with my popen() is that I return None
+from the close(), instead of the Unix convention of the return code
+of the spawned program.  I could find no easy way to do this under
+OS/2.
+
+
+-- BEGINLIBPATH/ENDLIBPATH
+
+With respect to environment variables, this OS/2 port supports the
+special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to
+control where to load conventional DLLs from.  Those names are
+intercepted and converted to calls on the OS/2 kernel APIs and
+are inherited by child processes, whether Python-based or not.
+
+A few new attributes have been added to the os module:
+
+    os.meminstalled  # Count of Bytes of RAM Installed on Machine
+    os.memkernel     # Count of Bytes of RAM Reserved (Non-Swappable)
+    os.memvirtual    # Count of Bytes of Virtual RAM Possible
+    os.timeslice     # Duration of Scheduler Timeslice, in Milliseconds
+    os.maxpathlen    # Maximum Length of a Path Specification, in chars
+    os.maxnamelen    # Maximum Length of a Single Dir/File Name, in chars
+    os.version       # Version of OS/2 Being Run e.g. "4.00"
+    os.revision      # Revision of OS/2 Being Run (usually zero)
+    os.bootdrive     # Drive that System Booted From e.g. "C:"
+                     # (useful to find the CONFIG.SYS used to boot with)
+
+
+-- Using Python as the Default OS/2 Batch Language
+
+Note that OS/2 supports the Unix technique of putting the special
+comment line at the time of scripts e.g. "#!/usr/bin/python" in
+a different syntactic form.  To do this, put your script into a file
+with a .CMD extension and added 'extproc' to the top as follows:
+
+    extproc C:\Python\Python.exe -x
+    import os
+    print "Hello from Python"
+
+The '-x' option tells Python to skip the first line of the file
+while processing the rest as normal Python source.
+
+
+-- Suggested Environment Variable Setup
+
+With respect to the environment variables for Python, I use the
+following setup:
+
+    Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs
+    Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \
+                     E:\Tau\Projects\Python\Lib\plat-win
+
+The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where
+you put any Python extension DLLs you may create/obtain.  There
+are none provided with this release.
+
+
+-- Contact Info
+
+If you have questions, suggestions or problems specifically with
+the OS/2 VAC++ port of Python, please contact me at:
+
+    Jeff Rush <jrush@summit-research.com>.
+
+I support no other platform but OS/2 (and eventually AmigaDOS).