|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T e
Length: 7910 (0x1ee6) Types: TextFile Names: »extern.h«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦this⟧ »EUUGD11/gnu-31mar87/scheme/microcode/extern.h«
/* Emacs, -*-C-*-an't you guess? */ /**************************************************************** * * * Copyright (c) 1986 * * Massachusetts Institute of Technology * * * * This material was developed by the Scheme project at the * * Massachusetts Institute of Technology, Department of * * Electrical Engineering and Computer Science. Permission to * * copy this software, to redistribute it, and to use it for any * * purpose is granted, subject to the following restrictions and * * understandings. * * * * 1. Any copy made of this software must include this copyright * * notice in full. * * * * 2. Users of this software agree to make their best efforts (a)* * to return to the MIT Scheme project any improvements or * * extensions that they make, so that these may be included in * * future releases; and (b) to inform MIT of noteworthy uses of * * this software. * * * * 3. All materials developed as a consequence of the use of * * this software shall duly acknowledge such use, in accordance * * with the usual standards of acknowledging credit in academic * * research. * * * * 4. MIT has made no warrantee or representation that the * * operation of this software will be error-free, and MIT is * * under no obligation to provide any services, by way of * * maintenance, update, or otherwise. * * * * 5. In conjunction with products arising from the use of this * * material, there shall be no use of the name of the * * Massachusetts Institute of Technology nor of any adaptation * * thereof in any advertising, promotional, or sales literature * * without prior written consent from MIT in each case. * * * ****************************************************************/ /* File: EXTERN.H * * External declarations. * */ \f #ifdef ENABLE_DEBUGGING_TOOLS extern Boolean Eval_Debug, Hex_Input_Debug, Cont_Debug, File_Load_Debug, Reloc_Debug, Intern_Debug, Primitive_Debug, Define_Debug, Lookup_Debug, GC_Debug, Upgrade_Debug, Trace_On_Error, Dump_Debug, Per_File, Bignum_Debug; #else #define Eval_Debug false #define Hex_Input_Debug false #define File_Load_Debug false #define Reloc_Debug false #define Intern_Debug false #define Cont_Debug false #define Primitive_Debug false #define Lookup_Debug false #define Define_Debug false #define GC_Debug false #define Upgrade_Debug false #define Trace_On_Error false #define Dump_Debug false #define Per_File false #define Bignum_Debug false #endif \f extern Pointer Env, /* The environment */ Ext_Val, /* The value returned from primitives or apply */ Return, /* The return address code */ Ext_Expression, /* Expression to EVALuate */ *History, /* History register */ *Free, /* Next free word in heap */ *MemTop, /* Top of heap space available */ *Ext_Stack_Pointer, /* Next available slot in control stack */ *Stack_Top, /* Top of control stack */ *Stack_Guard, /* Guard area at end of stack */ *Constant_Space, /* Bottom of constant+pure space */ *Free_Constant, /* Next free cell in constant+pure area */ *Constant_Top, /* End of constant space, if any */ *Unused_Heap, /* Bottom of unused heap for GC */ *Unused_Heap_Top, /* Top of unused heap for GC */ *Heap_Top, /* Top of current heap space */ *Heap_Bottom, /* Bottom of current heap space */ *Local_Heap_Base, /* Per-processor CONSing area */ *Heap; /* Bottom of all heap space */ \f extern long ErrCode, /* Error code returned to user */ IntCode, /* Interrupts requesting */ IntEnb, /* Interrupts enabled */ GC_Reserve; /* Scheme pointer overflow space in heap */ extern char *Primitive_Names[], *Return_Names[]; extern long MAX_PRIMITIVE, MAX_RETURN; extern char Arg_Count_Table[], *CONT_PRINT_RETURN_MESSAGE, *CONT_PRINT_EXPR_MESSAGE, *RESTORE_CONT_RETURN_MESSAGE, *RESTORE_CONT_EXPR_MESSAGE; extern int GC_Type_Map[]; extern Boolean Photo_Open; /* Photo file open */ extern jmp_buf *Back_To_Eval; extern Boolean Trapping, Can_Do_Cursor; extern Pointer Old_Return_Code, *Return_Hook_Address, *Previous_Restore_History; \f /* And file "channels" */ extern FILE *(Channels[FILE_CHANNELS]); extern FILE *File_Handle; /* Used by Fasload/Fasdump */ extern FILE *Photo_File_Handle; /* Used by Photo */ extern int Saved_argc; extern char **Saved_argv; extern char *OS_Name, *OS_Variant; extern long Heap_Size, Constant_Size, Stack_Size; /* External primitive data */ typedef struct ext_desc /* User supplied primitive data */ { Pointer (*proc)(); /* Location of actual procedure */ int arity; /* Number of arguments */ char *name; /* Name of primitive */ } External_Descriptor; extern External_Descriptor Ext_Prim_Desc[]; extern long MAX_EXTERNAL_PRIMITIVE, Get_Ext_Number(); extern Pointer Undefined_Externals, Apply_External(), Make_Prim_Exts(); \f /* String utilities */ extern Boolean String_Equal(); extern Pointer Make_String(), C_String_To_Scheme_String(); #define Scheme_String_To_C_String(Scheme_String) \ ((char *) Nth_Vector_Loc(Scheme_String, STRING_CHARS)) /* Symbol and variable utilities */ extern long Lex_Ref(), Local_Set(), Lex_Set(), Symbol_Lex_Ref(), Symbol_Lex_Set(), Intern(), Lex_Test(); extern Pointer Hash(); /* Numeric utilities */ extern int Scheme_Integer_To_C_Integer(); extern Pointer C_Integer_To_Scheme_Integer(), Big_To_Float(), Big_To_Fix(), Fix_To_Big(); /* Random and OS utilities */ extern int Parse_Option(); extern Boolean Open_File(), Restore_History(), Open_Dump_File(); extern long OS_Term_Code(), NColumns(), NLines(), System_Clock(); extern void OS_Flush_Output_Buffer(), OS_Clear_Screen(); extern void Restartable_Exit(), Load_Data(); /* Memory management utilities */ extern void GC(), GCFlip(); extern Pointer Impurify_For_Side_Effect(), *GCLoop(); /* Interpreter utilities */ extern term_type Microcode_Termination(); extern void Interpret(), Do_Micro_Error(), Setup_Interrupt(), Back_Out_Of_Primitive(), Throw(), Stop_History(); extern Pointer (*(Primitive_Table[]))(), *Make_Dummy_History(); /* Debugging utilities */ extern void Back_Trace(), Handle_Debug_Flags(), Find_Symbol(), Show_Env(), Show_Pure(), Print_Return(), Print_Expression(), Print_Primitive(); \f /* Conditional utilities */ #ifdef COMPILE_FUTURES extern void Clear_Timer(), Set_Timer(); #endif #ifdef METERING extern void Clear_Perfinfo_Data(); #endif #ifdef COMPILER extern Pointer Registers[]; /* Registers[] is formatted as follows (see regblock.c) */ #define REGBLOCK_VAL 0 #define REGBLOCK_STACKGUARD 1 #define REGBLOCK_MEMTOP 2 #define REGBLOCK_ROUTINES 3 #define REGBLOCK_DISPLAYS 17 #define REGBLOCK_NDISPLAYS 25 #define REGBLOCK_TEMPORARIES (REGBLOCK_DISPLAYS+REGBLOCK_NDISPLAYS) #define REGBLOCK_NTEMPS 25 extern void Return_To_Interpreter(), Compiler_Entry_GC(), Compiler_Recursion_GC(); extern int Enter_Compiler(); #else #define REGBLOCK_NDISPLAYS 25 #endif