Commits

Răzvan Rotaru  committed 5373ae6

Added logo. Removed chicken binaries. Updated to version 4.8.0.3.

  • Participants
  • Parent commits b707647

Comments (0)

Files changed (162)

 
 Current version includes:
 
-- Chicken Scheme: 4.8.0.1
+- Chicken Scheme: 4.8.0.3
 - MinGW GCC Compiler: 4.7.2
 
 The installer is currently alfa, so please report issues if you find any. It has been tested only on Windows 7 64-bit.
 
 - Make installation of GCC compiler optional.
 - Add GCC license
+- Add build script

File chicken-installer.nsi

 # These three must be integers
 !define VERSIONMAJOR 4
 !define VERSIONMINOR 8
-!define VERSIONBUILD 0.1
+!define VERSIONBUILD 0.3
 # These will be displayed by the "Click here for support information" link in "Add/Remove Programs"
 # It is possible to use "mailto:" links in here to open the email client
 !define HELPURL "http://call-cc.org/" # "Support Information" link
 LicenseData "license.txt"
 # This will be in the installer/uninstaller's title bar
 Name "${APPNAME}"
-#Icon "logo.ico"
+Icon "chicken-logo.ico"
 outFile "chicken-${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}.exe"
  
 !include LogicLib.nsh

File chicken-logo.ico

Added
New image

File chicken/bin/chicken-bug.exe

Binary file removed.

File chicken/bin/chicken-install.exe

Binary file removed.

File chicken/bin/chicken-profile.exe

Binary file removed.

File chicken/bin/chicken-status.exe

Binary file removed.

File chicken/bin/chicken-uninstall.exe

Binary file removed.

File chicken/bin/chicken.exe

Binary file removed.

File chicken/bin/csc.exe

Binary file removed.

File chicken/bin/csi.exe

Binary file removed.

File chicken/bin/csibatch.bat

-@echo off
-csi -script %1 %2 %3 %4 %5 %6 %7 %8 %9

File chicken/bin/libchicken.dll

Binary file removed.

File chicken/include/chicken/chicken-config.h

-/* GENERATED */ 
-#define HAVE_DIRENT_H 1 
-#define HAVE_INTTYPES_H 1 
-#define HAVE_LIMITS_H 1 
-#define HAVE_LONG_LONG 1 
-#define HAVE_MEMMOVE 1 
-#define HAVE_MEMORY_H 1 
-#define HAVE_STDINT_H 1 
-#define HAVE_STDLIB_H 1 
-#define HAVE_STRERROR 1 
-#define HAVE_STRINGS_H 1 
-#define HAVE_STRING_H 1 
-#define HAVE_STRTOLL 1 
-#define HAVE_SYS_STAT_H 1 
-#define HAVE_SYS_TYPES_H 1 
-#define HAVE_UNISTD_H 1 
-#define HAVE_UNSIGNED_LONG_LONG 1 
-#define HAVE_WINDOWS_H 1 
-#define HAVE__STRTOI64 1 
-#define STDC_HEADERS 1 
-#define HAVE_DIRECT_H 1 
-#define HAVE_ERRNO_H 1 
-#define HAVE_GCVT 1 
-#define HAVE_LOADLIBRARY 1 
-#define HAVE_GETPROCADDRESS 1 
-#define HAVE_WINSOCK2_H 1 
-#define HAVE_WS2TCPIP_H 1 
-#define C_STACK_GROWS_DOWNWARD 1 
-#define C_HACKED_APPLY 
-#define C_CHICKEN_PROGRAM "chicken.exe" 
-#define C_WINDOWS_SHELL 1 
-#ifndef C_INSTALL_CC 
-# define C_INSTALL_CC "gcc" 
-#endif 
-#ifndef C_INSTALL_CXX 
-# define C_INSTALL_CXX "g++" 
-#endif 
-#ifndef C_INSTALL_RC_COMPILER 
-# define C_INSTALL_RC_COMPILER "windres" 
-#endif 
-#ifndef C_INSTALL_CFLAGS 
-# define C_INSTALL_CFLAGS "-fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -Os" 
-#endif 
-#ifndef C_INSTALL_LDFLAGS 
-# define C_INSTALL_LDFLAGS "-Wl,--enable-auto-import " 
-#endif 
-#ifndef C_INSTALL_PREFIX 
-# define C_INSTALL_PREFIX "c:/chicken" 
-#endif 
-#ifndef C_INSTALL_SHARE_HOME 
-# define C_INSTALL_SHARE_HOME "c:/chicken/share/chicken" 
-#endif 
-#ifndef C_INSTALL_BIN_HOME 
-# define C_INSTALL_BIN_HOME "c:/chicken/bin" 
-#endif 
-#ifndef C_INSTALL_EGG_HOME 
-# define C_INSTALL_EGG_HOME "c:/chicken/lib/chicken/6" 
-#endif 
-#ifndef C_INSTALL_LIB_HOME 
-# define C_INSTALL_LIB_HOME "c:/chicken/lib" 
-#endif 
-#ifndef C_INSTALL_LIB_NAME 
-# define C_INSTALL_LIB_NAME "chicken" 
-#endif 
-#ifndef C_INSTALL_STATIC_LIB_HOME 
-# define C_INSTALL_STATIC_LIB_HOME "c:/chicken/lib" 
-#endif 
-#ifndef C_INSTALL_INCLUDE_HOME 
-# define C_INSTALL_INCLUDE_HOME "c:/chicken/include/chicken" 
-#endif 
-#ifndef C_INSTALL_MORE_LIBS 
-# define C_INSTALL_MORE_LIBS "-lm -lws2_32" 
-#endif 
-#ifndef C_INSTALL_MORE_STATIC_LIBS 
-# define C_INSTALL_MORE_STATIC_LIBS "-lm -lws2_32" 
-#endif 
-#ifndef C_DEFAULT_TARGET_HEAP_SIZE 
-# define C_DEFAULT_TARGET_HEAP_SIZE 0 
-#endif 
-#ifndef C_STACK_GROWS_DOWNWARD 
-# define C_STACK_GROWS_DOWNWARD 1 
-#endif 
-#ifndef C_TARGET_MORE_LIBS 
-# define C_TARGET_MORE_LIBS "-lm -lws2_32" 
-#endif 
-#ifndef C_TARGET_MORE_STATIC_LIBS 
-# define C_TARGET_MORE_STATIC_LIBS "-lm -lws2_32" 
-#endif 
-#ifndef C_TARGET_CC 
-# define C_TARGET_CC "gcc" 
-#endif 
-#ifndef C_TARGET_CXX 
-# define C_TARGET_CXX "g++" 
-#endif 
-#ifndef C_TARGET_RC_COMPILER 
-# define C_TARGET_RC_COMPILER "windres" 
-#endif 
-#ifndef C_TARGET_CFLAGS 
-# define C_TARGET_CFLAGS "-fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -Os" 
-#endif 
-#ifndef C_TARGET_LDFLAGS 
-# define C_TARGET_LDFLAGS "-Wl,--enable-auto-import " 
-#endif 
-#ifndef C_TARGET_FEATURES 
-# define C_TARGET_FEATURES "" 
-#endif 
-#ifndef C_CROSS_CHICKEN 
-# define C_CROSS_CHICKEN 0 
-#endif 
-#ifndef C_TARGET_PREFIX 
-# define C_TARGET_PREFIX "c:/chicken" 
-#endif 
-#ifndef C_TARGET_BIN_HOME 
-# define C_TARGET_BIN_HOME "c:/chicken/bin" 
-#endif 
-#ifndef C_TARGET_LIB_HOME 
-# define C_TARGET_LIB_HOME "c:/chicken/lib" 
-#endif 
-#ifndef C_TARGET_LIB_NAME 
-# define C_TARGET_LIB_NAME "chicken" 
-#endif 
-#ifndef C_TARGET_RUN_LIB_HOME 
-# define C_TARGET_RUN_LIB_HOME "c:/chicken/lib" 
-#endif 
-#ifndef C_TARGET_SHARE_HOME 
-# define C_TARGET_SHARE_HOME "c:/chicken/share" 
-#endif 
-#ifndef C_TARGET_INCLUDE_HOME 
-# define C_TARGET_INCLUDE_HOME "c:/chicken/include/chicken" 
-#endif 
-#ifndef C_TARGET_STATIC_LIB_HOME 
-# define C_TARGET_STATIC_LIB_HOME "c:/chicken/lib" 
-#endif 
-#ifndef C_CSC_PROGRAM 
-# define C_CSC_PROGRAM "csc" 
-#endif 
-#ifndef C_CSI_PROGRAM 
-# define C_CSI_PROGRAM "csi" 
-#endif 
-#ifndef C_CHICKEN_BUG_PROGRAM 
-# define C_CHICKEN_BUG_PROGRAM "chicken-bug" 
-#endif 
-#ifndef C_CHICKEN_INSTALL_PROGRAM 
-# define C_CHICKEN_INSTALL_PROGRAM "chicken-install" 
-#endif 
-#ifndef C_CHICKEN_UNINSTALL_PROGRAM 
-# define C_CHICKEN_UNINSTALL_PROGRAM "chicken-uninstall" 
-#endif 
-#ifndef C_CHICKEN_STATUS_PROGRAM 
-# define C_CHICKEN_STATUS_PROGRAM "chicken-status" 
-#endif 
-#ifndef C_BINARY_VERSION 
-# define C_BINARY_VERSION 6 
-#endif 
-/* END OF FILE */ 

File chicken/include/chicken/chicken.h

-/* chicken.h - General headerfile for compiler generated executables
-;
-; Copyright (c) 2008-2013, The Chicken Team
-; Copyright (c) 2000-2007, Felix L. Winkelmann
-; All rights reserved.
-;
-; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
-; conditions are met:
-;
-;   Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-;     disclaimer.
-;   Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-;     disclaimer in the documentation and/or other materials provided with the distribution.
-;   Neither the name of the author nor the names of its contributors may be used to endorse or promote
-;     products derived from this software without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
-; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* Configuration: */
-
-/*
- * The Watcom (__WATCOMC__), Metroworks (__MWERKS__), and Delorie (__DJGPP__)
- * compilers are not currently supported but existing references remain,
- * just in case.
- */
-
-#ifndef ___CHICKEN
-#define ___CHICKEN
-
-#define C_MAJOR_VERSION   4
-#define C_MINOR_VERSION   8
-
-#ifndef _ISOC99_SOURCE
-# define _ISOC99_SOURCE
-#endif
-
-#ifndef _BSD_SOURCE
-# define _BSD_SOURCE
-#endif
-
-#ifndef _SVID_SOURCE
-# define _SVID_SOURCE
-#endif
-
-/*
- * N.B. This file MUST not rely upon "chicken-config.h"
- */
-#if defined(HAVE_CONFIG_H) || defined(HAVE_CHICKEN_CONFIG_H)
-# include "chicken-config.h"
-#endif
-
-
-/* Kind of platform */
-
-#ifndef C_SIXTY_FOUR
-# if defined (__alpha__) || defined(__ia64__) || defined(__x86_64__) || defined(__LP64__) || defined(__powerpc64__)
-#   define C_SIXTY_FOUR
-# elif (defined(__sparc_v9__) || defined(__sparcv9)) && defined(__arch64__)
-#   define C_SIXTY_FOUR
-# elif defined(__mips64) && (!defined(__GNUC__) || _MIPS_SZPTR == 64)
-#   define C_SIXTY_FOUR
-# endif
-#endif
-
-#if defined(__APPLE__) && defined(__MACH__)
-# define C_MACOSX
-#endif
-
-#if defined(C_MACOSX) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
-# define C_XXXBSD
-#endif
-
-#if /*defined(__GNUC__) &&*/ (defined(__linux__) || defined(C_XXXBSD))
-# define C_GNU_ENV
-#endif
-
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__MWERKS__)
-# define C_NONUNIX
-#endif
-
-#if defined(__sun__) && defined(__svr4__)
-# define C_SOLARIS
-#endif
-
-
-/* Headers */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <string.h>
-#include <setjmp.h>
-#include <limits.h>
-#include <time.h>
-#include <math.h>
-
-#if !defined(C_NONUNIX) || defined(__MINGW32__) || defined(__WATCOMC__)
-# include <unistd.h>
-# include <inttypes.h>
-# include <sys/types.h>
-#endif
-
-#if defined(__HAIKU__)
-# include <kernel/image.h>
-#endif
-
-
-/* Byteorder in machine word */
-
-#if defined(__MINGW32__)
-# include <sys/param.h>
-#elif defined(__CYGWIN__)
-# include <endian.h>
-#elif defined(__linux__)
-# include <endian.h>
-#elif defined(C_XXXBSD)
-# include <machine/endian.h>
-#elif defined(__hpux__)
-# include <arpa/nameser.h>
-#elif defined(_AIX)
-# include <sys/machine.h>
-#elif defined(__sun__)
-# include <sys/isa_defs.h>
-#elif defined(__svr4__)
-# include <sys/byteorder.h>
-#endif
-
-#if defined(__MINGW32__) || defined(__WATCOMC__)
-# include <malloc.h>
-#endif
-
-/* Much better with stack allocation API */
-
-#ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-#elif !defined(alloca) /* predefined by HP cc +Olibcalls */
-void *alloca ();
-#endif
-
-
-/* Chicken Core C API */
-
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN
-# define C_BIG_ENDIAN
-#elif defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN
-# define C_BIG_ENDIAN
-#elif defined(__BIG_ENDIAN__)
-# define C_BIG_ENDIAN
-#elif defined(__MIPSEL__) || defined(__MIPSEL)
-# define C_LITTLE_ENDIAN
-#elif defined(__sparc__) || defined(__POWERPC__) || defined(__MC68K__) || defined(__mips__)
-# define C_BIG_ENDIAN
-#endif
-
-#if defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN
-# define C_LITTLE_ENDIAN
-#elif defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && BYTE_ORDER == LITTLE_ENDIAN
-# define C_LITTLE_ENDIAN
-#elif defined(__LITTLE_ENDIAN__)
-# define C_LITTLE_ENDIAN
-#elif defined (__alpha__) || defined(_M_IX86) || defined(__i386__) || defined(__x86_64__) || defined(__ia64__)
-# define C_LITTLE_ENDIAN
-#endif
-
-/* Make sure some common C identifiers are availble w/ Windows */
-
-/* Could be used by C++ source */
-
-#ifdef __cplusplus
-# define C_extern                  extern "C"
-# define C_BEGIN_C_DECLS           extern "C" {
-# define C_END_C_DECLS             }
-#else
-# define C_extern                  extern
-# define C_BEGIN_C_DECLS
-# define C_END_C_DECLS
-#endif
-
-
-/* Function declaration modes */
-
-/* Visibility */
-#define C_varextern                C_extern
-#define C_fctimport
-#define C_fctexport
-#define C_externimport             C_extern
-#define C_externexport             C_extern
-#if defined(PIC)
-# if defined(__CYGWIN__) || defined(__MINGW32__)
-#  ifndef C_BUILDING_LIBCHICKEN
-#   undef  C_varextern
-#   define C_varextern             C_extern __declspec(dllimport)
-#  endif
-# elif defined(__WATCOMC__)
-#  undef  C_fctimport
-#  define C_fctimport              __declspec(dllexport)
-#  undef  C_externimport
-#  undef  C_externexport
-#  define C_externexport           C_extern __declspec(dllexport)
-#  undef  C_varextern
-#  undef  C_fctexport
-#  ifdef C_BUILDING_LIBCHICKEN
-#   define C_varextern             C_extern __declspec(dllexport)
-#   define C_fctexport             __declspec(dllexport)
-#   define C_externimport          C_extern __declspec(dllexport)
-#  else
-#   define C_varextern             C_extern __declspec(dllimport)
-#   define C_fctexport             __declspec(dllimport)
-#   define C_externimport          C_extern __declspec(dllimport)
-#  endif
-# endif
-#endif
-
-/* Language specifics: */
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-# ifndef __cplusplus
-#  define C_cblock                ({
-#  define C_cblockend             })
-#  ifdef __clang__
-#   define C_noret
-#  else
-#   define C_noret                __attribute__ ((noreturn))
-#  endif
-#  define C_noret_decl(name)
-#  define C_aligned               __attribute__ ((aligned))
-# endif
-# if defined(__i386__) && !defined(__clang__)
-#  define C_regparm               __attribute__ ((regparm(3)))
-# endif
-#elif defined(__WATCOMC__)
-# define C_ccall                  __cdecl
-#endif
-
-#ifndef C_cblock
-# define C_cblock                 do{
-# define C_cblockend              }while(0)
-# define C_noret
-# define C_noret_decl(name)
-#endif
-
-#ifndef C_regparm
-# define C_regparm
-#endif
-
-#ifndef C_fcall
-# define C_fcall
-#endif
-
-#ifndef C_ccall
-# define C_ccall
-#endif
-
-#ifndef C_aligned
-# define C_aligned
-#endif
-
-#define C_c_regparm
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__cplusplus)
-# define C_inline                  inline static
-#else
-# define C_inline                  static
-#endif
-
-/* Thread Local Stoarage */
-#ifdef C_ENABLE_TLS
-# if defined(__GNUC__)
-#  define C_TLS                    __thread
-# endif
-#endif
-
-#ifndef C_TLS
-# define C_TLS
-#endif
-
-
-/* Stack growth direction; used to compute stack addresses */
-
-#ifndef C_STACK_GROWS_DOWNWARD
-# define C_STACK_GROWS_DOWNWARD    -1
-#endif
-
-#if C_STACK_GROWS_DOWNWARD == -1
-# ifdef __hppa__
-#  undef C_STACK_GROWS_DOWNWARD
-#  define C_STACK_GROWS_DOWNWARD 0
-# else
-#  undef C_STACK_GROWS_DOWNWARD
-#  define C_STACK_GROWS_DOWNWARD 1
-# endif
-#endif
-
-/* Have a GUI? */
-
-#if defined(C_WINDOWS_GUI) || defined(C_GUI) || defined(C_PRIVATE_REPOSITORY)
-# ifdef _WIN32
-#  include <windows.h>
-#  ifndef WINAPI
-#   define WINAPI
-#  endif
-# endif
-#else
-# define C_GENERIC_CONSOLE
-#endif
-
-/* Needed for pre-emptive threading */
-
-#define C_TIMER_INTERRUPTS
-
-/* For the `bind' (and the obsolete `easyffi'): */
-
-#define ___fixnum           int
-#define ___number           double
-#define ___bool             int
-#define ___byte             char
-#define ___scheme_value     C_word
-#define ___scheme_pointer   void *
-/* `___byte_vector' is DEPRECATED */
-#define ___byte_vector      unsigned char *
-#define ___blob             void *
-#define ___pointer_vector   void **
-#define ___symbol           char *
-#define ___safe
-#define ___declare(x, y)
-#define ___specialize
-#define ___abstract
-#define ___discard
-#define ___in
-#define ___out
-#define ___inout
-#define ___mutable
-#define ___length(var)
-#define ___pointer
-#define ___u32              C_u32
-#define ___s32              C_s32
-#define ___u64              C_u64
-#define ___s64              C_s64
-
-
-#if defined(C_SOLARIS) && !defined(isinf)
-# define isinf(x) \
-     (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
-      : sizeof (x) == sizeof (double) ? isinf_d (x) \
-      : isinf_f (x))
-static inline int isinf_f  (float       x)
-{ return !isnan (x) && isnan (x - x); }
-static inline int isinf_d  (double      x)
-{ return !isnan (x) && isnan (x - x); }
-static inline int isinf_ld (long double x)
-{ return !isnan (x) && isnan (x - x); }
-#endif
-
-
-/* Constants: */
-
-#define C_STACK_RESERVE                   0x10000
-#define C_DEFAULT_MAX_PENDING_FINALIZERS  2048
-
-#define C_IMMEDIATE_MARK_BITS     0x00000003
-#define C_IMMEDIATE_TYPE_BITS     0x0000000f
-
-#define C_BOOLEAN_BITS            0x00000006
-#define C_CHARACTER_BITS          0x0000000a
-#define C_SPECIAL_BITS            0x0000000e
-
-#define C_SCHEME_FALSE            ((C_word)(C_BOOLEAN_BITS | 0x00000000))
-#define C_SCHEME_TRUE             ((C_word)(C_BOOLEAN_BITS | 0x00000010))
-
-#define C_SCHEME_END_OF_LIST      ((C_word)(C_SPECIAL_BITS | 0x00000000))
-#define C_SCHEME_UNDEFINED        ((C_word)(C_SPECIAL_BITS | 0x00000010))
-#define C_SCHEME_UNBOUND          ((C_word)(C_SPECIAL_BITS | 0x00000020))
-#define C_SCHEME_END_OF_FILE      ((C_word)(C_SPECIAL_BITS | 0x00000030))
-
-#define C_FIXNUM_BIT              0x00000001
-#define C_FIXNUM_SHIFT            1
-
-/* Character range is that of a UTF-8 codepoint, not representable range */
-#define C_CHAR_BIT_MASK           0x1fffff
-#define C_CHAR_SHIFT              8
-
-#ifdef C_SIXTY_FOUR
-# define C_MOST_POSITIVE_FIXNUM   0x3fffffffffffffffL
-# define C_WORD_SIZE              64
-#else
-# define C_MOST_POSITIVE_FIXNUM   0x3fffffff
-# define C_WORD_SIZE              32
-#endif
-
-#define C_MOST_POSITIVE_32_BIT_FIXNUM  0x3fffffff
-#define C_MOST_NEGATIVE_FIXNUM    (-C_MOST_POSITIVE_FIXNUM - 1)
-
-#ifdef C_SIXTY_FOUR
-# define C_INT_SIGN_BIT           0x8000000000000000L
-# define C_INT_TOP_BIT            0x4000000000000000L
-# define C_HEADER_BITS_MASK       0xff00000000000000L
-# define C_HEADER_TYPE_BITS       0x0f00000000000000L
-# define C_HEADER_SIZE_MASK       0x00ffffffffffffffL
-# define C_GC_FORWARDING_BIT      0x8000000000000000L   /* header contains forwarding pointer */
-# define C_BYTEBLOCK_BIT          0x4000000000000000L   /* block contains bytes instead of slots */
-# define C_SPECIALBLOCK_BIT       0x2000000000000000L   /* 1st item is a non-value */
-# define C_8ALIGN_BIT             0x1000000000000000L   /* data is aligned to 8-byte boundary */
-
-# define C_SYMBOL_TYPE            (0x0100000000000000L)
-# define C_STRING_TYPE            (0x0200000000000000L | C_BYTEBLOCK_BIT)
-# define C_PAIR_TYPE              (0x0300000000000000L)
-# define C_CLOSURE_TYPE           (0x0400000000000000L | C_SPECIALBLOCK_BIT)
-# define C_FLONUM_TYPE            (0x0500000000000000L | C_BYTEBLOCK_BIT | C_8ALIGN_BIT)
-/*       unused                   (0x0600000000000000L ...) */
-# define C_PORT_TYPE              (0x0700000000000000L | C_SPECIALBLOCK_BIT)
-# define C_STRUCTURE_TYPE         (0x0800000000000000L)
-# define C_POINTER_TYPE           (0x0900000000000000L | C_SPECIALBLOCK_BIT)
-# define C_LOCATIVE_TYPE          (0x0a00000000000000L | C_SPECIALBLOCK_BIT)
-# define C_TAGGED_POINTER_TYPE    (0x0b00000000000000L | C_SPECIALBLOCK_BIT)
-# define C_SWIG_POINTER_TYPE      (0x0c00000000000000L | C_SPECIALBLOCK_BIT)
-# define C_LAMBDA_INFO_TYPE       (0x0d00000000000000L | C_BYTEBLOCK_BIT)
-/*       unused                   (0x0e00000000000000L ...) */
-# define C_BUCKET_TYPE            (0x0f00000000000000L)
-#else
-# define C_INT_SIGN_BIT           0x80000000
-# define C_INT_TOP_BIT            0x40000000
-# define C_HEADER_BITS_MASK       0xff000000
-# define C_HEADER_TYPE_BITS       0x0f000000
-# define C_HEADER_SIZE_MASK       0x00ffffff
-# define C_GC_FORWARDING_BIT      0x80000000
-# define C_BYTEBLOCK_BIT          0x40000000
-# define C_SPECIALBLOCK_BIT       0x20000000
-# define C_8ALIGN_BIT             0x10000000
-
-# define C_SYMBOL_TYPE            (0x01000000)
-# define C_STRING_TYPE            (0x02000000 | C_BYTEBLOCK_BIT)
-# define C_PAIR_TYPE              (0x03000000)
-# define C_CLOSURE_TYPE           (0x04000000 | C_SPECIALBLOCK_BIT)
-# ifdef C_DOUBLE_IS_32_BITS
-#  define C_FLONUM_TYPE           (0x05000000 | C_BYTEBLOCK_BIT)
-# else
-#  define C_FLONUM_TYPE           (0x05000000 | C_BYTEBLOCK_BIT | C_8ALIGN_BIT)
-# endif
-/*       unused                   (0x06000000 ...) */
-# define C_PORT_TYPE              (0x07000000 | C_SPECIALBLOCK_BIT)
-# define C_STRUCTURE_TYPE         (0x08000000)
-# define C_POINTER_TYPE           (0x09000000 | C_SPECIALBLOCK_BIT)
-# define C_LOCATIVE_TYPE          (0x0a000000 | C_SPECIALBLOCK_BIT)
-# define C_TAGGED_POINTER_TYPE    (0x0b000000 | C_SPECIALBLOCK_BIT)
-# define C_SWIG_POINTER_TYPE      (0x0c000000 | C_SPECIALBLOCK_BIT)
-# define C_LAMBDA_INFO_TYPE       (0x0d000000 | C_BYTEBLOCK_BIT)
-/*       unused                   (0x0e000000 ...) */
-# define C_BUCKET_TYPE            (0x0f000000)
-#endif
-#define C_VECTOR_TYPE             0x00000000
-#define C_BYTEVECTOR_TYPE         (C_VECTOR_TYPE | C_BYTEBLOCK_BIT | C_8ALIGN_BIT)
-
-#define C_SIZEOF_LIST(n)          ((n) * 3 + 1)
-#define C_SIZEOF_PAIR             3
-#define C_SIZEOF_STRING(n)        (C_bytestowords(n) + 2)
-#define C_SIZEOF_SYMBOL           4
-#define C_SIZEOF_INTERNED_SYMBOL(n) (C_SIZEOF_SYMBOL + C_SIZEOF_BUCKET + C_SIZEOF_STRING(n))
-#ifdef C_DOUBLE_IS_32_BITS
-# define C_SIZEOF_FLONUM          2
-#else
-# define C_SIZEOF_FLONUM          4
-#endif
-#define C_SIZEOF_POINTER          2
-#define C_SIZEOF_TAGGED_POINTER   3
-#define C_SIZEOF_SWIG_POINTER     3
-#define C_SIZEOF_VECTOR(n)        ((n) + 1)
-#define C_SIZEOF_BUCKET           3
-#define C_SIZEOF_LOCATIVE         5
-#define C_SIZEOF_PORT             16
-
-/* Fixed size types have pre-computed header tags */
-#define C_PAIR_TAG                (C_PAIR_TYPE | (C_SIZEOF_PAIR - 1))
-#define C_POINTER_TAG             (C_POINTER_TYPE | (C_SIZEOF_POINTER - 1))
-#define C_LOCATIVE_TAG            (C_LOCATIVE_TYPE | (C_SIZEOF_LOCATIVE - 1))
-#define C_TAGGED_POINTER_TAG      (C_TAGGED_POINTER_TYPE | (C_SIZEOF_TAGGED_POINTER - 1))
-#define C_SWIG_POINTER_TAG        (C_SWIG_POINTER_TYPE | (C_wordstobytes(C_SIZEOF_SWIG_POINTER - 1)))
-#define C_SYMBOL_TAG              (C_SYMBOL_TYPE | (C_SIZEOF_SYMBOL - 1))
-#define C_FLONUM_TAG              (C_FLONUM_TYPE | sizeof(double))
-
-/* Locative subtypes */
-#define C_SLOT_LOCATIVE           0
-#define C_CHAR_LOCATIVE           1
-#define C_U8_LOCATIVE             2
-#define C_S8_LOCATIVE             3
-#define C_U16_LOCATIVE            4
-#define C_S16_LOCATIVE            5
-#define C_U32_LOCATIVE            6
-#define C_S32_LOCATIVE            7
-#define C_F32_LOCATIVE            8
-#define C_F64_LOCATIVE            9
-
-#ifdef C_SIXTY_FOUR
-# define C_word                   long
-# define C_u32                    uint32_t
-# define C_s32                    int32_t
-#else
-# define C_word                   int
-# define C_u32                    unsigned int
-# define C_s32                    int
-#endif
-
-#if defined (__MINGW32__)
-# define C_s64                    __int64
-# define C_u64                    unsigned __int64
-#else
-# define C_s64                    int64_t
-# define C_u64                    uint64_t
-#endif
-
-#define C_char                    char
-#define C_uchar                   unsigned C_char
-#define C_byte                    char
-#define C_uword                   unsigned C_word
-#define C_header                  C_uword
-
-#ifdef __cplusplus
-# define C_text(x)                ((C_char *)(x))
-#else
-# define C_text(x)                (x)
-#endif
-
-#define C_TIMER_INTERRUPT_NUMBER  255
-
-#define C_BAD_ARGUMENT_COUNT_ERROR                    1
-#define C_BAD_MINIMUM_ARGUMENT_COUNT_ERROR            2
-#define C_BAD_ARGUMENT_TYPE_ERROR                     3
-#define C_UNBOUND_VARIABLE_ERROR                      4
-#define C_TOO_MANY_PARAMETERS_ERROR                   5
-#define C_OUT_OF_MEMORY_ERROR                         6
-#define C_DIVISION_BY_ZERO_ERROR                      7
-#define C_OUT_OF_RANGE_ERROR                          8
-#define C_NOT_A_CLOSURE_ERROR                         9
-#define C_CONTINUATION_CANT_RECEIVE_VALUES_ERROR      10
-#define C_BAD_ARGUMENT_TYPE_CYCLIC_LIST_ERROR         11
-#define C_TOO_DEEP_RECURSION_ERROR                    12
-#define C_CANT_REPRESENT_INEXACT_ERROR                13
-#define C_NOT_A_PROPER_LIST_ERROR                     14
-#define C_BAD_ARGUMENT_TYPE_NO_FIXNUM_ERROR           15
-#define C_BAD_ARGUMENT_TYPE_NO_NUMBER_ERROR           16
-#define C_BAD_ARGUMENT_TYPE_NO_STRING_ERROR           17
-#define C_BAD_ARGUMENT_TYPE_NO_PAIR_ERROR             18
-#define C_BAD_ARGUMENT_TYPE_NO_LIST_ERROR             19
-#define C_BAD_ARGUMENT_TYPE_NO_CHAR_ERROR             20
-#define C_BAD_ARGUMENT_TYPE_NO_VECTOR_ERROR           21
-#define C_BAD_ARGUMENT_TYPE_NO_SYMBOL_ERROR           22
-#define C_STACK_OVERFLOW_ERROR                        23
-#define C_BAD_ARGUMENT_TYPE_BAD_STRUCT_ERROR          24
-#define C_BAD_ARGUMENT_TYPE_NO_BYTEVECTOR_ERROR       25
-#define C_LOST_LOCATIVE_ERROR                         26
-#define C_BAD_ARGUMENT_TYPE_NO_BLOCK_ERROR            27
-#define C_BAD_ARGUMENT_TYPE_NO_NUMBER_VECTOR_ERROR    28
-#define C_BAD_ARGUMENT_TYPE_NO_INTEGER_ERROR          29
-#define C_BAD_ARGUMENT_TYPE_NO_UINTEGER_ERROR         30
-#define C_BAD_ARGUMENT_TYPE_NO_POINTER_ERROR          31
-#define C_BAD_ARGUMENT_TYPE_NO_TAGGED_POINTER_ERROR   32
-#define C_BAD_ARGUMENT_TYPE_NO_FLONUM_ERROR           33
-#define C_BAD_ARGUMENT_TYPE_NO_CLOSURE_ERROR          34
-#define C_BAD_ARGUMENT_TYPE_BAD_BASE_ERROR            35
-#define C_CIRCULAR_DATA_ERROR                         36
-#define C_BAD_ARGUMENT_TYPE_NO_BOOLEAN_ERROR          37
-#define C_BAD_ARGUMENT_TYPE_NO_LOCATIVE_ERROR         38
-#define C_BAD_ARGUMENT_TYPE_NO_PORT_ERROR             39
-#define C_BAD_ARGUMENT_TYPE_NO_INPUT_PORT_ERROR       40
-#define C_BAD_ARGUMENT_TYPE_NO_OUTPUT_PORT_ERROR      41
-#define C_PORT_CLOSED_ERROR                           42
-#define C_ASCIIZ_REPRESENTATION_ERROR                 43
-
-
-/* Platform information */
-#if defined(C_BIG_ENDIAN)
-# define C_MACHINE_BYTE_ORDER "big-endian"
-#elif defined(C_LITTLE_ENDIAN)
-# define C_MACHINE_BYTE_ORDER "little-endian"
-#endif
-
-#if defined(__alpha__)
-# define C_MACHINE_TYPE "alpha"
-#elif defined(__mips__)
-# define C_MACHINE_TYPE "mips"
-#elif defined(__hppa__)
-# define C_MACHINE_TYPE "hppa"
-#elif defined(__sparc_v9__) || defined(__sparcv9)
-# define C_MACHINE_TYPE "ultrasparc"
-#elif defined(__sparc__)
-# define C_MACHINE_TYPE "sparc"
-#elif defined(__powerpc64__)
-# define C_MACHINE_TYPE "ppc64"
-#elif defined(__ppc__) || defined(__powerpc__)
-# define C_MACHINE_TYPE "ppc"
-#elif defined(_M_IX86) || defined(__i386__)
-# define C_MACHINE_TYPE "x86"
-#elif defined(__ia64__)
-# define C_MACHINE_TYPE "ia64"
-#elif defined(__x86_64__)
-# define C_MACHINE_TYPE "x86-64"
-#elif defined(__arm__)
-# define C_MACHINE_TYPE "arm"
-#else
-# define C_MACHINE_TYPE "unknown"
-#endif
-
-#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(_WIN32) || defined(__WINNT__)
-# define C_SOFTWARE_TYPE "windows"
-#elif defined(__unix__) || defined(C_XXXBSD)
-# define C_SOFTWARE_TYPE "unix"
-#elif defined(ECOS)
-# define C_SOFTWARE_TYPE "ecos"
-#else
-# define C_SOFTWARE_TYPE "unknown"
-#endif
-
-#if defined(__CYGWIN__)
-# define C_BUILD_PLATFORM "cygwin"
-#elif defined(__SUNPRO_C)
-# define C_BUILD_PLATFORM "sun"
-#elif defined(__MINGW32__)
-# define C_BUILD_PLATFORM "mingw32"
-#elif defined(__clang__)
-# define C_BUILD_PLATFORM "clang"
-#elif defined(__GNUC__)
-# define C_BUILD_PLATFORM "gnu"
-#elif defined(__MWERKS__)
-# define C_BUILD_PLATFORM "metrowerks"
-#elif defined(__INTEL_COMPILER)
-# define C_BUILD_PLATFORM "intel"
-#elif defined(__WATCOMC__)
-# define C_BUILD_PLATFORM "watcom"
-#else
-# define C_BUILD_PLATFORM "unknown"
-#endif
-
-#if defined(__linux__)
-# define C_SOFTWARE_VERSION "linux"
-#elif defined(__FreeBSD__)
-# define C_SOFTWARE_VERSION "freebsd"
-#elif defined(__NetBSD__)
-# define C_SOFTWARE_VERSION "netbsd"
-#elif defined(__OpenBSD__)
-# define C_SOFTWARE_VERSION "openbsd"
-#elif defined(C_MACOSX)
-# define C_SOFTWARE_VERSION "macosx"
-#elif defined(__hpux__)
-# define C_SOFTWARE_VERSION "hpux"
-#elif defined(__DragonFly__)
-# define C_SOFTWARE_VERSION "dragonfly"
-#elif defined(__HAIKU__)
-# define C_SOFTWARE_VERSION "haiku"
-#elif defined(__sun__)
-# if defined(__svr4__)
-#   define C_SOFTWARE_VERSION "solaris"
-# else
-#   define C_SOFTWARE_VERSION "sunos"
-# endif
-#else
-# define C_SOFTWARE_VERSION "unknown"
-#endif
-
-#define C_MAX_PATH         PATH_MAX
-
-
-/* Types: */
-
-typedef struct C_block_struct
-{
-  C_header header;
-#if (__STDC_VERSION__ >= 199901L)
-  C_word data[];
-#else
-  C_word data[ 1 ];
-#endif
-} C_SCHEME_BLOCK;
-
-typedef struct C_symbol_table_struct
-{
-  char *name;
-  unsigned int size;
-  unsigned int rand;
-  C_word *table;
-  struct C_symbol_table_struct *next;
-} C_SYMBOL_TABLE;
-
-typedef struct C_gc_root_struct
-{
-  C_word value;
-  struct C_gc_root_struct *next, *prev;
-  int finalizable;
-} C_GC_ROOT;
-
-typedef struct C_ptable_entry_struct
-{
-  C_char *id;
-  void *ptr;
-} C_PTABLE_ENTRY;
-
-#ifdef __x86_64__
-# define C_AMD64_ABI_WEIRDNESS      , ...
-#else
-# define C_AMD64_ABI_WEIRDNESS
-#endif
-
-/* C_WORD_p<P>_<B>: List of ((2 ** P) * B) 'C_word' parameters */
-#define C_WORD_p0_0
-#define C_WORD_p1_0
-#define C_WORD_p2_0
-#define C_WORD_p3_0
-#define C_WORD_p4_0
-#define C_WORD_p5_0
-#define C_WORD_p6_0
-#define C_WORD_p7_0
-#define C_WORD_p0_1     C_word,
-#define C_WORD_p1_1     C_word, C_word,
-#define C_WORD_p2_1     C_WORD_p1_1 C_WORD_p1_1
-#define C_WORD_p3_1     C_WORD_p2_1 C_WORD_p2_1
-#define C_WORD_p4_1     C_WORD_p3_1 C_WORD_p3_1
-#define C_WORD_p5_1     C_WORD_p4_1 C_WORD_p4_1
-#define C_WORD_p6_1     C_WORD_p5_1 C_WORD_p5_1
-#define C_WORD_p7_1     C_WORD_p6_1 C_WORD_p6_1
-
-/* DECL_C_PROC_p0 (n0,  p7,p6,p5,p4,p3,p2,p1,p0):
- *  declare function C_proc<n0>, which have <n0> 'C_word' parameters
- *  (not counting last 'C_word C_AMD64_ABI_WEIRDNESS' one).
- *  We must have:   n0 = SUM (i = 7 to 0, p<i> * (1 << i)).
- * DECL_C_PROC_p<N+1> (...):
- *  declare 2 as much functions as DECL_C_PROC_p<N>...
- */
-#define DECL_C_PROC_p0( n0,  p7,p6,p5,p4,p3,p2,p1,p0) \
-    typedef void (C_ccall *C_proc##n0) (C_WORD_p7_##p7 C_WORD_p6_##p6 \
-                                        C_WORD_p5_##p5 C_WORD_p4_##p4 \
-                                        C_WORD_p3_##p3 C_WORD_p2_##p2 \
-                                        C_WORD_p1_##p1 C_WORD_p0_##p0 \
-                                        C_word C_AMD64_ABI_WEIRDNESS) C_noret;
-#define DECL_C_PROC_p1( n0,n1,  p7,p6,p5,p4,p3,p2,p1) \
-        DECL_C_PROC_p0 (n0,  p7,p6,p5,p4,p3,p2,p1,0) \
-        DECL_C_PROC_p0 (n1,  p7,p6,p5,p4,p3,p2,p1,1)
-#define DECL_C_PROC_p2( n0,n1,n2,n3,  p7,p6,p5,p4,p3,p2) \
-        DECL_C_PROC_p1 (n0,n1,  p7,p6,p5,p4,p3,p2,0) \
-        DECL_C_PROC_p1 (n2,n3,  p7,p6,p5,p4,p3,p2,1)
-#define DECL_C_PROC_p3( n0,n1,n2,n3,n4,n5,n6,n7,  p7,p6,p5,p4,p3) \
-        DECL_C_PROC_p2 (n0,n1,n2,n3,  p7,p6,p5,p4,p3,0) \
-        DECL_C_PROC_p2 (n4,n5,n6,n7,  p7,p6,p5,p4,p3,1)
-
-DECL_C_PROC_p1 (2,3,  0,0,0,0,0,0,1)
-DECL_C_PROC_p2 (4,5,6,7,  0,0,0,0,0,1)
-DECL_C_PROC_p3 (8,9,10,11,12,13,14,15,    0,0,0,0,1)
-DECL_C_PROC_p3 (16,17,18,19,20,21,22,23,  0,0,0,1,0)
-DECL_C_PROC_p3 (24,25,26,27,28,29,30,31,  0,0,0,1,1)
-DECL_C_PROC_p3 (32,33,34,35,36,37,38,39,  0,0,1,0,0)
-DECL_C_PROC_p3 (40,41,42,43,44,45,46,47,  0,0,1,0,1)
-DECL_C_PROC_p3 (48,49,50,51,52,53,54,55,  0,0,1,1,0)
-DECL_C_PROC_p3 (56,57,58,59,60,61,62,63,  0,0,1,1,1)
-DECL_C_PROC_p1 (64,65,  0,1,0,0,0,0,0)
-DECL_C_PROC_p0 (66,  0,1,0,0,0,0,1,0)
-DECL_C_PROC_p0 (67,  0,1,0,0,0,0,1,1)
-DECL_C_PROC_p2 (68,69,70,71,  0,1,0,0,0,1)
-DECL_C_PROC_p3 (72,73,74,75,76,77,78,79,  0,1,0,0,1)
-DECL_C_PROC_p3 (80,81,82,83,84,85,86,87,  0,1,0,1,0)
-DECL_C_PROC_p3 (88,89,90,91,92,93,94,95,  0,1,0,1,1)
-DECL_C_PROC_p3 (96,97,98,99,100,101,102,103,  0,1,1,0,0)
-DECL_C_PROC_p3 (104,105,106,107,108,109,110,111,  0,1,1,0,1)
-DECL_C_PROC_p3 (112,113,114,115,116,117,118,119,  0,1,1,1,0)
-DECL_C_PROC_p3 (120,121,122,123,124,125,126,127,  0,1,1,1,1)
-DECL_C_PROC_p0 (128,  1,0,0,0,0,0,0,0)
-
-
-/* Macros: */
-
-#define CHICKEN_gc_root_ref(root)      (((C_GC_ROOT *)(root))->value)
-#define CHICKEN_gc_root_set(root, x)   C_mutate(&((C_GC_ROOT *)(root))->value, (x))
-
-#define CHICKEN_global_ref(root)       C_u_i_car(((C_GC_ROOT *)(root))->value)
-#define CHICKEN_global_set(root, x)    C_mutate(&C_u_i_car(((C_GC_ROOT *)(root))->value), (x))
-
-#define CHICKEN_default_toplevel       ((void *)C_default_5fstub_toplevel)
-
-#define C_align4(n)                (((n) + 3) & ~3)
-#define C_align8(n)                (((n) + 7) & ~7)
-#define C_align16(n)               (((n) + 15) & ~15)
-
-#define C_aligned8(n)              ((((C_word)(n)) & 7) == 0)
-
-/* This is word-size dependent: */
-#ifdef C_SIXTY_FOUR
-# define C_align(n)                C_align8(n)
-# define C_wordstobytes(n)         ((n) << 3)
-# define C_bytestowords(n)         (((n) + 7) >> 3)
-# define C_wordsperdouble(n)       (n)
-# define C_WORD_MIN                LONG_MIN
-# define C_WORD_MAX                LONG_MAX
-# define C_UWORD_MAX               ULONG_MAX
-#else
-# define C_align(n)                C_align4(n)
-# define C_wordstobytes(n)         ((n) << 2)
-# define C_bytestowords(n)         (((n) + 3) >> 2)
-# define C_wordsperdouble(n)       ((n) << 1)
-# define C_WORD_MIN                INT_MIN
-# define C_WORD_MAX                INT_MAX
-# define C_UWORD_MAX               UINT_MAX
-#endif
-
-#ifndef C_PROVIDE_LIBC_STUBS
-# define C_FILEPTR                  FILE *
-
-# define C_stdin                    stdin
-# define C_stdout                   stdout
-# define C_stderr                   stderr
-
-# define C_memcpy                   memcpy
-# define C_memcmp                   memcmp
-# define C_strcpy                   strcpy
-# define C_strncpy                  strncpy
-# define C_strcmp                   strcmp
-# define C_strncmp                  strncmp
-# define C_strlen                   strlen
-# define C_strcat                   strcat
-# define C_memset                   memset
-# define C_memmove                  memmove
-# define C_strncasecmp              strncasecmp
-# define C_malloc                   malloc
-# define C_calloc                   calloc
-# define C_free                     free
-# define C_strchr                   strchr
-# define C_realloc                  realloc
-# define C_strdup                   strdup
-# define C_strtol                   strtol
-# define C_strtod                   strtod
-# define C_strtoul                  strtoul
-# define C_fopen                    fopen
-# define C_fclose                   fclose
-# define C_strpbrk                  strpbrk
-# define C_gcvt                     gcvt
-# define C_sprintf                  sprintf
-# define C_snprintf                 snprintf
-# define C_printf                   printf
-# define C_fprintf                  fprintf
-# define C_vfprintf                 vfprintf
-# define C_fflush                   fflush
-# define C_getchar                  getchar
-# define C_exit                     exit
-# define C_dlopen                   dlopen
-# define C_dlclose                  dlclose
-# define C_dlsym                    dlsym
-# define C_fwrite                   fwrite
-# define C_fread                    fread
-# define C_fputs                    fputs
-# define C_fputc                    fputc
-# define C_putchar                  putchar
-# if (defined getc_unlocked || _POSIX_C_SOURCE >= 199506L)
-#  define C_getc                    getc_unlocked
-# else
-#  define C_getc                    getc
-# endif
-# define C_fgetc                    fgetc
-# define C_fgets                    fgets
-# define C_ungetc                   ungetc
-# define C_system                   system
-# define C_isatty                   isatty
-# define C_fileno                   fileno
-# define C_select                   select
-# if defined(HAVE_SIGACTION)
-# define C_sigaction                sigaction
-# endif
-# define C_signal                   signal
-# define C_getrusage                getrusage
-# define C_tolower                  tolower
-# define C_toupper                  toupper
-# define C_gettimeofday             gettimeofday
-# define C_gmtime                   gmtime
-# define C_localtime                localtime
-/*
- * It is undefined whether regular setjmp/longjmp save/restore signal mask
- * so try to use versions that we know won't try to save & restore.
- */
-# if defined(HAVE_SIGSETJMP)
-#   define C_setjmp(e)              sigsetjmp(e, 0)
-#   define C_longjmp(e,v)           siglongjmp(e, v)
-# else
-#   define C_setjmp                 setjmp
-#   define C_longjmp                longjmp
-# endif
-# define C_alloca                   alloca
-# define C_strerror                 strerror
-# define C_isalpha                  isalpha
-# define C_isdigit                  isdigit
-# define C_isspace                  isspace
-# define C_islower                  islower
-# define C_isupper                  isupper
-# define C_sin                      sin
-# define C_cos                      cos
-# define C_tan                      tan
-# define C_asin                     asin
-# define C_acos                     acos
-# define C_atan                     atan
-# define C_atan2                    atan2
-# define C_log                      log
-# define C_exp                      exp
-# define C_pow                      pow
-# define C_sqrt                     sqrt
-# define C_ceil                     ceil
-# define C_floor                    floor
-# define C_round                    round
-# define C_trunc                    trunc
-# define C_fabs                     fabs
-# define C_modf                     modf
-# define C_readlink                 readlink
-# define C_getcwd                   getcwd
-# define C_access                   access
-# define C_getpid                   getpid
-# define C_getenv                   getenv
-# ifdef __linux__
-extern double round(double);
-extern double trunc(double);
-# endif
-#else
-/* provide this file and define C_PROVIDE_LIBC_STUBS if you want to use
-   your own libc-replacements or -wrappers */
-# include "chicken-libc-stubs.h"
-#endif
-
-#define C_id(x)                    (x)
-#define C_return(x)                return(x)
-#define C_resize_stack(n)          C_do_resize_stack(n)
-#define C_memcpy_slots(t, f, n)    C_memcpy((t), (f), (n) * sizeof(C_word))
-#define C_block_header(x)          (((C_SCHEME_BLOCK *)(x))->header)
-#define C_header_bits(x)           (C_block_header(x) & C_HEADER_BITS_MASK)
-#define C_header_size(x)           (C_block_header(x) & C_HEADER_SIZE_MASK)
-#define C_make_header(type, size)  ((C_header)(((type) & C_HEADER_BITS_MASK) | ((size) & C_HEADER_SIZE_MASK)))
-#define C_symbol_value(x)          (C_block_item(x, 0))
-#define C_block_item(x, i)         (((C_SCHEME_BLOCK *)(x))->data[ i ])
-#define C_set_block_item(x, i, y)  (C_block_item(x, i) = (y))
-#define C_save(x)	           (*(--C_temporary_stack) = (C_word)(x))
-#define C_adjust_stack(n)          (C_temporary_stack -= (n))
-#define C_rescue(x, i)             (C_temporary_stack[ i ] = (x))
-#define C_save_rest(s, c, n)  	   for(va_start(v, s); c-- > (n); C_save(va_arg(v, C_word)))
-#define C_rest_count(c)            ((C_temporary_stack_bottom - C_temporary_stack) - (c))
-#define C_restore                  (*(C_temporary_stack++))
-#define C_heaptop                  ((C_word **)(&C_fromspace_top))
-#define C_pick(n)                  (C_temporary_stack[ n ])
-#define C_drop(n)                  (C_temporary_stack += (n))
-#define C_alloc(n)                 ((C_word *)C_alloca((n) * sizeof(C_word)))
-#if defined (__llvm__) && defined (__GNUC__)
-# if defined (__i386__)
-#  define C_stack_pointer ({C_word *sp; __asm__ __volatile__("movl %%esp,%0":"=r"(sp):);sp;})
-# elif defined (__x86_64__)
-#  define C_stack_pointer ({C_word *sp; __asm__ __volatile__("movq %%rsp,%0":"=r"(sp):);sp;})
-# else
-#  define C_stack_pointer ((C_word *)C_alloca(1))
-# endif
-#else
-# define C_stack_pointer ((C_word *)C_alloca(0))
-#endif
-#define C_stack_pointer_test       ((C_word *)C_alloca(1))
-#define C_demand_2(n)              (((C_word *)C_fromspace_top + (n)) < (C_word *)C_fromspace_limit)
-#define C_fix(n)                   (((C_word)(n) << C_FIXNUM_SHIFT) | C_FIXNUM_BIT)
-#define C_unfix(x)                 ((x) >> C_FIXNUM_SHIFT)
-#define C_make_character(c)        (((((C_uword)(c)) & C_CHAR_BIT_MASK) << C_CHAR_SHIFT) | C_CHARACTER_BITS)
-#define C_character_code(x)        (((C_word)(x) >> C_CHAR_SHIFT) & C_CHAR_BIT_MASK)
-#define C_flonum_magnitude(x)      (*((double *)(((C_SCHEME_BLOCK *)(x))->data)))
-#define C_c_string(x)              ((C_char *)(((C_SCHEME_BLOCK *)(x))->data))
-#define C_c_pointer(x)             ((void *)(x))
-#define C_c_pointer_nn(x)          ((void *)C_block_item(x, 0))
-#define C_truep(x)                 ((x) != C_SCHEME_FALSE)
-#define C_immediatep(x)            ((x) & C_IMMEDIATE_MARK_BITS)
-#define C_mk_bool(x)               ((x) ? C_SCHEME_TRUE : C_SCHEME_FALSE)
-#define C_mk_nbool(x)              ((x) ? C_SCHEME_FALSE : C_SCHEME_TRUE)
-#define C_port_file(p)             ((C_FILEPTR)C_block_item(p, 0))
-#define C_data_pointer(x)          ((void *)((C_SCHEME_BLOCK *)(x))->data)
-#define C_invert_flag(f)           (!(f))
-#define C_fitsinfixnump(n)         (((n) & C_INT_SIGN_BIT) == (((n) & C_INT_TOP_BIT) << 1))
-#define C_ufitsinfixnump(n)        (((n) & (C_INT_SIGN_BIT | (C_INT_SIGN_BIT >> 1))) == 0)
-#define C_quickflonumtruncate(n)   (C_fix((C_word)C_flonum_magnitude(n)))
-#define C_and(x, y)                (C_truep(x) ? (y) : C_SCHEME_FALSE)
-#define C_c_bytevector(x)          ((unsigned char *)C_data_pointer(x))
-#define C_c_bytevector_or_null(x)  ((unsigned char *)C_data_pointer_or_null(x))
-#define C_c_u8vector(x)            ((unsigned char *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_u8vector_or_null(x)    ((unsigned char *)C_srfi_4_vector_or_null(x))
-#define C_c_s8vector(x)            ((char *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_s8vector_or_null(x)    ((char *)C_srfi_4_vector_or_null(x))
-#define C_c_u16vector(x)           ((unsigned short *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_u16vector_or_null(x)   ((unsigned short *)C_srfi_4_vector_or_null(x))
-#define C_c_s16vector(x)           ((short *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_s16vector_or_null(x)   ((short *)C_srfi_4_vector_or_null(x))
-#define C_c_u32vector(x)           ((C_u32 *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_u32vector_or_null(x)   ((C_u32 *)C_srfi_4_vector_or_null(x))
-#define C_c_s32vector(x)           ((C_s32 *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_s32vector_or_null(x)   ((C_s32 *)C_srfi_4_vector_or_null(x))
-#define C_c_f32vector(x)           ((float *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_f32vector_or_null(x)   ((float *)C_srfi_4_vector_or_null(x))
-#define C_c_f64vector(x)           ((double *)C_data_pointer(C_u_i_cdr(x)))
-#define C_c_f64vector_or_null(x)   ((double *)C_srfi_4_vector_or_null(x))
-#define C_c_pointer_vector(x)      ((void **)C_data_pointer(C_block_item((x), 2)))
-
-#define C_isnan(f)                 isnan(f)
-#define C_isinf(f)                 isinf(f)
-
-#ifdef C_STRESS_TEST
-# define C_STRESS_FAILURE          3
-# define C_stress                  (rand() % C_STRESS_FAILURE)
-#else
-# define C_stress                  1
-#endif
-
-#define C_stack_overflow_check    C_stack_check1(C_stack_overflow())
-
-/*XXX OBSOLETE */
-#define C_stack_check             C_stack_overflow_check
-
-#if C_STACK_GROWS_DOWNWARD
-# define C_demand(n)              (C_stress && ((C_word)(C_stack_pointer - C_stack_limit) > (n)))
-# define C_stack_probe(p)         (C_stress && ((C_word *)(p) >= C_stack_limit))
-
-# define C_stack_check1(err)      if(!C_disable_overflow_check) {	\
-                                    do { C_byte *_sp = (C_byte*)(C_stack_pointer); \
-				      if(_sp < (C_byte *)C_stack_limit && \
-					 ((C_byte *)C_stack_limit - _sp) > C_STACK_RESERVE) \
-					err; }				\
-				    while(0);}
-
-#else
-# define C_demand(n)              (C_stress && ((C_word)(C_stack_limit - C_stack_pointer) > (n)))
-# define C_stack_probe(p)         (C_stress && ((C_word *)(p) < C_stack_limit))
-
-# define C_stack_check1(err)      if(!C_disable_overflow_check) {	\
-                                    do { C_byte *_sp = (C_byte*)(C_stack_pointer); \
-				      if(_sp > (C_byte *)C_stack_limit && \
-					 (_sp - (C_byte *)C_stack_limit) > C_STACK_RESERVE) \
-					err; }				\
-				    while(0);}
-
-#endif
-
-#define C_zero_length_p(x)        C_mk_bool(C_header_size(x) == 0)
-#define C_boundp(x)               C_mk_bool(((C_SCHEME_BLOCK *)(x))->data[ 0 ] != C_SCHEME_UNBOUND)
-#define C_unboundvaluep(x)        C_mk_bool((x) == C_SCHEME_UNBOUND)
-#define C_blockp(x)               C_mk_bool(!C_immediatep(x))
-#define C_forwardedp(x)           C_mk_bool((C_block_header(x) & C_GC_FORWARDING_BIT) != 0)
-#define C_immp(x)                 C_mk_bool(C_immediatep(x))
-#define C_flonump(x)              C_mk_bool(C_block_header(x) == C_FLONUM_TAG)
-#define C_stringp(x)              C_mk_bool(C_header_bits(x) == C_STRING_TYPE)
-#define C_symbolp(x)              C_mk_bool(C_block_header(x) == C_SYMBOL_TAG)
-#define C_pairp(x)                C_mk_bool(C_block_header(x) == C_PAIR_TAG)
-#define C_closurep(x)             C_mk_bool(C_header_bits(x) == C_CLOSURE_TYPE)
-#define C_vectorp(x)              C_mk_bool(C_header_bits(x) == C_VECTOR_TYPE)
-#define C_bytevectorp(x)          C_mk_bool(C_header_bits(x) == C_BYTEVECTOR_TYPE)
-#define C_portp(x)                C_mk_bool(C_header_bits(x) == C_PORT_TYPE)
-#define C_structurep(x)           C_mk_bool(C_header_bits(x) == C_STRUCTURE_TYPE)
-#define C_locativep(x)            C_mk_bool(C_block_header(x) == C_LOCATIVE_TAG)
-#define C_charp(x)                C_mk_bool(((x) & C_IMMEDIATE_TYPE_BITS) == C_CHARACTER_BITS)
-#define C_booleanp(x)             C_mk_bool(((x) & C_IMMEDIATE_TYPE_BITS) == C_BOOLEAN_BITS)
-#define C_eofp(x)                 C_mk_bool((x) == C_SCHEME_END_OF_FILE)
-#define C_undefinedp(x)           C_mk_bool((x) == C_SCHEME_UNDEFINED)
-#define C_fixnump(x)              C_mk_bool((x) & C_FIXNUM_BIT)
-#define C_nfixnump(x)             C_mk_nbool((x) & C_FIXNUM_BIT)
-#define C_pointerp(x)             C_mk_bool(C_block_header(x) == C_POINTER_TAG)
-#define C_taggedpointerp(x)       C_mk_bool(C_block_header(x) == C_TAGGED_POINTER_TAG)
-#define C_swigpointerp(x)         C_mk_bool(C_block_header(x) == C_SWIG_POINTER_TAG)
-#define C_lambdainfop(x)          C_mk_bool(C_header_bits(x) == C_LAMBDA_INFO_TYPE)
-#define C_anypointerp(x)          C_mk_bool(C_block_header(x) == C_POINTER_TAG || C_block_header(x) == C_TAGGED_POINTER_TAG || C_block_header(x) == C_SWIG_POINTER_TAG)
-#define C_specialp(x)             C_mk_bool(C_header_bits(x) & C_SPECIALBLOCK_BIT)
-#define C_byteblockp(x)           C_mk_bool(C_header_bits(x) & C_BYTEBLOCK_BIT)
-#define C_anyp(x)                 C_SCHEME_TRUE
-#define C_sametypep(x, y)         C_mk_bool(C_header_bits(x) == C_header_bits(y))
-#define C_eqp(x, y)               C_mk_bool((x) == (y))
-#define C_vemptyp(x)              C_mk_bool(C_header_size(x) == 0)
-#define C_notvemptyp(x)           C_mk_bool(C_header_size(x) > 0)
-#define C_u_i_exactp(x)           C_mk_bool((x) & C_FIXNUM_BIT)
-#define C_u_i_inexactp(x)         C_mk_bool(((x) & C_FIXNUM_BIT) == 0)
-
-#define C_slot(x, i)              (((C_SCHEME_BLOCK *)(x))->data[ C_unfix(i) ])
-#define C_slot0(x)                (((C_SCHEME_BLOCK *)(x))->data[ 0 ])
-#define C_subbyte(x, i)           C_fix(((C_byte *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] & 0xff)
-#define C_subchar(x, i)           C_make_character(((C_uchar *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ])
-#define C_setbyte(x, i, n)        (((C_byte *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] = C_unfix(n), C_SCHEME_UNDEFINED)
-#define C_setsubchar(x, i, n)     (((C_char *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] = C_character_code(n), C_SCHEME_UNDEFINED)
-#define C_setsubbyte(x, i, n)     (((C_char *)((C_SCHEME_BLOCK *)(x))->data)[ C_unfix(i) ] = C_unfix(n), C_SCHEME_UNDEFINED)
-#define C_fixnum_times(n1, n2)          (C_fix(C_unfix(n1) * C_unfix(n2)))
-#define C_u_fixnum_plus(n1, n2)         (((n1) - C_FIXNUM_BIT) + (n2))
-#define C_fixnum_plus(n1, n2)           (C_u_fixnum_plus(n1, n2) | C_FIXNUM_BIT)
-#define C_u_fixnum_difference(n1, n2)   ((n1) - (n2) + C_FIXNUM_BIT)
-#define C_fixnum_difference(n1, n2)     (C_u_fixnum_difference(n1, n2) | C_FIXNUM_BIT)
-#define C_u_fixnum_divide(n1, n2)       (C_fix(C_unfix(n1) / C_unfix(n2)))
-#define C_u_fixnum_modulo(n1, n2)       (C_fix(C_unfix(n1) % C_unfix(n2)))
-#define C_u_fixnum_and(n1, n2)          ((n1) & (n2))
-#define C_fixnum_and(n1, n2)            (C_u_fixnum_and(n1, n2) | C_FIXNUM_BIT)
-#define C_u_fixnum_or(n1, n2)           ((n1) | (n2))
-#define C_fixnum_or(n1, n2)             (C_u_fixnum_or(n1, n2) | C_FIXNUM_BIT)
-#define C_fixnum_xor(n1, n2)            (((n1) ^ (n2)) | C_FIXNUM_BIT)
-#define C_fixnum_not(n)                 ((~(n)) | C_FIXNUM_BIT)
-#define C_fixnum_shift_left(n1, n2)     (C_fix(C_unfix(n1) << C_unfix(n2)))
-#define C_fixnum_shift_right(n1, n2)    (((n1) >> C_unfix(n2)) | C_FIXNUM_BIT)
-#define C_u_fixnum_negate(n)            (-(n) + 2 * C_FIXNUM_BIT)
-#define C_fixnum_negate(n)              (C_u_fixnum_negate(n) | C_FIXNUM_BIT)
-#define C_fixnum_greaterp(n1, n2)       (C_mk_bool((C_word)(n1) > (C_word)(n2)))
-#define C_fixnum_lessp(n1, n2)          (C_mk_bool((C_word)(n1) < (C_word)(n2)))
-#define C_fixnum_greater_or_equal_p(n1, n2) (C_mk_bool((C_word)(n1) >= (C_word)(n2)))
-#define C_fixnum_less_or_equal_p(n1, n2)(C_mk_bool((C_word)(n1) <= (C_word)(n2)))
-#define C_u_fixnum_increase(n)          ((n) + (1 << C_FIXNUM_SHIFT))
-#define C_fixnum_increase(n)            (C_u_fixnum_increase(n) | C_FIXNUM_BIT)
-#define C_u_fixnum_decrease(n)          ((n) - (1 << C_FIXNUM_SHIFT))
-#define C_fixnum_decrease(n)            (C_u_fixnum_decrease(n) | C_FIXNUM_BIT)
-#define C_fixnum_abs(n)                 C_fix(abs(C_unfix(n)))
-
-#define C_flonum_equalp(n1, n2)         C_mk_bool(C_flonum_magnitude(n1) == C_flonum_magnitude(n2))
-#define C_flonum_greaterp(n1, n2)       C_mk_bool(C_flonum_magnitude(n1) > C_flonum_magnitude(n2))
-#define C_flonum_lessp(n1, n2)          C_mk_bool(C_flonum_magnitude(n1) < C_flonum_magnitude(n2))
-#define C_flonum_greater_or_equal_p(n1, n2) C_mk_bool(C_flonum_magnitude(n1) >= C_flonum_magnitude(n2))
-#define C_flonum_less_or_equal_p(n1, n2) C_mk_bool(C_flonum_magnitude(n1) <= C_flonum_magnitude(n2))
-
-#define C_a_i_flonum_plus(ptr, c, n1, n2) C_flonum(ptr, C_flonum_magnitude(n1) + C_flonum_magnitude(n2))
-#define C_a_i_flonum_difference(ptr, c, n1, n2) C_flonum(ptr, C_flonum_magnitude(n1) - C_flonum_magnitude(n2))
-#define C_a_i_flonum_times(ptr, c, n1, n2) C_flonum(ptr, C_flonum_magnitude(n1) * C_flonum_magnitude(n2))
-#define C_a_i_flonum_quotient(ptr, c, n1, n2) C_flonum(ptr, C_flonum_magnitude(n1) / C_flonum_magnitude(n2))
-#define C_a_i_flonum_negate(ptr, c, n)  C_flonum(ptr, -C_flonum_magnitude(n))
-
-#define C_a_i_address_to_pointer(ptr, c, addr)  C_mpointer(ptr, (void *)C_num_to_unsigned_int(addr))
-#define C_a_i_pointer_to_address(ptr, c, pptr)  C_unsigned_int_to_num(ptr, (unsigned int)C_c_pointer_nn(pptr))
-
-#define C_display_fixnum(p, n)          (C_fprintf(C_port_file(p), C_text("%d"), C_unfix(n)), C_SCHEME_UNDEFINED)
-#define C_display_char(p, c)            (C_fputc(C_character_code(c), C_port_file(p)), C_SCHEME_UNDEFINED)
-#define C_display_string(p, s)          (C_fwrite(((C_SCHEME_BLOCK *)(s))->data, sizeof(C_char), C_header_size(s), \
-                                         C_port_file(p)), C_SCHEME_UNDEFINED)
-#define C_flush_output(port)            (C_fflush(C_port_file(port)), C_SCHEME_UNDEFINED)
-
-#define C_fix_to_char(x)                (C_make_character(C_unfix(x)))
-#define C_char_to_fix(x)                (C_fix(C_character_code(x)))
-#define C_i_char_equalp(x, y)           C_mk_bool(C_character_code(x) == C_character_code(y))
-#define C_i_char_greaterp(x, y)         C_mk_bool(C_character_code(x) > C_character_code(y))
-#define C_i_char_lessp(x, y)            C_mk_bool(C_character_code(x) < C_character_code(y))
-#define C_i_char_greater_or_equal_p(x, y)  C_mk_bool(C_character_code(x) >= C_character_code(y))
-#define C_i_char_less_or_equal_p(x, y)  C_mk_bool(C_character_code(x) <= C_character_code(y))
-#define C_substring_copy(s1, s2, start1, end1, start2) \
-                                        (C_memcpy((C_char *)C_data_pointer(s2) + C_unfix(start2), \
-                                                  (C_char *)C_data_pointer(s1) + C_unfix(start1), \
-                                                  C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED)
-#define C_substring_compare(s1, s2, start1, start2, len) \
-                                        C_mk_bool(C_memcmp((C_char *)C_data_pointer(s1) + C_unfix(start1), \
-                                                           (C_char *)C_data_pointer(s2) + C_unfix(start2), \
-                                                           C_unfix(len) ) == 0)
-#define C_substring_compare_case_insensitive(s1, s2, start1, start2, len) \
-                                        C_mk_bool(C_memcasecmp((C_char *)C_data_pointer(s1) + C_unfix(start1), \
-                                                                (C_char *)C_data_pointer(s2) + C_unfix(start2), \
-                                                                C_unfix(len) ) == 0)
-/* this does not use C_mutate: */
-#define C_subvector_copy(v1, v2, start1, end1, start2) \
-                                        (C_memcpy_slots((C_char *)C_data_pointer(v2) + C_unfix(start2), \
-                                                  (C_char *)C_data_pointer(v1) + C_unfix(start1), \
-						  C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED)
-#define C_words(n)                      C_fix(C_bytestowords(C_unfix(n)))
-#define C_bytes(n)                      C_fix(C_wordstobytes(C_unfix(n)))
-#define C_random_fixnum(n)              C_fix((C_word)(((double)rand())/(RAND_MAX + 1.0) * C_unfix(n)))
-#define C_randomize(n)                  (srand(C_unfix(n)), C_SCHEME_UNDEFINED)
-#define C_block_size(x)                 C_fix(C_header_size(x))
-#define C_pointer_address(x)            ((C_byte *)C_block_item((x), 0))
-#define C_block_address(ptr, n, x)      C_a_unsigned_int_to_num(ptr, n, x)
-#define C_offset_pointer(x, y)          (C_pointer_address(x) + (y))
-#define C_kontinue(k, r)                ((C_proc2)(void *)C_u_i_car(k))(2, (k), (r))
-#define C_fetch_byte(x, p)              (((unsigned C_byte *)((C_SCHEME_BLOCK *)(x))->data)[ p ])
-#define C_poke_integer(x, i, n)         (C_set_block_item(x, C_unfix(i), C_num_to_int(n)), C_SCHEME_UNDEFINED)
-#define C_pointer_to_block(p, x)        (C_set_block_item(p, 0, (C_word)C_data_pointer(x)), C_SCHEME_UNDEFINED)
-#define C_null_pointerp(x)              C_mk_bool((void *)C_block_item(x, 0) == NULL)
-#define C_update_pointer(p, ptr)        (C_set_block_item(ptr, 0, C_num_to_unsigned_int(p)), C_SCHEME_UNDEFINED)
-#define C_copy_pointer(from, to)        (C_set_block_item(to, 0, C_block_item(from, 0)), C_SCHEME_UNDEFINED)
-#define C_pointer_to_object(ptr)        C_block_item(ptr, 0)
-
-#define C_direct_return(dk, x)          (C_kontinue(dk, x), C_SCHEME_UNDEFINED)
-
-#ifdef C_SIXTY_FOUR
-# define C_poke_integer_32(x, i, n)     (((C_s32 *)C_data_pointer(x))[ C_unfix(i) ] = C_unfix(n), C_SCHEME_UNDEFINED)
-#else
-# define C_poke_integer_32              C_poke_integer
-#endif
-
-#define C_copy_memory(to, from, n)      (C_memcpy(C_data_pointer(to), C_data_pointer(from), C_unfix(n)), C_SCHEME_UNDEFINED)
-#define C_copy_ptr_memory(to, from, n, toff, foff) \
-  (C_memcpy(C_pointer_address(to) + C_unfix(toff), C_pointer_address(from) + C_unfix(foff), \
-	    C_unfix(n)), C_SCHEME_UNDEFINED)
-#define C_set_memory(to, c, n)          (C_memset(C_data_pointer(to), C_character_code(c), C_unfix(n)), C_SCHEME_UNDEFINED)
-#define C_string_compare(to, from, n)   C_fix(C_memcmp(C_c_string(to), C_c_string(from), C_unfix(n)))
-#define C_string_compare_case_insensitive(from, to, n) \
-                                        C_fix(C_memcasecmp(C_c_string(from), C_c_string(to), C_unfix(n)))
-#define C_rename_file(old, new)         C_fix(rename(C_c_string(old), C_c_string(new)))
-#define C_delete_file(fname)            C_fix(remove(C_c_string(fname)))
-#define C_poke_double(b, i, n)          (((double *)C_data_pointer(b))[ C_unfix(i) ] = C_c_double(n), C_SCHEME_UNDEFINED)
-#define C_poke_c_string(b, i, from)     (C_strcpy((char *)C_block_item(b, C_unfix(i)), C_data_pointer(from)), C_SCHEME_UNDEFINED)
-#define C_peek_fixnum(b, i)             C_fix(C_block_item(b, C_unfix(i)))
-#define C_peek_byte(ptr, i)             C_fix(((unsigned char *)C_u_i_car(ptr))[ C_unfix(i) ])
-#define C_dupstr(s)                     C_strdup(C_data_pointer(s))
-#define C_poke_pointer(b, i, x)         (C_set_block_item(b, C_unfix(i), (C_word)C_data_pointer(x)), C_SCHEME_UNDEFINED)
-#define C_poke_pointer_or_null(b, i, x) (C_set_block_item(b, C_unfix(i), (C_word)C_data_pointer_or_null(x)), C_SCHEME_UNDEFINED)
-#define C_qfree(ptr)                    (C_free(C_c_pointer_nn(ptr)), C_SCHEME_UNDEFINED)
-
-#define C_tty_portp(p)                  C_mk_bool(isatty(fileno(C_port_file(p))))
-
-#define C_emit_eval_trace_info(x, y, z) C_emit_trace_info2("<eval>", x, y, z)
-#define C_emit_syntax_trace_info(x, y, z) C_emit_trace_info2("<syntax>", x, y, z)
-
-/* These expect C_VECTOR_TYPE to be 0: */
-#define C_vector_to_structure(v)        (((C_SCHEME_BLOCK *)(v))->header |= C_STRUCTURE_TYPE, C_SCHEME_UNDEFINED)
-#define C_vector_to_closure(v)          (((C_SCHEME_BLOCK *)(v))->header |= C_CLOSURE_TYPE, C_SCHEME_UNDEFINED)
-#define C_string_to_bytevector(s)       (((C_SCHEME_BLOCK *)(s))->header = C_header_size(s) | C_BYTEVECTOR_TYPE, C_SCHEME_UNDEFINED)
-#define C_string_to_lambdainfo(s)       (((C_SCHEME_BLOCK *)(s))->header = C_header_size(s) | C_LAMBDA_INFO_TYPE, C_SCHEME_UNDEFINED)
-
-#ifdef C_TIMER_INTERRUPTS
-# ifdef PARANOIA
-#  define C_check_for_interrupt         C_paranoid_check_for_interrupt()
-# else
-#  define C_check_for_interrupt         if(--C_timer_interrupt_counter <= 0) C_raise_interrupt(C_TIMER_INTERRUPT_NUMBER)
-# endif
-#else
-# define C_check_for_interrupt
-#endif
-
-#define C_set_initial_timer_interrupt_period(n) \
-  (C_initial_timer_interrupt_period = C_unfix(n), C_SCHEME_UNDEFINED)
-
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-# define C_a_i(a, n)                    ({C_word *tmp = *a; *a += (n); tmp;})
-# define C_a_i_cons(a, n, car, cdr)     ({C_word tmp = (C_word)(*a); (*a)[0] = C_PAIR_TYPE | 2; *a += 3; \
-                                          C_set_block_item(tmp, 0, car); C_set_block_item(tmp, 1, cdr); tmp;})
-#else
-# define C_a_i_cons(a, n, car, cdr)     C_a_pair(a, car, cdr)
-#endif /* __GNUC__ */
-
-#define C_a_i_flonum(ptr, i, n)         C_flonum(ptr, n)
-#define C_a_i_data_mpointer(ptr, n, x)  C_mpointer(ptr, C_data_pointer(x))
-#define C_a_i_fix_to_flo(p, n, f)       C_flonum(p, C_unfix(f))
-#define C_cast_to_flonum(n)             ((double)(n))
-#define C_a_i_mpointer(ptr, n, x)       C_mpointer(ptr, (x))
-#define C_a_u_i_pointer_inc(ptr, n, p, i) C_mpointer(ptr, (C_char *)(p) + C_unfix(i))
-#define C_pointer_eqp(x, y)             C_mk_bool(C_c_pointer_nn(x) == C_c_pointer_nn(y))
-#define C_a_int_to_num(ptr, n, i)       C_int_to_num(ptr, i)
-#define C_a_unsigned_int_to_num(ptr, n, i)  C_unsigned_int_to_num(ptr, i)
-#define C_a_double_to_num(ptr, n)       C_double_to_number(C_flonum(ptr, n))
-#define C_a_i_vector                    C_vector
-#define C_list                          C_a_i_list
-#define C_i_setslot(x, i, y)            (C_mutate(&C_block_item(x, C_unfix(i)), y), C_SCHEME_UNDEFINED)
-#define C_i_set_i_slot(x, i, y)         (C_set_block_item(x, C_unfix(i), y), C_SCHEME_UNDEFINED)
-#define C_u_i_set_car(p, x)             (C_mutate(&C_u_i_car(p), x), C_SCHEME_UNDEFINED)
-#define C_u_i_set_cdr(p, x)             (C_mutate(&C_u_i_cdr(p), x), C_SCHEME_UNDEFINED)
-#define C_a_i_putprop(p, c, x, y, z)    C_putprop(p, x, y, z)
-
-#define C_i_not(x)                      (C_truep(x) ? C_SCHEME_FALSE : C_SCHEME_TRUE)
-#define C_i_equalp(x, y)                C_mk_bool(C_equalp((x), (y)))
-#define C_i_fixnumevenp(x)              C_mk_nbool((x) & 0x00000002)
-#define C_i_fixnumoddp(x)               C_mk_bool((x) & 0x00000002)
-#define C_i_nullp(x)                    C_mk_bool((x) == C_SCHEME_END_OF_LIST)
-#define C_i_structurep(x, s)            C_mk_bool(!C_immediatep(x) && C_header_bits(x) == C_STRUCTURE_TYPE && C_block_item(x, 0) == (s))
-
-#define C_u_i_char_alphabeticp(x)       C_mk_bool(C_character_code(x) < 0x100 && C_isalpha(C_character_code(x)))
-#define C_u_i_char_numericp(x)          C_mk_bool(C_character_code(x) < 0x100 && C_isdigit(C_character_code(x)))
-#define C_u_i_char_whitespacep(x)       C_mk_bool(C_character_code(x) < 0x100 && C_isspace(C_character_code(x)))
-#define C_u_i_char_upper_casep(x)       C_mk_bool(C_character_code(x) < 0x100 && C_isupper(C_character_code(x)))
-#define C_u_i_char_lower_casep(x)       C_mk_bool(C_character_code(x) < 0x100 && C_islower(C_character_code(x)))
-
-#define C_u_i_char_upcase(x)            (C_character_code(x) < 0x100 ? C_make_character(C_toupper(C_character_code(x))) : (x))
-#define C_u_i_char_downcase(x)          (C_character_code(x) < 0x100 ? C_make_character(C_tolower(C_character_code(x))) : (x))
-
-#define C_i_list_ref(lst, i)            C_i_car(C_i_list_tail(lst, i))
-#define C_u_i_list_ref(lst, i)          C_u_i_car(C_i_list_tail(lst, i))
-
-#define C_u_i_car(x)                    C_block_item(x, 0)
-#define C_u_i_cdr(x)                    C_block_item(x, 1)
-#define C_u_i_caar(x)                   C_u_i_car( C_u_i_car( x ) )
-#define C_u_i_cadr(x)                   C_u_i_car( C_u_i_cdr( x ) )
-#define C_u_i_cdar(x)                   C_u_i_cdr( C_u_i_car( x ) )
-#define C_u_i_cddr(x)                   C_u_i_cdr( C_u_i_cdr( x ) )
-#define C_u_i_caaar(x)                  C_u_i_car( C_u_i_caar( x ) )
-#define C_u_i_caadr(x)                  C_u_i_car( C_u_i_cadr( x ) )
-#define C_u_i_cadar(x)                  C_u_i_car( C_u_i_cdar( x ) )
-#define C_u_i_caddr(x)                  C_u_i_car( C_u_i_cddr( x ) )
-#define C_u_i_cdaar(x)                  C_u_i_cdr( C_u_i_caar( x ) )
-#define C_u_i_cdadr(x)                  C_u_i_cdr( C_u_i_cadr( x ) )
-#define C_u_i_cddar(x)                  C_u_i_cdr( C_u_i_cdar( x ) )
-#define C_u_i_cdddr(x)                  C_u_i_cdr( C_u_i_cddr( x ) )
-#define C_u_i_caaaar(x)                 C_u_i_car( C_u_i_caaar( x ) )
-#define C_u_i_caaadr(x)                 C_u_i_car( C_u_i_caadr( x ) )
-#define C_u_i_caadar(x)                 C_u_i_car( C_u_i_cadar( x ) )
-#define C_u_i_caaddr(x)                 C_u_i_car( C_u_i_caddr( x ) )
-#define C_u_i_cadaar(x)                 C_u_i_car( C_u_i_cdaar( x ) )
-#define C_u_i_cadadr(x)                 C_u_i_car( C_u_i_cdadr( x ) )
-#define C_u_i_caddar(x)                 C_u_i_car( C_u_i_cddar( x ) )
-#define C_u_i_cadddr(x)                 C_u_i_car( C_u_i_cdddr( x ) )
-#define C_u_i_cdaaar(x)                 C_u_i_cdr( C_u_i_caaar( x ) )
-#define C_u_i_cdaadr(x)                 C_u_i_cdr( C_u_i_caadr( x ) )
-#define C_u_i_cdadar(x)                 C_u_i_cdr( C_u_i_cadar( x ) )
-#define C_u_i_cdaddr(x)                 C_u_i_cdr( C_u_i_caddr( x ) )
-#define C_u_i_cddaar(x)                 C_u_i_cdr( C_u_i_cdaar( x ) )
-#define C_u_i_cddadr(x)                 C_u_i_cdr( C_u_i_cdadr( x ) )
-#define C_u_i_cdddar(x)                 C_u_i_cdr( C_u_i_cddar( x ) )
-#define C_u_i_cddddr(x)                 C_u_i_cdr( C_u_i_cdddr( x ) )
-
-#define C_a_i_times( ptr, n, x, y)      C_2_times( ptr, x, y)
-#define C_a_i_plus(  ptr, n, x, y)      C_2_plus(  ptr, x, y)
-#define C_a_i_minus( ptr, n, x, y)      C_2_minus( ptr, x, y)
-#define C_a_i_divide(ptr, n, x, y)      C_2_divide(ptr, x, y)
-
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-# define C_i_not_pair_p(x)              ({C_word tmp = (x); C_mk_bool(C_immediatep(tmp) || C_block_header(tmp) != C_PAIR_TAG);})
-#else
-# define C_i_not_pair_p                 C_i_not_pair_p_2
-#endif
-
-#define C_i_check_closure(x)            C_i_check_closure_2(x, C_SCHEME_FALSE)
-#define C_i_check_exact(x)              C_i_check_exact_2(x, C_SCHEME_FALSE)
-#define C_i_check_inexact(x)            C_i_check_inexact_2(x, C_SCHEME_FALSE)
-#define C_i_check_number(x)             C_i_check_number_2(x, C_SCHEME_FALSE)
-#define C_i_check_string(x)             C_i_check_string_2(x, C_SCHEME_FALSE)
-#define C_i_check_bytevector(x)         C_i_check_bytevector_2(x, C_SCHEME_FALSE)
-#define C_i_check_symbol(x)             C_i_check_symbol_2(x, C_SCHEME_FALSE)
-#define C_i_check_list(x)               C_i_check_list_2(x, C_SCHEME_FALSE)
-#define C_i_check_pair(x)               C_i_check_pair_2(x, C_SCHEME_FALSE)
-#define C_i_check_locative(x)           C_i_check_locative_2(x, C_SCHEME_FALSE)
-#define C_i_check_boolean(x)            C_i_check_boolean_2(x, C_SCHEME_FALSE)
-#define C_i_check_vector(x)             C_i_check_vector_2(x, C_SCHEME_FALSE)
-#define C_i_check_structure(x, st)      C_i_check_structure_2(x, (st), C_SCHEME_FALSE)
-#define C_i_check_char(x)               C_i_check_char_2(x, C_SCHEME_FALSE)
-#define C_i_check_port(x, in, op)       C_i_check_port_2(x, in, op, C_SCHEME_FALSE)
-
-#define C_u_i_8vector_length(x)         C_fix(C_header_size(C_block_item(x, 1)))
-#define C_u_i_16vector_length(x)        C_fix(C_header_size(C_block_item(x, 1)) >> 1)
-#define C_u_i_32vector_length(x)        C_fix(C_header_size(C_block_item(x, 1)) >> 2)
-#define C_u_i_64vector_length(x)        C_fix(C_header_size(C_block_item(x, 1)) >> 3)
-#define C_u_i_u8vector_length           C_u_i_8vector_length
-#define C_u_i_s8vector_length           C_u_i_8vector_length
-#define C_u_i_u16vector_length          C_u_i_16vector_length
-#define C_u_i_s16vector_length          C_u_i_16vector_length
-#define C_u_i_u32vector_length          C_u_i_32vector_length
-#define C_u_i_s32vector_length          C_u_i_32vector_length
-#define C_u_i_f32vector_length          C_u_i_32vector_length
-#define C_u_i_f64vector_length          C_u_i_64vector_length
-
-#define C_u_i_u8vector_ref(x, i)        C_fix(((unsigned char *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-#define C_u_i_s8vector_ref(x, i)        C_fix(((signed char *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-#define C_u_i_u16vector_ref(x, i)       C_fix(((unsigned short *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-#define C_u_i_s16vector_ref(x, i)       C_fix(((short *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-
-/* these assume fixnum mode */
-#define C_u_i_u32vector_ref(x, i)       C_fix(((C_u32 *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-#define C_u_i_s32vector_ref(x, i)       C_fix(((C_u32 *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-
-/* DEPRECATED */
-#define C_a_i_u32vector_ref             C_a_u_i_u32vector_ref
-#define C_a_i_s32vector_ref             C_a_u_i_s32vector_ref
-
-#define C_a_u_i_u32vector_ref(ptr, c, x, i)  C_unsigned_int_to_num(ptr, ((C_u32 *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-#define C_a_u_i_s32vector_ref(ptr, c, x, i)  C_int_to_num(ptr, ((C_s32 *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ])
-
-#define C_u_i_u8vector_set(x, i, v)     ((((unsigned char *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ] = C_unfix(v)), C_SCHEME_UNDEFINED)
-#define C_u_i_s8vector_set(x, i, v)     ((((signed char *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ] = C_unfix(v)), C_SCHEME_UNDEFINED)
-#define C_u_i_u16vector_set(x, i, v)    ((((unsigned short *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ] = C_unfix(v)), C_SCHEME_UNDEFINED)
-#define C_u_i_s16vector_set(x, i, v)    ((((short *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ] = C_unfix(v)), C_SCHEME_UNDEFINED)
-#define C_u_i_u32vector_set(x, i, v)    ((((C_u32 *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ] = C_num_to_unsigned_int(v)), C_SCHEME_UNDEFINED)
-#define C_u_i_s32vector_set(x, i, v)    ((((C_s32 *)C_data_pointer(C_block_item((x), 1)))[ C_unfix(i) ] = C_num_to_int(v)), C_SCHEME_UNDEFINED)
-
-#define C_u_i_bit_setp(x, i)            C_mk_bool((C_unfix(x) & (1 << C_unfix(i))) != 0)
-
-#define C_u_i_pointer_u8_ref(ptr)         C_fix(*((unsigned char *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_s8_ref(ptr)         C_fix(*((signed char *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_u16_ref(ptr)        C_fix(*((unsigned short *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_s16_ref(ptr)        C_fix(*((short *)C_block_item(ptr, 0)))
-#define C_a_u_i_pointer_u32_ref(ap, n, ptr)  \
-  C_unsigned_int_to_num(ap, *((C_u32 *)C_block_item(ptr, 0)))
-#define C_a_u_i_pointer_s32_ref(ap, n, ptr)  \
-  C_int_to_num(ap, *((C_s32 *)C_block_item(ptr, 0)))
-#define C_a_u_i_pointer_f32_ref(ap, n, ptr)  C_flonum(ap, *((float *)C_block_item(ptr, 0)))
-#define C_a_u_i_pointer_f64_ref(ap, n, ptr)  C_flonum(ap, *((double *)C_block_item(ptr, 0)))
-#define C_u_i_pointer_u8_set(ptr, x)  \
-  (*((unsigned char *)C_block_item(ptr, 0)) = C_unfix(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_s8_set(ptr, x)  \
-  (*((signed char *)C_block_item(ptr, 0)) = C_unfix(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_u16_set(ptr, x)  \
-  (*((unsigned short *)C_block_item(ptr, 0)) = C_unfix(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_s16_set(ptr, x)  \
-  (*((short *)C_block_item(ptr, 0)) = C_unfix(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_u32_set(ptr, x)  \
-  (*((C_u32 *)C_block_item(ptr, 0)) = C_num_to_unsigned_int(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_s32_set(ptr, x)  \
-  (*((C_s32 *)C_block_item(ptr, 0)) = C_num_to_int(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_f32_set(ptr, x)  \
-  (*((float *)C_block_item(ptr, 0)) = C_flonum_magnitude(x), C_SCHEME_UNDEFINED)
-#define C_u_i_pointer_f64_set(ptr, x)  \
-  (*((double *)C_block_item(ptr, 0)) = C_flonum_magnitude(x), C_SCHEME_UNDEFINED)
-
-#ifdef C_BIG_ENDIAN
-# ifdef C_SIXTY_FOUR
-#  define C_lihdr(x, y, z)              ((C_LAMBDA_INFO_TYPE >> 56) & 0xff), \
-                                        0, 0, 0, 0, (x), (y), (z)
-# else
-#  define C_lihdr(x, y, z)              ((C_LAMBDA_INFO_TYPE >> 24) & 0xff), \
-                                        (x), (y), (z)
-# endif
-#else
-# ifdef C_SIXTY_FOUR
-#  define C_lihdr(x, y, z)              (z), (y), (x), 0, 0, 0, 0, \
-                                        ((C_LAMBDA_INFO_TYPE >> 56) & 0xff)
-# else
-#  define C_lihdr(x, y, z)              (z), (y), (x), \
-                                        ((C_LAMBDA_INFO_TYPE >> 24) & 0xff)
-# endif
-#endif
-
-#define C_ub_i_flonum_plus(x, y)        ((x) + (y))
-#define C_ub_i_flonum_difference(x, y)  ((x) - (y))
-#define C_ub_i_flonum_times(x, y)       ((x) * (y))
-#define C_ub_i_flonum_quotient(x, y)    ((x) / (y))
-
-#define C_ub_i_flonum_equalp(n1, n2)    ((n1) == (n2))
-#define C_ub_i_flonum_greaterp(n1, n2)  ((n1) > (n2))
-#define C_ub_i_flonum_lessp(n1, n2)     ((n1) < (n2))
-#define C_ub_i_flonum_greater_or_equal_p(n1, n2)  ((n1) >= (n2))
-#define C_ub_i_flonum_less_or_equal_p(n1, n2)  ((n1) <= (n2))
-
-#define C_ub_i_pointer_inc(p, n)        ((void *)((unsigned char *)(p) + (n)))
-#define C_ub_i_pointer_eqp(p1, p2)      ((p1) == (p2))
-#define C_ub_i_null_pointerp(p)         ((p) == NULL)
-
-#define C_ub_i_pointer_u8_ref(p)        (*((unsigned char *)(p)))
-#define C_ub_i_pointer_s8_ref(p)        (*((char *)(p)))
-#define C_ub_i_pointer_u16_ref(p)       (*((unsigned short *)(p)))
-#define C_ub_i_pointer_s16_ref(p)       (*((short *)(p)))
-#define C_ub_i_pointer_u32_ref(p)       (*((C_u32 *)(p)))
-#define C_ub_i_pointer_s32_ref(p)       (*((C_s32 *)(p)))
-#define C_ub_i_pointer_f32_ref(p)       (*((float *)(p)))
-#define C_ub_i_pointer_f64_ref(p)       (*((double *)(p)))
-#define C_ub_i_pointer_u8_set(p, n)     (*((unsigned char *)(p)) = (n))
-#define C_ub_i_pointer_s8_set(p, n)     (*((char *)(p)) = (n))
-#define C_ub_i_pointer_u16_set(p, n)    (*((unsigned short *)(p)) = (n))
-#define C_ub_i_pointer_s16_set(p, n)    (*((short *)(p)) = (n))
-#define C_ub_i_pointer_u32_set(p, n)    (*((C_u32 *)(p)) = (n))
-#define C_ub_i_pointer_s32_set(p, n)    (*((C_s32 *)(p)) = (n))
-#define C_ub_i_pointer_f32_set(p, n)    (*((float *)(p)) = (n))
-#define C_ub_i_pointer_f64_set(p, n)    (*((double *)(p)) = (n))
-
-#ifdef C_PRIVATE_REPOSITORY
-# define C_private_repository(fname)     C_use_private_repository(C_path_to_executable(fname))
-#else
-# define C_private_repository(fname)
-#endif
-
-/* left for backwards-compatibility */
-#define C_gui_nongui_marker
-
-#ifdef C_GUI
-# define C_set_gui_mode                 C_gui_mode = 1
-#else
-# define C_set_gui_mode
-#endif
-
-#if !defined(C_EMBEDDED) && !defined(C_SHARED)
-# if (defined(C_WINDOWS_GUI) || defined(C_GUI)) && defined(_WIN32)
-#  define C_main_entry_point            \
-  int WINAPI WinMain(HINSTANCE me, HINSTANCE you, LPSTR cmdline, int show) \
-  { \
-    C_gui_mode = 1; \
-    C_private_repository(NULL);		      \
-    return CHICKEN_main(0, NULL, (void *)C_toplevel); \
-  }
-# else
-#  define C_main_entry_point            \
-  int main(int argc, char *argv[]) \
-  { \
-    C_set_gui_mode; \
-    C_private_repository(argv[ 0 ]);			\
-    return CHICKEN_main(argc, argv, (void*)C_toplevel); \
-  }
-# endif
-#else
-# define C_main_entry_point
-#endif
-
-#define C_alloc_flonum                  C_word *___tmpflonum = C_alloc(WORDS_PER_FLONUM)
-#define C_kontinue_flonum(k, n)         C_kontinue((k), C_flonum(&___tmpflonum, (n)))
-
-#define C_a_i_flonum_truncate(ptr, n, x)  C_flonum(ptr, C_trunc(C_flonum_magnitude(x)))
-#define C_a_i_flonum_ceiling(ptr, n, x)  C_flonum(ptr, C_ceil(C_flonum_magnitude(x)))
-#define C_a_i_flonum_floor(ptr, n, x)   C_flonum(ptr, C_floor(C_flonum_magnitude(x)))
-#define C_a_i_flonum_round(ptr, n, x)   C_flonum(ptr, C_round(C_flonum_magnitude(x)))
-
-/* DEPRECATED */
-#define C_a_i_f32vector_ref             C_a_u_i_f32vector_ref
-#define C_a_i_f64vector_ref             C_a_u_i_f64vector_ref
-
-#define C_a_u_i_f32vector_ref(ptr, n, b, i)  C_flonum(ptr, ((float *)C_data_pointer(C_block_item((b), 1)))[ C_unfix(i) ])
-#define C_a_u_i_f64vector_ref(ptr, n, b, i)  C_flonum(ptr, ((double *)C_data_pointer(C_block_item((b), 1)))[ C_unfix(i) ])
-#define C_u_i_f32vector_set(v, i, x)    ((((float *)C_data_pointer(C_block_item((v), 1)))[ C_unfix(i) ] = C_flonum_magnitude(x)), C_SCHEME_UNDEFINED)
-#define C_u_i_f64vector_set(v, i, x)    ((((double *)C_data_pointer(C_block_item((v), 1)))[ C_unfix(i) ] = C_flonum_magnitude(x)), C_SCHEME_UNDEFINED)
-
-#define C_ub_i_f32vector_ref(b, i)      (((float *)C_data_pointer(C_block_item((b), 1)))[ i ])
-#define C_ub_i_f64vector_ref(b, i)      (((double *)C_data_pointer(C_block_item((b), 1)))[ i ])
-#define C_ub_i_f32vector_set(v, i, x)   ((((float *)C_data_pointer(C_block_item((v), 1)))[ i ] = (x)), 0)
-#define C_ub_i_f64vector_set(v, i, x)   ((((double *)C_data_pointer(C_block_item((v), 1)))[ i ] = (x)), 0)
-
-#define C_a_i_flonum_sin(ptr, c, x)     C_flonum(ptr, C_sin(C_flonum_magnitude(x)))
-#define C_a_i_flonum_cos(ptr, c, x)     C_flonum(ptr, C_cos(C_flonum_magnitude(x)))
-#define C_a_i_flonum_tan(ptr, c, x)     C_flonum(ptr, C_tan(C_flonum_magnitude(x)))
-#define C_a_i_flonum_asin(ptr, c, x)    C_flonum(ptr, C_asin(C_flonum_magnitude(x)))
-#define C_a_i_flonum_acos(ptr, c, x)    C_flonum(ptr, C_acos(C_flonum_magnitude(x)))
-#define C_a_i_flonum_atan(ptr, c, x)    C_flonum(ptr, C_atan(C_flonum_magnitude(x)))
-#define C_a_i_flonum_atan2(ptr, c, x, y)  C_flonum(ptr, C_atan2(C_flonum_magnitude(x), C_flonum_magnitude(y)))
-#define C_a_i_flonum_exp(ptr, c, x)     C_flonum(ptr, C_exp(C_flonum_magnitude(x)))
-#define C_a_i_flonum_expt(ptr, c, x, y)  C_flonum(ptr, C_pow(C_flonum_magnitude(x), C_flonum_magnitude(y)))
-#define C_a_i_flonum_log(ptr, c, x)     C_flonum(ptr, C_log(C_flonum_magnitude(x)))
-#define C_a_i_flonum_sqrt(ptr, c, x)    C_flonum(ptr, C_sqrt(C_flonum_magnitude(x)))
-#define C_a_i_flonum_abs(ptr, c, x)     C_flonum(ptr, C_fabs(C_flonum_magnitude(x)))
-
-#define C_a_i_current_milliseconds(ptr, c, dummy) C_flonum(ptr, C_milliseconds())
-
-
-/* Variables: */
-
-C_varextern C_TLS time_t C_startup_time_seconds;
-C_varextern C_TLS C_word
-  *C_temporary_stack,
-  *C_temporary_stack_bottom,
-  *C_stack_limit;
-C_varextern C_TLS long
-  C_timer_interrupt_counter,
-  C_initial_timer_interrupt_period;
-C_varextern C_TLS C_byte
-  *C_fromspace_top,
-  *C_fromspace_limit;
-C_varextern C_TLS jmp_buf C_restart;
-C_varextern C_TLS void *C_restart_address;
-C_varextern C_TLS int C_entry_point_status;
-C_varextern C_TLS int C_gui_mode;
-
-C_varextern C_TLS void (C_fcall *C_restart_trampoline)(void *proc) C_regparm C_noret;
-C_varextern C_TLS void (*C_pre_gc_hook)(int mode);
-C_varextern C_TLS void (*C_post_gc_hook)(int mode, long ms);
-C_varextern C_TLS void (*C_panic_hook)(C_char *msg);
-
-C_varextern C_TLS int
-  C_abort_on_thread_exceptions,
-  C_interrupts_enabled,
-  C_disable_overflow_check,
-  C_enable_gcweak,
-  C_heap_size_is_fixed,
-  C_max_pending_finalizers,
-  C_trace_buffer_size,
-  C_main_argc;
-C_varextern C_TLS C_uword
-  C_heap_growth,
-  C_heap_shrinkage;
-C_varextern C_TLS char
-  **C_main_argv,
-  *C_dlerror;
-C_varextern C_TLS C_uword C_maximal_heap_size;
-C_varextern C_TLS int (*C_gc_mutation_hook)(C_word *slot, C_word val);