Hi Arnold
no I haven't tried to interface with tinyscheme yet, a little busy at the moment, however here's the output from fbfrog
scheme-private.bi
#pragma once
#include once "crt/long.bi"
#include once "crt/stdio.bi"
extern "C"
#define _SCHEME_PRIVATE_H
#define _SCHEME_H
const STANDALONE = 1
const USE_STRCASECMP = 1
const USE_STRLWR = 1
#define SCHEME_EXPORT
#define USE_SCHEME_STACK
const USE_MATH = 1
const USE_CHAR_CLASSIFIERS = 1
const USE_ASCII_NAMES = 1
const USE_STRING_PORTS = 1
const USE_TRACING = 1
const USE_PLIST = 0
const USE_ERROR_HOOK = 1
const USE_COLON_HOOK = 1
const STDIO_ADDS_CR = 0
#define INLINE
const USE_INTERFACE = 0
const SHOW_ERROR_LINE = 1
type cell as cell_
type pointer as cell ptr
type func_alloc as function(byval as uinteger) as any ptr
type func_dealloc as sub(byval as any ptr)
union num_value
	ivalue as clong
	rvalue as double
end union
type num
	is_fixnum as byte
	value as num_value
end type
type scheme as scheme_
declare function scheme_init_new() as scheme ptr
declare function scheme_init_new_custom_alloc(byval malloc as func_alloc, byval free as func_dealloc) as scheme ptr
declare function scheme_init(byval sc as scheme ptr) as long
declare function scheme_init_custom_alloc(byval sc as scheme ptr, byval as func_alloc, byval as func_dealloc) as long
declare sub scheme_deinit(byval sc as scheme ptr)
declare sub scheme_set_input_port_file(byval sc as scheme ptr, byval fin as FILE ptr)
declare sub scheme_set_input_port_string(byval sc as scheme ptr, byval start as zstring ptr, byval past_the_end as zstring ptr)
declare sub scheme_set_output_port_file(byval sc as scheme ptr, byval fin as FILE ptr)
declare sub scheme_set_output_port_string(byval sc as scheme ptr, byval start as zstring ptr, byval past_the_end as zstring ptr)
declare sub scheme_load_file(byval sc as scheme ptr, byval fin as FILE ptr)
declare sub scheme_load_named_file(byval sc as scheme ptr, byval fin as FILE ptr, byval filename as const zstring ptr)
declare sub scheme_load_string(byval sc as scheme ptr, byval cmd as const zstring ptr)
declare function scheme_apply0(byval sc as scheme ptr, byval procname as const zstring ptr) as pointer
declare function scheme_call(byval sc as scheme ptr, byval func as pointer, byval args as pointer) as pointer
declare function scheme_eval(byval sc as scheme ptr, byval obj as pointer) as pointer
declare sub scheme_set_external_data(byval sc as scheme ptr, byval p as any ptr)
declare sub scheme_define(byval sc as scheme ptr, byval env as pointer, byval symbol as pointer, byval value as pointer)
type foreign_func as function(byval as scheme ptr, byval as pointer) as pointer
declare function _cons(byval sc as scheme ptr, byval a as pointer, byval b as pointer, byval immutable as long) as pointer
declare function mk_integer(byval sc as scheme ptr, byval num as clong) as pointer
declare function mk_real(byval sc as scheme ptr, byval num as double) as pointer
declare function mk_symbol(byval sc as scheme ptr, byval name as const zstring ptr) as pointer
declare function gensym(byval sc as scheme ptr) as pointer
declare function mk_string(byval sc as scheme ptr, byval str as const zstring ptr) as pointer
declare function mk_counted_string(byval sc as scheme ptr, byval str as const zstring ptr, byval len as long) as pointer
declare function mk_empty_string(byval sc as scheme ptr, byval len as long, byval fill as byte) as pointer
declare function mk_character(byval sc as scheme ptr, byval c as long) as pointer
declare function mk_foreign_func(byval sc as scheme ptr, byval f as foreign_func) as pointer
declare sub putstr(byval sc as scheme ptr, byval s as const zstring ptr)
declare function list_length(byval sc as scheme ptr, byval a as pointer) as long
declare function eqv(byval a as pointer, byval b as pointer) as long
type scheme_port_kind as long
enum
	port_free = 0
	port_file = 1
	port_string = 2
	port_srfi6 = 4
	port_input = 16
	port_output = 32
	port_saw_EOF = 64
end enum
type port_rep_stdio
	file as FILE ptr
	closeit as long
	curr_line as long
	filename as zstring ptr
end type
type port_rep_string
	start as zstring ptr
	past_the_end as zstring ptr
	curr as zstring ptr
end type
union port_rep
	stdio as port_rep_stdio
	string as port_rep_string
end union
type port
	kind as ubyte
	rep as port_rep
end type
type cell__object__string
	_svalue as zstring ptr
	_length as long
end type
type cell__object__cons
	_car as cell ptr
	_cdr as cell ptr
end type
union cell__object
	_string as cell__object__string
	_number as num
	_port as port ptr
	_ff as foreign_func
	_cons as cell__object__cons
end union
type cell_
	_flag as ulong
	_object as cell__object
end type
type scheme_
	malloc as func_alloc
	free as func_dealloc
	retcode as long
	tracing as long
	alloc_seg(0 to 9) as zstring ptr
	cell_seg(0 to 9) as pointer
	last_cell_seg as long
	args as pointer
	envir as pointer
	code as pointer
	dump as pointer
	interactive_repl as long
	_sink as cell
	sink as pointer
	_NIL as cell
	NIL as pointer
	_HASHT as cell
	T as pointer
	_HASHF as cell
	F as pointer
	_EOF_OBJ as cell
	EOF_OBJ as pointer
	oblist as pointer
	global_env as pointer
	c_nest as pointer
	LAMBDA as pointer
	QUOTE as pointer
	QQUOTE as pointer
	UNQUOTE as pointer
	UNQUOTESP as pointer
	FEED_TO as pointer
	COLON_HOOK as pointer
	ERROR_HOOK as pointer
	SHARP_HOOK as pointer
	COMPILE_HOOK as pointer
	free_cell as pointer
	fcells as clong
	inport as pointer
	outport as pointer
	save_inport as pointer
	loadport as pointer
	load_stack(0 to 63) as port
	nesting_stack(0 to 63) as long
	file_i as long
	nesting as long
	gc_verbose as byte
	no_memory as byte
	linebuff as zstring * 1024
	strbuff as zstring * 256
	tmpfp as FILE ptr
	tok as long
	print_flag as long
	value as pointer
	op as long
	ext_data as any ptr
	gensym_cnt as clong
	vptr as scheme_interface ptr
	dump_base as any ptr
	dump_size as long
end type
const CELL_SEGSIZE = 5000
const CELL_NSEGMENT = 10
const MAXFIL = 64
const LINESIZE = 1024
const STRBUFFSIZE = 256
type scheme_opcodes as long
enum
	OP_LOAD
	OP_T0LVL
	OP_T1LVL
	OP_READ_INTERNAL
	OP_GENSYM
	OP_VALUEPRINT
	OP_EVAL
	OP_REAL_EVAL
	OP_E0ARGS
	OP_E1ARGS
	OP_APPLY
	OP_REAL_APPLY
	OP_TRACING
	OP_DOMACRO
	OP_LAMBDA
	OP_LAMBDA1
	OP_MKCLOSURE
	OP_QUOTE
	OP_DEF0
	OP_DEF1
	OP_DEFP
	OP_BEGIN
	OP_IF0
	OP_IF1
	OP_SET0
	OP_SET1
	OP_LET0
	OP_LET1
	OP_LET2
	OP_LET0AST
	OP_LET1AST
	OP_LET2AST
	OP_LET0REC
	OP_LET1REC
	OP_LET2REC
	OP_COND0
	OP_COND1
	OP_DELAY
	OP_AND0
	OP_AND1
	OP_OR0
	OP_OR1
	OP_C0STREAM
	OP_C1STREAM
	OP_MACRO0
	OP_MACRO1
	OP_CASE0
	OP_CASE1
	OP_CASE2
	OP_PEVAL
	OP_PAPPLY
	OP_CONTINUATION
	OP_INEX2EX
	OP_EXP
	OP_LOG
	OP_SIN
	OP_COS
	OP_TAN
	OP_ASIN
	OP_ACOS
	OP_ATAN
	OP_SQRT
	OP_EXPT
	OP_FLOOR
	OP_CEILING
	OP_TRUNCATE
	OP_ROUND
	OP_ADD
	OP_SUB
	OP_MUL
	OP_DIV
	OP_INTDIV
	OP_REM
	OP_MOD
	OP_CAR
	OP_CDR
	OP_CONS
	OP_SETCAR
	OP_SETCDR
	OP_CHAR2INT
	OP_INT2CHAR
	OP_CHARUPCASE
	OP_CHARDNCASE
	OP_SYM2STR
	OP_ATOM2STR
	OP_STR2SYM
	OP_STR2ATOM
	OP_MKSTRING
	OP_STRLEN
	OP_STRREF
	OP_STRSET
	OP_STRAPPEND
	OP_SUBSTR
	OP_VECTOR
	OP_MKVECTOR
	OP_VECLEN
	OP_VECREF
	OP_VECSET
	OP_NOT
	OP_BOOLP
	OP_EOFOBJP
	OP_NULLP
	OP_NUMEQ
	OP_LESS
	OP_GRE
	OP_LEQ
	OP_GEQ
	OP_SYMBOLP
	OP_NUMBERP
	OP_STRINGP
	OP_INTEGERP
	OP_REALP
	OP_CHARP
	OP_CHARAP
	OP_CHARNP
	OP_CHARWP
	OP_CHARUP
	OP_CHARLP
	OP_PORTP
	OP_INPORTP
	OP_OUTPORTP
	OP_PROCP
	OP_PAIRP
	OP_LISTP
	OP_ENVP
	OP_VECTORP
	OP_EQ
	OP_EQV
	OP_FORCE
	OP_SAVE_FORCED
	OP_WRITE
	OP_WRITE_CHAR
	OP_DISPLAY
	OP_NEWLINE
	OP_ERR0
	OP_ERR1
	OP_REVERSE
	OP_LIST_STAR
	OP_APPEND
	OP_QUIT
	OP_GC
	OP_GCVERB
	OP_NEWSEGMENT
	OP_OBLIST
	OP_CURR_INPORT
	OP_CURR_OUTPORT
	OP_OPEN_INFILE
	OP_OPEN_OUTFILE
	OP_OPEN_INOUTFILE
	OP_OPEN_INSTRING
	OP_OPEN_INOUTSTRING
	OP_OPEN_OUTSTRING
	OP_GET_OUTSTRING
	OP_CLOSE_INPORT
	OP_CLOSE_OUTPORT
	OP_INT_ENV
	OP_CURR_ENV
	OP_READ
	OP_READ_CHAR
	OP_PEEK_CHAR
	OP_CHAR_READY
	OP_SET_INPORT
	OP_SET_OUTPORT
	OP_RDSEXPR
	OP_RDLIST
	OP_RDDOT
	OP_RDQUOTE
	OP_RDQQUOTE
	OP_RDQQUOTEVEC
	OP_RDUNQUOTE
	OP_RDUQTSP
	OP_RDVEC
	OP_P0LIST
	OP_P1LIST
	OP_PVECFROM
	OP_LIST_LENGTH
	OP_ASSQ
	OP_GET_CLOSURE
	OP_CLOSUREP
	OP_MACROP
	OP_MAXDEFINED
end enum
'' TODO: #define _OP_DEF(A,B,C,D,E,OP) OP,
#undef _OP_DEF
#define cons(sc, a, b) _cons(sc, a, b, 0)
#define immutable_cons(sc, a, b) _cons(sc, a, b, 1)
declare function is_string(byval p as pointer) as long
declare function string_value(byval p as pointer) as zstring ptr
declare function is_number(byval p as pointer) as long
declare function nvalue(byval p as pointer) as num
declare function ivalue(byval p as pointer) as clong
declare function rvalue(byval p as pointer) as double
declare function is_integer(byval p as pointer) as long
declare function is_real(byval p as pointer) as long
declare function is_character(byval p as pointer) as long
declare function charvalue(byval p as pointer) as clong
declare function is_vector(byval p as pointer) as long
declare function is_port(byval p as pointer) as long
declare function is_pair(byval p as pointer) as long
declare function pair_car(byval p as pointer) as pointer
declare function pair_cdr(byval p as pointer) as pointer
declare function set_car(byval p as pointer, byval q as pointer) as pointer
declare function set_cdr(byval p as pointer, byval q as pointer) as pointer
declare function is_symbol(byval p as pointer) as long
declare function symname(byval p as pointer) as zstring ptr
declare function hasprop(byval p as pointer) as long
declare function is_syntax(byval p as pointer) as long
declare function is_proc(byval p as pointer) as long
declare function is_foreign(byval p as pointer) as long
declare function syntaxname(byval p as pointer) as zstring ptr
declare function is_closure(byval p as pointer) as long
declare function closure_code(byval p as pointer) as pointer
declare function closure_env(byval p as pointer) as pointer
declare function is_continuation(byval p as pointer) as long
declare function is_promise(byval p as pointer) as long
declare function is_environment(byval p as pointer) as long
declare function is_immutable(byval p as pointer) as long
declare sub setimmutable(byval p as pointer)
end extern
scheme.bi
#pragma once
#include once "crt/long.bi"
#include once "crt/stdio.bi"
extern "C"
#define _SCHEME_H
const STANDALONE = 1
const USE_STRCASECMP = 1
const USE_STRLWR = 1
#define SCHEME_EXPORT
#define USE_SCHEME_STACK
const USE_MATH = 1
const USE_CHAR_CLASSIFIERS = 1
const USE_ASCII_NAMES = 1
const USE_STRING_PORTS = 1
const USE_TRACING = 1
const USE_PLIST = 0
const USE_ERROR_HOOK = 1
const USE_COLON_HOOK = 1
const STDIO_ADDS_CR = 0
#define INLINE
const USE_INTERFACE = 0
const SHOW_ERROR_LINE = 1
type pointer as cell ptr
type func_alloc as function(byval as uinteger) as any ptr
type func_dealloc as sub(byval as any ptr)
union num_value
	ivalue as clong
	rvalue as double
end union
type num
	is_fixnum as byte
	value as num_value
end type
declare function scheme_init_new() as scheme ptr
declare function scheme_init_new_custom_alloc(byval malloc as func_alloc, byval free as func_dealloc) as scheme ptr
declare function scheme_init(byval sc as scheme ptr) as long
declare function scheme_init_custom_alloc(byval sc as scheme ptr, byval as func_alloc, byval as func_dealloc) as long
declare sub scheme_deinit(byval sc as scheme ptr)
declare sub scheme_set_input_port_file(byval sc as scheme ptr, byval fin as FILE ptr)
declare sub scheme_set_input_port_string(byval sc as scheme ptr, byval start as zstring ptr, byval past_the_end as zstring ptr)
declare sub scheme_set_output_port_file(byval sc as scheme ptr, byval fin as FILE ptr)
declare sub scheme_set_output_port_string(byval sc as scheme ptr, byval start as zstring ptr, byval past_the_end as zstring ptr)
declare sub scheme_load_file(byval sc as scheme ptr, byval fin as FILE ptr)
declare sub scheme_load_named_file(byval sc as scheme ptr, byval fin as FILE ptr, byval filename as const zstring ptr)
declare sub scheme_load_string(byval sc as scheme ptr, byval cmd as const zstring ptr)
declare function scheme_apply0(byval sc as scheme ptr, byval procname as const zstring ptr) as pointer
declare function scheme_call(byval sc as scheme ptr, byval func as pointer, byval args as pointer) as pointer
declare function scheme_eval(byval sc as scheme ptr, byval obj as pointer) as pointer
declare sub scheme_set_external_data(byval sc as scheme ptr, byval p as any ptr)
declare sub scheme_define(byval sc as scheme ptr, byval env as pointer, byval symbol as pointer, byval value as pointer)
type foreign_func as function(byval as scheme ptr, byval as pointer) as pointer
declare function _cons(byval sc as scheme ptr, byval a as pointer, byval b as pointer, byval immutable as long) as pointer
declare function mk_integer(byval sc as scheme ptr, byval num as clong) as pointer
declare function mk_real(byval sc as scheme ptr, byval num as double) as pointer
declare function mk_symbol(byval sc as scheme ptr, byval name as const zstring ptr) as pointer
declare function gensym(byval sc as scheme ptr) as pointer
declare function mk_string(byval sc as scheme ptr, byval str as const zstring ptr) as pointer
declare function mk_counted_string(byval sc as scheme ptr, byval str as const zstring ptr, byval len as long) as pointer
declare function mk_empty_string(byval sc as scheme ptr, byval len as long, byval fill as byte) as pointer
declare function mk_character(byval sc as scheme ptr, byval c as long) as pointer
declare function mk_foreign_func(byval sc as scheme ptr, byval f as foreign_func) as pointer
declare sub putstr(byval sc as scheme ptr, byval s as const zstring ptr)
declare function list_length(byval sc as scheme ptr, byval a as pointer) as long
declare function eqv(byval a as pointer, byval b as pointer) as long
end extern