COMPILATION LISTING OF SEGMENT lisp_baktrace_ Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 06/30/83 0844.1 mst Thu Options: map single_symbol_list 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1973 * 4* * * 5* ************************************************************** */ 6 7 /* lisp baktrace functions */ 8 9 baktrace: proc; 10 11 /* 12* * this proc contains the type 2 lsubrs baktrace, baktrace1, baktrace2. 13* * 14* * these are the same except that baktrace lists only function names, 15* * while baktrace1 also lists the a-list pdl ptr for bindings just 16* * _b_e_f_o_r_e that function was invoked, and baktrace2 gives both the 17* * a-list pdl ptr and the evalframe pdl ptr. 18* * 19* * these functions may be called with 0, 1, or 2 evaluated arguments. 20* * 0 arguments is equivalent to 1 argument of nil. 21* * the first argument is a pdl ptr, or else nil which means 22* * start at the top of the pdl. If the pdl ptr is negative the search 23* * for the first evalframe is down, if positive it is up, but in 24* * either case the actual tracing is downwards in the pdl. 25* * A pdl ptr argument of 0 is not supported. 26* * If a second argument is given, it is a fixnum giving the 27* * maximum number of lines to be typed out, i.e. the maximum depth 28* * in the pdl to be traced. 29* * 30* * 31* * Coded 2 Sept. 1972 by D. A. Moon 32* */ 33 34 dcl stack ptr, 35 unm ptr, 36 unm2 ptr, 37 posf bit(1), 38 esw fixed bin, 39 nargs fixed bin, 40 first bit(1), 41 loc bit(18), 42 kludge_fixed_bin fixed bin(18), 43 1 loc_ovly based (addr(loc)), 44 2 locfb fixed bin(17) unaligned, 45 2 unused_bits bit(18) unaligned, 46 st ptr, 47 lisp_static_vars_$print_atom fixed bin(71) external, 48 lisp_print_$type_string entry (char(*)), 49 lisp_static_vars_$prin1_atom fixed bin(71) external, 50 lisp_$apply entry, 51 lisp_special_fns_$ncons entry, 52 count fixed bin, 53 lisp_error_ entry, 54 i fixed bin; 55 56 dcl (lisp_error_table_$not_pdl_ptr, lisp_error_table_$bad_arg_correctable) fixed bin(35) external; 57 1 1 /* Include file lisp_atom_fmt.incl.pl1; 1 2* describes internal format of atoms in the lisp system 1 3* D.Reed 4/1/71 */ 1 4 1 5 dcl 1 atom aligned based, /* overlay for atom fomat */ 1 6 2 value fixed bin(71), /* atom's value */ 1 7 2 plist fixed bin(71), /* property list */ 1 8 2 pnamel fixed bin, /* length of print name */ 1 9 2 pname char(1 refer(pnamel)), /* print name of atom */ 1 10 1 11 1 atom_ptrs based aligned, /* for use of plist and value of atom as ptrs */ 1 12 2 value ptr, 1 13 2 plist ptr, 1 14 1 15 1 atom_double_words based aligned, /* overlay for atom pointer checking */ 1 16 2 value bit(72), 1 17 2 plist bit(72); 1 18 1 19 /* end of include file lisp_atom_fmt.incl.pl1 */ 58 2 1 2 2 /* BEGIN INCLUDE FILE lisp_name_codes.incl.pl1 */ 2 3 2 4 /* These are codes for the names of functions which are stored into ab|-1,x7 before 2 5* calling lisp_error_ for a bad_argument or bad_arg_correctable error. They 2 6* are used so that the name of the function which is rejecting its argument 2 7* can be printed. Please note that all these codes are negative. */ 2 8 2 9 dcl ( 2 10 fn_do init (-10), 2 11 fn_arg init (-11), 2 12 fn_setarg init (-12), 2 13 fn_status init (-13), 2 14 fn_sstatus init (-14), 2 15 fn_errprint init (-15), 2 16 fn_errframe init (-16), 2 17 fn_evalframe init (-17), 2 18 fn_defaultf init (-18), 2 19 fn_tyo init (-22), 2 20 fn_ascii init (-23), 2 21 fn_rplaca init (-24), 2 22 fn_definedp init (-25), 2 23 fn_setq init (-26), 2 24 fn_set init (-27), 2 25 fn_delete init (-28), 2 26 fn_delq init (-29), 2 27 fn_stringlength init (-30), 2 28 fn_catenate init (-31), 2 29 fn_array init (-32), 2 30 fn_substr init (-33), 2 31 fn_index init (-34), 2 32 fn_get_pname init (-35), 2 33 fn_make_atom init (-36), 2 34 fn_ItoC init (-37), 2 35 fn_CtoI init (-38), 2 36 fn_defsubr init (-39), 2 37 fn_star_array init (-40), 2 38 fn_args init (-41), 2 39 fn_sysp init (-42), 2 40 fn_get init (-43), 2 41 fn_getl init (-44), 2 42 fn_putprop init (-45), 2 43 fn_remprop init (-46), 2 44 fn_save init (-47), 2 45 fn_add1 init (-48), 2 46 fn_sub1 init (-49), 2 47 fn_greaterp init (-50), 2 48 fn_lessp init (-51), 2 49 fn_minus init (-52), 2 50 fn_plus init (-53), 2 51 fn_times init (-54), 2 52 fn_difference init (-55), 2 53 fn_quotient init (-56), 2 54 fn_abs init (-57), 2 55 fn_expt init (-58), 2 56 fn_boole init (-59), 2 57 fn_rot init (-60), 2 58 fn_lsh init (-61), 2 59 fn_signp init (-62), 2 60 fn_fix init (-63), 2 61 fn_float init (-64), 2 62 fn_remainder init (-65), 2 63 fn_max init (-66), 2 64 fn_min init (-67), 2 65 fn_add1_fix init (-68), 2 66 fn_add1_flo init (-69), 2 67 fn_sub1_fix init (-70), 2 68 fn_sub1_flo init (-71), 2 69 fn_plus_fix init (-72), 2 70 fn_plus_flo init (-73), 2 71 fn_times_fix init (-74), 2 72 fn_times_flo init (-75), 2 73 fn_diff_fix init (-76), 2 74 fn_diff_flo init (-77), 2 75 fn_quot_fix init (-78), 2 76 fn_quot_flo init (-79), 2 77 fn_eval init (-80), 2 78 fn_apply init (-81), 2 79 fn_prog init (-82), 2 80 fn_errset init (-83), 2 81 fn_catch init (-84), 2 82 fn_throw init (-85), 2 83 fn_store init (-86), 2 84 fn_defun init (-87), 2 85 fn_baktrace init (-88), 2 86 fn_bltarray init (-89), 2 87 fn_star_rearray init (-90), 2 88 fn_gensym init (-91), 2 89 fn_makunbound init (-92), 2 90 fn_boundp init (-93), 2 91 fn_star_status init (-94), 2 92 fn_star_sstatus init (-95), 2 93 fn_freturn init (-96), 2 94 fn_cos init (-97), 2 95 fn_sin init (-98), 2 96 fn_exp init (-99), 2 97 fn_log init (-100), 2 98 fn_sqrt init (-101), 2 99 fn_isqrt init (-102), 2 100 fn_atan init (-103), 2 101 fn_sleep init (-104), 2 102 fn_oddp init (-105), 2 103 fn_tyipeek init (-106), 2 104 fn_alarmclock init (-107), 2 105 fn_plusp init (-108), 2 106 fn_minusp init (-109), 2 107 fn_ls init (-110), 2 108 fn_eql init (-111), 2 109 fn_gt init (-112), 2 110 fn_alphalessp init (-113), 2 111 fn_samepnamep init (-114), 2 112 fn_getchar init (-115), 2 113 fn_opena init (-116), 2 114 fn_sxhash init (-117), 2 115 fn_gcd init (-118), 2 116 fn_allfiles init (-119), 2 117 fn_chrct init (-120), 2 118 fn_close init (-121), 2 119 fn_deletef init (-122), 2 120 fn_eoffn init (-123), 2 121 fn_filepos init (-124), 2 122 fn_inpush init (-125), 2 123 fn_linel init (-126), 2 124 fn_mergef init (-127), 2 125 fn_namelist init (-128), 2 126 fn_names init (-129), 2 127 fn_namestring init (-130), 2 128 fn_openi init (-131), 2 129 fn_openo init (-132), 2 130 fn_prin1 init (-133), 2 131 fn_princ init (-134), 2 132 fn_print init (-135), 2 133 fn_read init (-136), 2 134 fn_readch init (-137), 2 135 fn_readstring init (-138), 2 136 fn_rename init (-139), 2 137 fn_shortnamestring init (-140), 2 138 fn_tyi init (-141), 2 139 fn_setsyntax init (-142), 2 140 fn_cursorpos init (-143), 2 141 fn_force_output init (-144), 2 142 fn_clear_input init (-145), 2 143 fn_random init (-146), 2 144 fn_haulong init (-147), 2 145 fn_haipart init (-148), 2 146 fn_cline init (-149), 2 147 fn_fillarray init (-150), 2 148 fn_listarray init (-151), 2 149 fn_sort init (-152), 2 150 fn_sortcar init (-153), 2 151 fn_zerop init (-154), 2 152 fn_listify init (-155), 2 153 fn_charpos init (-156), 2 154 fn_pagel init (-157), 2 155 fn_linenum init (-158), 2 156 fn_pagenum init (-159), 2 157 fn_endpagefn init (-160), 2 158 fn_arraydims init (-161), 2 159 fn_loadarrays init (-162), 2 160 fn_dumparrays init (-163), 2 161 fn_expt_fix init (-164), 2 162 fn_expt_flo init (-165), 2 163 fn_nointerrupt init (-166), 2 164 fn_open init (-167), 2 165 fn_in init (-168), 2 166 fn_out init (-169), 2 167 fn_truename init (-170), 2 168 fn_ifix init (-171), 2 169 fn_fsc init (-172), 2 170 fn_progv init (-173), 2 171 fn_mapatoms init (-174), 2 172 fn_unwind_protect init (-175), 2 173 fn_eval_when init (-176), 2 174 fn_read_from_string init (-177), 2 175 fn_displace init (-178), 2 176 fn_nth init (-179), 2 177 fn_nthcdr init (-180), 2 178 fn_includef init (-181) 2 179 ) fixed bin static; 2 180 2 181 /* END INCLUDE FILE lisp_name_codes.incl.pl1 */ 59 3 1 /* lisp stack header format */ 3 2 /* Last modified 7/21/72 by Reed for in_pl1 flag */ 3 3 /* Modified 1978 by Greenberg for unwind-protect ops */ 3 4 3 5 declare 3 6 3 7 1 stack_seg based aligned, /* stored in base of unmkd_pdl segment */ 3 8 2 marked_stack_bottom ptr, /* where marked stack begins... */ 3 9 2 unmkd_stack_bottom ptr, /* where unmkd_ stack actually starts */ 3 10 2 stack_ptr_ptr ptr, /* points at lisp_static_vars_$stack_ptr */ 3 11 2 unmkd_ptr_ptr ptr, /* points at lisp_static_vars_$unmkd_ptr's offset word */ 3 12 2 array_pointer ptr, /* obsolete */ 3 13 2 nil fixed bin(71), /* object for nil */ 3 14 2 true fixed bin(71), /* object for t */ 3 15 2 in_pl1_code bit(36), /* flag indicating that we are in pl1 code if non-zero */ 3 16 2 padding0 bit(36), /* double word boundary preservation */ 3 17 2 bind_op ptr, /* pointers to operators for run-time support */ 3 18 2 unbind_op ptr, 3 19 2 errset1_op ptr, 3 20 2 errset2_op ptr, 3 21 2 unerrset_op ptr, 3 22 2 call_op ptr, 3 23 2 catch1_op ptr, 3 24 2 catch2_op ptr, 3 25 2 uncatch_op ptr, 3 26 2 gensym_data (2) bit(36) aligned, /* stuff used by the gensym function */ 3 27 2 system_lp ptr, /* pointer to the system's linkage section */ 3 28 2 iogbind_op ptr, 3 29 2 unseen_go_tag_op ptr, 3 30 2 throw1_op ptr, 3 31 2 throw2_op ptr, 3 32 2 signp_op ptr, 3 33 2 type_fields bit(72) aligned, /* fixnum, flonum type for compiled code */ 3 34 2 return_op ptr, 3 35 2 err_op ptr, 3 36 2 pl1_interface ptr, /* pointer to pl1 interface for type 2 subrs. */ 3 37 2 pl1_lsubr_interface ptr, /* same for type -2 subrs */ 3 38 2 cons_opr ptr, /* cons operator */ 3 39 2 ncons_opr ptr, /* ncons operator */ 3 40 2 xcons_opr ptr, /* xcons operator */ 3 41 2 begin_list_opr ptr, /* operator to make initial cell of list */ 3 42 2 append_list_opr ptr, /* operator to append to last-made cell of list */ 3 43 2 terminate_list_opr ptr, /* opeator to append last cell to next to last cell of list */ 3 44 2 compare_op ptr, /* fixnum/flonum comparison operator */ 3 45 2 link_op ptr, 3 46 2 array_operator pointer, /* accessing operator, invoked by arrays */ 3 47 2 dead_array_operator pointer, /* dead arrays invoke this operator instead */ 3 48 2 store_operator pointer, /* operator to do compiled store */ 3 49 2 floating_store_operator pointer, /* ditto, but operand is in EAQ */ 3 50 2 array_info_for_store pointer, /* -> array_info block of last array referenced */ 3 51 2 array_offset_for_store fixed bin(18), /* offset in array_data block of last array element referenced */ 3 52 2 padding bit(36), 3 53 2 array_link_snap_opr pointer, 3 54 2 create_string_desc_op ptr, 3 55 2 create_array_desc_op ptr, 3 56 2 pl1_call_op ptr, 3 57 2 cons_string_op ptr, 3 58 2 create_varying_string_op ptr, 3 59 2 unwp1_op ptr, 3 60 2 unwp2_op ptr, 3 61 2 ununwp_op ptr, 3 62 2 irest_return_op ptr, 3 63 2 pl1_call_nopop_op ptr, 3 64 2 rcv_char_star_op ptr, 3 65 2 spare2 (7) ptr, 3 66 2 begin_unmkd_stack(16325) fixed bin(71); /* rest of segment is the unmarked pdl */ 3 67 3 68 dcl call_array_operator bit(36) static init("100112273120"b3), /* tspbb ab|112,* */ 3 69 call_dead_array_operator bit(36) static init("100114273120"b3); /* tspbb ab|114,* */ 3 70 3 71 /* end stack segment format */ 60 4 1 /* Include file lisp_ptr_fmt.incl.pl1; 4 2* describes the format of lisp pointers as 4 3* a bit string overlay on the double word ITS pair 4 4* which allows lisp to access some unused bits in 4 5* the standard ITS pointer format. It should be noted that 4 6* this is somewhat of a kludge, since 4 7* it is quite machine dependent. However, to store type 4 8* fields in the pointer, saves 2 words in each cons, 4 9* plus some efficiency problems. 4 10* 4 11* D.Reed 4/1/71 */ 4 12 /* modified to move type field to other half of ptr */ 4 13 /* D.Reed 5/31/72 */ 4 14 4 15 4 16 dcl based_ptr ptr aligned based; /* for dealing with lisp values as pointers */ 4 17 dcl lisp_ptr_type bit(36) aligned based, /* for more efficient checking of type bits */ 4 18 1 lisp_ptr based aligned, /* structure of double word pointer in lisp */ 4 19 2 segno bit(18) unaligned, /* segment number pointed to by pointer */ 4 20 2 ringnum bit(3) unaligned, /* ring mumber for validation */ 4 21 2 type bit(9) unaligned, /* type field */ 4 22 2 itsmod bit(6) unaligned, 4 23 2 offset fixed bin(17) unaligned, /* offset in segment of object pointed to */ 4 24 2 chain bit(18) unaligned, /* normally 0, but may be set to chain pointers together */ 4 25 4 26 /* manifest constant strings for testing above type field */ 4 27 4 28 ( 4 29 Cons init("000000000"b), /* a pointer to a list has a zero type field */ 4 30 Fixed init("100000000"b), /* a fixed point number, stored in second word of the ptr */ 4 31 Float init("010000000"b), /* a floating number, also stored in the second word of the ptr */ 4 32 Atsym init("001000000"b), /* this bit on means a ptr to an atomic symbol */ 4 33 Atomic init("111111111"b), /* any bit on means an atomic data type */ 4 34 Bignum init("000001000"b), /* a multiple-precision number */ 4 35 Bigfix init("000001000"b), /* a fixed point bignum (only kind for now) */ 4 36 Numeric init("110000000"b), /* either type immediate number. Both bits on 4 37* means a special internal uncollectable weird object */ 4 38 Uncollectable init("110000000"b), /* not looked through by garbage collector */ 4 39 String init("000100000"b), /* pointer to lisp character string - length word, chars */ 4 40 Subr init("000010000"b), /* pointer to compiled (or builtin) subroutine (linkage) code */ 4 41 System_Subr init("000000100"b), /* Subr bit must be on too, indicates ptr into lisp_subr_tv_ */ 4 42 Array init("000000010"b), /* Subr bit must be on too, indicates ptr to a lisp array */ 4 43 File init("000000001"b) /* pointer to a file object (iochan block) */ 4 44 ) bit(9) static, 4 45 4 46 /* 36 bit manifest constant strings for testing lisp_ptr_type */ 4 47 4 48 4 49 ( 4 50 Cons36 init("000000000000000000000000000000"b), 4 51 Fixed36 init("000000000000000000000100000000"b), 4 52 Float36 init("000000000000000000000010000000"b), 4 53 Atsym36 init("000000000000000000000001000000"b), 4 54 Atomic36 init("000000000000000000000111111100"b), 4 55 Bignum36 init("000000000000000000000000001000"b), 4 56 System_Subr36 4 57 init("000000000000000000000000000100"b), 4 58 Bigfix36 init("000000000000000000000000001000"b), 4 59 Numeric36 init("000000000000000000000110000000"b), /* does not check for bignum */ 4 60 NotConsOrAtsym36 4 61 init("000000000000000000000110111111"b), 4 62 SubrNumeric36 4 63 init("000000000000000000000110010000"b), /* used in garbage collector, for quick check */ 4 64 String36 init("000000000000000000000000100000"b), 4 65 Subr36 init("000000000000000000000000010000"b), 4 66 File36 init("000000000000000000000000000001"b), 4 67 Array36 init("000000000000000000000000000010"b)) bit(36) aligned static, 4 68 4 69 /* undefined pointer value is double word of zeros */ 4 70 4 71 Undefined bit(72) static init(""b); 4 72 4 73 /* end of include file lisp_ptr_fmt.incl.pl1 */ 61 5 1 /* Include file lisp_cons_fmt.incl.pl1; 5 2* defines the format for a cons within the lisp system 5 3* D.Reed 4/1/71 */ 5 4 5 5 dcl consptr ptr, 5 6 1 cons aligned based (consptr), /* structure defining format for cons */ 5 7 2 car fixed bin(71), 5 8 2 cdr fixed bin(71), 5 9 5 10 1 cons_ptrs aligned based (consptr), /* for using car and cdr as pointers */ 5 11 2 car ptr, 5 12 2 cdr ptr, 5 13 5 14 5 15 1 cons_types aligned based (consptr), /* structure for extracting types out of cons */ 5 16 2 padding bit(21) unaligned, 5 17 2 car bit(9) unaligned, 5 18 2 padding2 bit(63) unaligned, 5 19 2 cdr bit(9) unaligned, 5 20 2 padend bit(42) unaligned; 5 21 5 22 dcl 1 cons_types36 aligned based, 5 23 2 car bit(36), 5 24 2 pada bit(36), 5 25 2 cdr bit(36), 5 26 2 padd bit(36); 5 27 5 28 5 29 /* end include file lisp_cons_fmt.incl.pl1 */ 62 6 1 /* include file lisp_stack_fmt.incl.pl1 -- 6 2* describes the format of the pushdown list 6 3* used by the lisp evaluator and lisp subrs 6 4* for passing arguments, saving atom bindings, 6 5* and as temporaries */ 6 6 6 7 dcl 6 8 temp(10000) fixed bin(71) aligned based, 6 9 6 10 temp_ptr(10000) ptr aligned based, 6 11 1 push_down_list_ptr_types(10000) based aligned, 6 12 2 junk bit(21) unaligned, 6 13 2 temp_type bit(9) unaligned, 6 14 2 more_junk bit(42) unaligned, 6 15 6 16 1 pdl_ptr_types36(10000) based aligned, 6 17 2 temp_type36 bit(36), 6 18 2 junk bit(36), 6 19 6 20 1 binding_block aligned based, 6 21 2 top_block bit(18) unaligned, 6 22 2 bot_block bit(18) unaligned, /* these two are rel pointers into the marked PDL */ 6 23 2 back_ptr bit(18) unaligned, /* relative pointer into unmarked PDL for last binding block. */ 6 24 2 rev_ptr bit(18) unaligned, /* relative pointer to reversal bb which reversed this one, init to 0 */ 6 25 6 26 1 bindings(10000) based aligned, /* format fof bindings on stack */ 6 27 2 old_val fixed bin(71) aligned, 6 28 2 atom fixed bin(71) aligned; 6 29 6 30 6 31 6 32 /* end include file lisp_stack_fmt.incl.pl1 */ 63 7 1 /* Include file lisp_common_vars.incl.pl1; 7 2* describes the external static variables which may be referenced 7 3* by lisp routines. 7 4* D. Reed 4/1/71 */ 7 5 7 6 dcl 1 lisp_static_vars_$lisp_static_vars_ external, 7 7 2 cclist_ptr ptr, /* pointer to list of constants kept 7 8* by compiled programs */ 7 9 2 garbage_collect_soon bit(1) aligned, /* if this is on we should garbage collect soon */ 7 10 7 11 lisp_static_vars_$err_recp ptr ext aligned, /* pointer to error data */ 7 12 err_recp ptr defined (lisp_static_vars_$err_recp), 7 13 eval_frame ptr defined (lisp_static_vars_$eval_frame), /* info kept by eval if *rset t */ 7 14 lisp_static_vars_$eval_frame ptr ext static, 7 15 lisp_static_vars_$prog_frame ptr ext aligned, 7 16 lisp_static_vars_$err_frame ptr ext aligned, 7 17 lisp_static_vars_$catch_frame ptr ext aligned, 7 18 lisp_static_vars_$unwp_frame ptr ext aligned, 7 19 lisp_static_vars_$stack_ptr ptr ext aligned, 7 20 lisp_static_vars_$t_atom fixed bin(71) ext aligned, 7 21 lisp_static_vars_$top_level label ext, /* top level read_eval_print loop */ 7 22 lisp_static_vars_$unmkd_ptr ptr ext aligned, 7 23 lisp_static_vars_$binding_top ptr ext aligned, 7 24 lisp_static_vars_$obarray fixed bin(71) aligned ext, 7 25 obarray fixed bin(71) defined (lisp_static_vars_$obarray), 7 26 lisp_static_vars_$array_atom fixed bin(71) aligned ext, 7 27 array_atom fixed bin(71) defined (lisp_static_vars_$array_atom), 7 28 binding_top ptr defined (lisp_static_vars_$binding_top), 7 29 unmkd_ptr ptr defined (lisp_static_vars_$unmkd_ptr), 7 30 stack_ptr ptr defined (lisp_static_vars_$stack_ptr), 7 31 lisp_static_vars_$nil ext static fixed bin(71) aligned, 7 32 nil fixed bin(71) defined (lisp_static_vars_$nil), 7 33 lisp_static_vars_$tty_input_chan ext static ptr, /* used by the reader */ 7 34 lisp_static_vars_$tty_output_chan ext static ptr, /*used by print*/ 7 35 tty_input_chan ptr def (lisp_static_vars_$tty_input_chan), 7 36 tty_output_chan ptr def (lisp_static_vars_$tty_output_chan), 7 37 lisp_static_vars_$iochan_list external pointer, /* list of all open iochans */ 7 38 nil_ptr ptr based(addr(lisp_static_vars_$nil)) aligned, 7 39 prog_frame ptr def (lisp_static_vars_$prog_frame), /* 3 ptrs for use of lisp_prog_fns_ */ 7 40 err_frame ptr def (lisp_static_vars_$err_frame), /* they point out frames in unmkd pdl */ 7 41 catch_frame ptr def (lisp_static_vars_$catch_frame), 7 42 unwp_frame ptr def (lisp_static_vars_$unwp_frame), 7 43 t_atom_ptr ptr aligned based(addr(lisp_static_vars_$t_atom)), 7 44 t_atom fixed bin(71) defined (lisp_static_vars_$t_atom); /* pointer to atom t */ 7 45 dcl lisp_static_vars_$user_intr_array(20) fixed bin(71) aligned ext static, /* -> atoms whose values are intr service functions */ 7 46 user_intr_array (20) fixed bin(71) aligned def (lisp_static_vars_$user_intr_array), 7 47 lisp_static_vars_$star_rset fixed bin(71) aligned ext static, 7 48 star_rset fixed bin(71) aligned def (lisp_static_vars_$star_rset); 7 49 7 50 7 51 /* end include file lisp_common_vars.incl.pl1 */ 64 8 1 /* lisp number format -- overlaid on standard its pointer. */ 8 2 8 3 8 4 dcl 1 fixnum_fmt based aligned, 8 5 2 type_info bit(36) aligned, 8 6 2 fixedb fixed bin, 8 7 8 8 1 flonum_fmt based aligned, 8 9 2 type_info bit(36) aligned, 8 10 2 floatb float bin, 8 11 8 12 fixnum_type bit(36) aligned static init("000000000000000000000100000000100111"b), 8 13 flonum_type bit(36) aligned static init("000000000000000000000010000000100111"b); 8 14 8 15 /* end of lisp number format */ 8 16 65 9 1 9 2 /* BEGIN INCLUDE FILE lisp_unmkd_pdl.incl.pl1 */ 9 3 9 4 /* which describes the format of information that gets 9 5* put on the unmarked pdl */ 9 6 9 7 dcl errcode(2) fixed bin aligned based, /* (1) is error code for lisp_error_ */ 9 8 /* (2) is file system code (if any) */ 9 9 9 10 1 frame aligned based, /* many types of frames are pushed */ 9 11 2 prev_frame bit(18) unaligned, /* rel ptr to previous frame same type, or 0 */ 9 12 2 stack_ptr bit(18) unaligned, /* rel(stack_ptr) when the frame was created */ 9 13 2 (dat1, dat2) bit(18) unaligned, /* available for any lawful purpose */ 9 14 2 ret label; /* where to return to */ 9 15 9 16 dcl nframeptrs fixed bin static init(6), /* in the following two declarations, 9 17* I used 6 where I meant nframeptrs because of compiler bug */ 9 18 lisp_static_vars_$frame_ptrs (0:6) ptr ext static, 9 19 frame_ptrs (0 : 6) pointer defined (lisp_static_vars_$frame_ptrs); /* prog_frame, err_frame, etc. */ 9 20 9 21 9 22 /* END INCLUDE FILE lisp_unmkd_pdl.incl.pl1 */ 9 23 66 67 68 esw = 0; 69 go to join; 70 71 baktrace1: entry; 72 73 esw = 1; 74 go to join; 75 76 baktrace2: entry; 77 78 esw = 2; 79 go to join; 80 81 join: /* begin by analyzing arguments */ 82 83 stack = addrel(stack_ptr, -2); /* -> -2*nargs */ 84 nargs = stack -> fixedb; 85 stack = addrel(stack, nargs); /* -> our first arg */ 86 if nargs = 0 then do; 87 88 /* no args, simulate 1 arg of nil */ 89 90 stack -> temp(1) = nil; 91 stack_ptr = addr(stack -> temp(3)); 92 nargs = -2; 93 end; 94 if nargs = -2 then do; 95 96 /* 1 arg, simulate second arg of very big number */ 97 98 addr(stack -> temp(2)) -> fixnum_fmt.type_info = fixnum_type; 99 addr(stack -> temp(2)) -> fixedb = binary(999999999, 35); 100 end; 101 102 retry: 103 stack_ptr = addr(stack -> temp(3)); /* just 2 args allowed */ 104 posf = "0"b; 105 if stack -> temp(1) = nil then do; 106 loc = rel(eval_frame); 107 if loc then locfb = locfb + 1; 108 end; 109 else if stack -> temp_type36(1) & Fixed36 then 110 if stack -> fixedb < 0 then 111 loc = substr(unspec(stack -> fixedb), 19, 18); 112 else do; 113 kludge_fixed_bin = -stack -> fixedb; 114 loc = substr(unspec(kludge_fixed_bin), 19, 18); 115 posf = "1"b; 116 end; 117 118 else do; /* not a fixnum, you lose */ 119 baktrace_bad_pdl_ptr: 120 unm = unmkd_ptr; 121 unmkd_ptr = addrel(unm, 2); 122 stack_ptr = addr(stack -> temp(4)); 123 stack -> temp(3) = stack -> temp(1); /* move losing pdl ptr to top of marked pdl */ 124 unm -> errcode(1) = lisp_error_table_$not_pdl_ptr; 125 unm -> errcode(2) = fn_baktrace; 126 call lisp_error_; 127 stack -> temp(1) = stack -> temp(3); /* move replacement value back down */ 128 go to retry; 129 end; 130 131 /* make sure pdl ptr lies in the stack */ 132 133 if loc >= rel(unmkd_ptr) then go to baktrace_bad_pdl_ptr; 134 135 if loc = ""b then if posf then go to baktrace_00; 136 else go to baktrace_nothing; 137 138 if loc < rel(ptr(unmkd_ptr,""b)->stack_seg.unmkd_stack_bottom) 139 then go to baktrace_bad_pdl_ptr; 140 141 142 /* make sure second arg was a fixnum */ 143 144 if stack -> temp_type36(2) & Fixed36 then count = addr(stack -> temp(2)) -> fixedb; 145 else do; 146 unm = unmkd_ptr; 147 unmkd_ptr = addrel(unm, 2); 148 unm -> errcode(1) = lisp_error_table_$bad_arg_correctable; 149 unm -> errcode(2) = fn_baktrace; 150 call lisp_error_; 151 go to retry; 152 end; 153 154 /* arguments have been validated, find first place to baktrace from */ 155 156 if stack -> temp(1) = nil 157 then if addr(lisp_static_vars_$star_rset) -> based_ptr -> atom.value ^= nil 158 then first = "1"b; 159 /* avoid listing ourselves in the baktrace */ 160 else first = "0"b; 161 162 baktrace_00: 163 unm2 = null(); 164 do unm = eval_frame repeat (ptr(unm, unm -> frame.prev_frame)) while (rel(unm)); 165 if rel(unm) < loc then go to baktrace_01; 166 if posf then if rel(unm) = loc then go to baktrace_01; 167 unm2 = unm; 168 end; 169 if posf then go to baktrace_01; 170 171 /* nothing there - just return nil */ 172 173 baktrace_nothing: 174 stack -> temp(1) = nil; 175 stack_ptr = addr(stack -> temp(2)); 176 return; 177 178 179 baktrace_01: 180 if posf then do; 181 if unm2 = null then go to baktrace_nothing; 182 unm = unm2; /* make it look like we did an upward search */ 183 end; 184 185 /* begin baktraceing, unm -> frame */ 186 187 stack_ptr = addr(stack -> temp(3)); 188 i = 0; 189 do unm = unm repeat(ptr(unm, unm -> frame.prev_frame)) while (rel(unm)); 190 if first then first = ""b; 191 else do; 192 st = ptr(stack_ptr, unm -> frame.stack_ptr); 193 stack -> temp(2) = st -> temp(1); /* get form being evaled 194* or function being applied or mapped. */ 195 if (unm -> frame.dat1 & "000000000000000001"b) = ""b then /* if apply bit is off, */ 196 stack -> temp(2) = stack -> temp_ptr(2) -> cons.car; /* is list of fcn . args */ 197 if stack -> temp_type36(2) & Atsym36 then do; /* omit lambda expressions 198* because they take too long to type out */ 199 stack -> temp(1) = lisp_static_vars_$print_atom; 200 call lisp_special_fns_$ncons; 201 call lisp_$apply; 202 stack_ptr = addr(stack -> temp(3)); 203 if esw ^= 0 then do; 204 call lisp_print_$type_string(" "); /* give a-list */ 205 addr(stack -> temp(2)) -> fixnum_fmt.type_info = fixnum_type; 206 addr(stack -> temp(2)) -> fixedb = fixed("111111111111111110"b||unm -> frame.stack_ptr, 36); 207 stack -> temp(1) = lisp_static_vars_$prin1_atom; 208 call lisp_special_fns_$ncons; 209 call lisp_$apply; 210 stack_ptr = addr(stack -> temp(3)); 211 if esw = 2 then do; 212 call lisp_print_$type_string(" "); /* give pdl ptr */ 213 addr(stack -> temp(2)) -> fixnum_fmt.type_info = fixnum_type; 214 addr(stack -> temp(2)) -> fixedb = fixed("111111111111111111"b||rel(unm), 36); 215 stack -> temp(1) = lisp_static_vars_$prin1_atom; 216 call lisp_special_fns_$ncons; 217 call lisp_$apply; 218 stack_ptr = addr(stack -> temp(3)); 219 end; 220 end; 221 i = i + 1; 222 if i >= count then go to baktrace_nothing; /* done, return nil */ 223 end; 224 end; 225 end; 226 go to baktrace_nothing; /* reached base of stack, return nil */ 227 228 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/29/83 1542.2 lisp_baktrace_.pl1 >special_ldd>on>06/27/83>lisp_baktrace_.pl1 58 1 03/27/82 0437.1 lisp_atom_fmt.incl.pl1 >ldd>include>lisp_atom_fmt.incl.pl1 59 2 06/29/83 1425.3 lisp_name_codes.incl.pl1 >ldd>include>lisp_name_codes.incl.pl1 60 3 06/29/83 1425.3 lisp_stack_seg.incl.pl1 >ldd>include>lisp_stack_seg.incl.pl1 61 4 03/27/82 0437.0 lisp_ptr_fmt.incl.pl1 >ldd>include>lisp_ptr_fmt.incl.pl1 62 5 03/27/82 0437.0 lisp_cons_fmt.incl.pl1 >ldd>include>lisp_cons_fmt.incl.pl1 63 6 03/27/82 0437.0 lisp_stack_fmt.incl.pl1 >ldd>include>lisp_stack_fmt.incl.pl1 64 7 03/27/82 0437.0 lisp_common_vars.incl.pl1 >ldd>include>lisp_common_vars.incl.pl1 65 8 03/27/82 0437.0 lisp_nums.incl.pl1 >ldd>include>lisp_nums.incl.pl1 66 9 03/27/82 0436.9 lisp_unmkd_pdl.incl.pl1 >ldd>include>lisp_unmkd_pdl.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) Array internal static bit(9) initial unaligned dcl 4-17 Array36 internal static bit(36) initial dcl 4-17 Atomic internal static bit(9) initial unaligned dcl 4-17 Atomic36 internal static bit(36) initial dcl 4-17 Atsym internal static bit(9) initial unaligned dcl 4-17 Atsym36 constant bit(36) initial dcl 4-17 ref 197 Bigfix internal static bit(9) initial unaligned dcl 4-17 Bigfix36 internal static bit(36) initial dcl 4-17 Bignum internal static bit(9) initial unaligned dcl 4-17 Bignum36 internal static bit(36) initial dcl 4-17 Cons internal static bit(9) initial unaligned dcl 4-17 Cons36 internal static bit(36) initial dcl 4-17 File internal static bit(9) initial unaligned dcl 4-17 File36 internal static bit(36) initial dcl 4-17 Fixed internal static bit(9) initial unaligned dcl 4-17 Fixed36 constant bit(36) initial dcl 4-17 ref 109 144 Float internal static bit(9) initial unaligned dcl 4-17 Float36 internal static bit(36) initial dcl 4-17 NotConsOrAtsym36 internal static bit(36) initial dcl 4-17 Numeric internal static bit(9) initial unaligned dcl 4-17 Numeric36 internal static bit(36) initial dcl 4-17 String internal static bit(9) initial unaligned dcl 4-17 String36 internal static bit(36) initial dcl 4-17 Subr internal static bit(9) initial unaligned dcl 4-17 Subr36 internal static bit(36) initial dcl 4-17 SubrNumeric36 internal static bit(36) initial dcl 4-17 System_Subr internal static bit(9) initial unaligned dcl 4-17 System_Subr36 internal static bit(36) initial dcl 4-17 Uncollectable internal static bit(9) initial unaligned dcl 4-17 Undefined internal static bit(72) initial unaligned dcl 4-17 addr builtin function ref 91 98 99 102 107 107 122 144 156 175 187 202 205 206 210 213 214 218 addrel builtin function ref 81 85 121 147 array_atom defined fixed bin(71,0) dcl 7-6 atom based structure level 1 dcl 1-5 atom_double_words based structure level 1 dcl 1-5 atom_ptrs based structure level 1 dcl 1-5 baktrace 000007 constant entry external dcl 9 baktrace1 000017 constant entry external dcl 71 baktrace2 000030 constant entry external dcl 76 baktrace_00 000246 constant label dcl 162 set ref 135 baktrace_01 000311 constant label dcl 179 ref 165 166 169 baktrace_bad_pdl_ptr 000132 constant label dcl 119 ref 133 138 baktrace_nothing 000302 constant label dcl 173 ref 136 181 222 226 based_ptr based pointer dcl 4-16 ref 156 binary builtin function ref 99 binding_block based structure level 1 dcl 6-7 binding_top defined pointer dcl 7-6 bindings based structure array level 1 dcl 6-7 call_array_operator internal static bit(36) initial unaligned dcl 3-68 call_dead_array_operator internal static bit(36) initial unaligned dcl 3-68 car based fixed bin(71,0) level 2 dcl 5-5 ref 195 catch_frame defined pointer dcl 7-6 cons based structure level 1 dcl 5-5 cons_ptrs based structure level 1 dcl 5-5 cons_types based structure level 1 dcl 5-5 cons_types36 based structure level 1 dcl 5-22 consptr automatic pointer dcl 5-5 count 000116 automatic fixed bin(17,0) dcl 34 set ref 144* 222 dat1 1 based bit(18) level 2 packed unaligned dcl 9-7 ref 195 err_frame defined pointer dcl 7-6 err_recp defined pointer dcl 7-6 errcode based fixed bin(17,0) array dcl 9-7 set ref 124* 125* 148* 149* esw 000107 automatic fixed bin(17,0) dcl 34 set ref 68* 73* 78* 203 211 eval_frame defined pointer dcl 7-6 ref 106 164 first 000111 automatic bit(1) unaligned dcl 34 set ref 156* 160* 190 190* fixed builtin function ref 206 214 fixedb 1 based fixed bin(17,0) level 2 dcl 8-4 set ref 84 99* 109 109 113 144 206* 214* fixnum_fmt based structure level 1 dcl 8-4 fixnum_type constant bit(36) initial dcl 8-4 ref 98 205 213 flonum_fmt based structure level 1 dcl 8-4 flonum_type internal static bit(36) initial dcl 8-4 fn_CtoI internal static fixed bin(17,0) initial dcl 2-9 fn_ItoC internal static fixed bin(17,0) initial dcl 2-9 fn_abs internal static fixed bin(17,0) initial dcl 2-9 fn_add1 internal static fixed bin(17,0) initial dcl 2-9 fn_add1_fix internal static fixed bin(17,0) initial dcl 2-9 fn_add1_flo internal static fixed bin(17,0) initial dcl 2-9 fn_alarmclock internal static fixed bin(17,0) initial dcl 2-9 fn_allfiles internal static fixed bin(17,0) initial dcl 2-9 fn_alphalessp internal static fixed bin(17,0) initial dcl 2-9 fn_apply internal static fixed bin(17,0) initial dcl 2-9 fn_arg internal static fixed bin(17,0) initial dcl 2-9 fn_args internal static fixed bin(17,0) initial dcl 2-9 fn_array internal static fixed bin(17,0) initial dcl 2-9 fn_arraydims internal static fixed bin(17,0) initial dcl 2-9 fn_ascii internal static fixed bin(17,0) initial dcl 2-9 fn_atan internal static fixed bin(17,0) initial dcl 2-9 fn_baktrace constant fixed bin(17,0) initial dcl 2-9 ref 125 149 fn_bltarray internal static fixed bin(17,0) initial dcl 2-9 fn_boole internal static fixed bin(17,0) initial dcl 2-9 fn_boundp internal static fixed bin(17,0) initial dcl 2-9 fn_catch internal static fixed bin(17,0) initial dcl 2-9 fn_catenate internal static fixed bin(17,0) initial dcl 2-9 fn_charpos internal static fixed bin(17,0) initial dcl 2-9 fn_chrct internal static fixed bin(17,0) initial dcl 2-9 fn_clear_input internal static fixed bin(17,0) initial dcl 2-9 fn_cline internal static fixed bin(17,0) initial dcl 2-9 fn_close internal static fixed bin(17,0) initial dcl 2-9 fn_cos internal static fixed bin(17,0) initial dcl 2-9 fn_cursorpos internal static fixed bin(17,0) initial dcl 2-9 fn_defaultf internal static fixed bin(17,0) initial dcl 2-9 fn_definedp internal static fixed bin(17,0) initial dcl 2-9 fn_defsubr internal static fixed bin(17,0) initial dcl 2-9 fn_defun internal static fixed bin(17,0) initial dcl 2-9 fn_delete internal static fixed bin(17,0) initial dcl 2-9 fn_deletef internal static fixed bin(17,0) initial dcl 2-9 fn_delq internal static fixed bin(17,0) initial dcl 2-9 fn_diff_fix internal static fixed bin(17,0) initial dcl 2-9 fn_diff_flo internal static fixed bin(17,0) initial dcl 2-9 fn_difference internal static fixed bin(17,0) initial dcl 2-9 fn_displace internal static fixed bin(17,0) initial dcl 2-9 fn_do internal static fixed bin(17,0) initial dcl 2-9 fn_dumparrays internal static fixed bin(17,0) initial dcl 2-9 fn_endpagefn internal static fixed bin(17,0) initial dcl 2-9 fn_eoffn internal static fixed bin(17,0) initial dcl 2-9 fn_eql internal static fixed bin(17,0) initial dcl 2-9 fn_errframe internal static fixed bin(17,0) initial dcl 2-9 fn_errprint internal static fixed bin(17,0) initial dcl 2-9 fn_errset internal static fixed bin(17,0) initial dcl 2-9 fn_eval internal static fixed bin(17,0) initial dcl 2-9 fn_eval_when internal static fixed bin(17,0) initial dcl 2-9 fn_evalframe internal static fixed bin(17,0) initial dcl 2-9 fn_exp internal static fixed bin(17,0) initial dcl 2-9 fn_expt internal static fixed bin(17,0) initial dcl 2-9 fn_expt_fix internal static fixed bin(17,0) initial dcl 2-9 fn_expt_flo internal static fixed bin(17,0) initial dcl 2-9 fn_filepos internal static fixed bin(17,0) initial dcl 2-9 fn_fillarray internal static fixed bin(17,0) initial dcl 2-9 fn_fix internal static fixed bin(17,0) initial dcl 2-9 fn_float internal static fixed bin(17,0) initial dcl 2-9 fn_force_output internal static fixed bin(17,0) initial dcl 2-9 fn_freturn internal static fixed bin(17,0) initial dcl 2-9 fn_fsc internal static fixed bin(17,0) initial dcl 2-9 fn_gcd internal static fixed bin(17,0) initial dcl 2-9 fn_gensym internal static fixed bin(17,0) initial dcl 2-9 fn_get internal static fixed bin(17,0) initial dcl 2-9 fn_get_pname internal static fixed bin(17,0) initial dcl 2-9 fn_getchar internal static fixed bin(17,0) initial dcl 2-9 fn_getl internal static fixed bin(17,0) initial dcl 2-9 fn_greaterp internal static fixed bin(17,0) initial dcl 2-9 fn_gt internal static fixed bin(17,0) initial dcl 2-9 fn_haipart internal static fixed bin(17,0) initial dcl 2-9 fn_haulong internal static fixed bin(17,0) initial dcl 2-9 fn_ifix internal static fixed bin(17,0) initial dcl 2-9 fn_in internal static fixed bin(17,0) initial dcl 2-9 fn_includef internal static fixed bin(17,0) initial dcl 2-9 fn_index internal static fixed bin(17,0) initial dcl 2-9 fn_inpush internal static fixed bin(17,0) initial dcl 2-9 fn_isqrt internal static fixed bin(17,0) initial dcl 2-9 fn_lessp internal static fixed bin(17,0) initial dcl 2-9 fn_linel internal static fixed bin(17,0) initial dcl 2-9 fn_linenum internal static fixed bin(17,0) initial dcl 2-9 fn_listarray internal static fixed bin(17,0) initial dcl 2-9 fn_listify internal static fixed bin(17,0) initial dcl 2-9 fn_loadarrays internal static fixed bin(17,0) initial dcl 2-9 fn_log internal static fixed bin(17,0) initial dcl 2-9 fn_ls internal static fixed bin(17,0) initial dcl 2-9 fn_lsh internal static fixed bin(17,0) initial dcl 2-9 fn_make_atom internal static fixed bin(17,0) initial dcl 2-9 fn_makunbound internal static fixed bin(17,0) initial dcl 2-9 fn_mapatoms internal static fixed bin(17,0) initial dcl 2-9 fn_max internal static fixed bin(17,0) initial dcl 2-9 fn_mergef internal static fixed bin(17,0) initial dcl 2-9 fn_min internal static fixed bin(17,0) initial dcl 2-9 fn_minus internal static fixed bin(17,0) initial dcl 2-9 fn_minusp internal static fixed bin(17,0) initial dcl 2-9 fn_namelist internal static fixed bin(17,0) initial dcl 2-9 fn_names internal static fixed bin(17,0) initial dcl 2-9 fn_namestring internal static fixed bin(17,0) initial dcl 2-9 fn_nointerrupt internal static fixed bin(17,0) initial dcl 2-9 fn_nth internal static fixed bin(17,0) initial dcl 2-9 fn_nthcdr internal static fixed bin(17,0) initial dcl 2-9 fn_oddp internal static fixed bin(17,0) initial dcl 2-9 fn_open internal static fixed bin(17,0) initial dcl 2-9 fn_opena internal static fixed bin(17,0) initial dcl 2-9 fn_openi internal static fixed bin(17,0) initial dcl 2-9 fn_openo internal static fixed bin(17,0) initial dcl 2-9 fn_out internal static fixed bin(17,0) initial dcl 2-9 fn_pagel internal static fixed bin(17,0) initial dcl 2-9 fn_pagenum internal static fixed bin(17,0) initial dcl 2-9 fn_plus internal static fixed bin(17,0) initial dcl 2-9 fn_plus_fix internal static fixed bin(17,0) initial dcl 2-9 fn_plus_flo internal static fixed bin(17,0) initial dcl 2-9 fn_plusp internal static fixed bin(17,0) initial dcl 2-9 fn_prin1 internal static fixed bin(17,0) initial dcl 2-9 fn_princ internal static fixed bin(17,0) initial dcl 2-9 fn_print internal static fixed bin(17,0) initial dcl 2-9 fn_prog internal static fixed bin(17,0) initial dcl 2-9 fn_progv internal static fixed bin(17,0) initial dcl 2-9 fn_putprop internal static fixed bin(17,0) initial dcl 2-9 fn_quot_fix internal static fixed bin(17,0) initial dcl 2-9 fn_quot_flo internal static fixed bin(17,0) initial dcl 2-9 fn_quotient internal static fixed bin(17,0) initial dcl 2-9 fn_random internal static fixed bin(17,0) initial dcl 2-9 fn_read internal static fixed bin(17,0) initial dcl 2-9 fn_read_from_string internal static fixed bin(17,0) initial dcl 2-9 fn_readch internal static fixed bin(17,0) initial dcl 2-9 fn_readstring internal static fixed bin(17,0) initial dcl 2-9 fn_remainder internal static fixed bin(17,0) initial dcl 2-9 fn_remprop internal static fixed bin(17,0) initial dcl 2-9 fn_rename internal static fixed bin(17,0) initial dcl 2-9 fn_rot internal static fixed bin(17,0) initial dcl 2-9 fn_rplaca internal static fixed bin(17,0) initial dcl 2-9 fn_samepnamep internal static fixed bin(17,0) initial dcl 2-9 fn_save internal static fixed bin(17,0) initial dcl 2-9 fn_set internal static fixed bin(17,0) initial dcl 2-9 fn_setarg internal static fixed bin(17,0) initial dcl 2-9 fn_setq internal static fixed bin(17,0) initial dcl 2-9 fn_setsyntax internal static fixed bin(17,0) initial dcl 2-9 fn_shortnamestring internal static fixed bin(17,0) initial dcl 2-9 fn_signp internal static fixed bin(17,0) initial dcl 2-9 fn_sin internal static fixed bin(17,0) initial dcl 2-9 fn_sleep internal static fixed bin(17,0) initial dcl 2-9 fn_sort internal static fixed bin(17,0) initial dcl 2-9 fn_sortcar internal static fixed bin(17,0) initial dcl 2-9 fn_sqrt internal static fixed bin(17,0) initial dcl 2-9 fn_sstatus internal static fixed bin(17,0) initial dcl 2-9 fn_star_array internal static fixed bin(17,0) initial dcl 2-9 fn_star_rearray internal static fixed bin(17,0) initial dcl 2-9 fn_star_sstatus internal static fixed bin(17,0) initial dcl 2-9 fn_star_status internal static fixed bin(17,0) initial dcl 2-9 fn_status internal static fixed bin(17,0) initial dcl 2-9 fn_store internal static fixed bin(17,0) initial dcl 2-9 fn_stringlength internal static fixed bin(17,0) initial dcl 2-9 fn_sub1 internal static fixed bin(17,0) initial dcl 2-9 fn_sub1_fix internal static fixed bin(17,0) initial dcl 2-9 fn_sub1_flo internal static fixed bin(17,0) initial dcl 2-9 fn_substr internal static fixed bin(17,0) initial dcl 2-9 fn_sxhash internal static fixed bin(17,0) initial dcl 2-9 fn_sysp internal static fixed bin(17,0) initial dcl 2-9 fn_throw internal static fixed bin(17,0) initial dcl 2-9 fn_times internal static fixed bin(17,0) initial dcl 2-9 fn_times_fix internal static fixed bin(17,0) initial dcl 2-9 fn_times_flo internal static fixed bin(17,0) initial dcl 2-9 fn_truename internal static fixed bin(17,0) initial dcl 2-9 fn_tyi internal static fixed bin(17,0) initial dcl 2-9 fn_tyipeek internal static fixed bin(17,0) initial dcl 2-9 fn_tyo internal static fixed bin(17,0) initial dcl 2-9 fn_unwind_protect internal static fixed bin(17,0) initial dcl 2-9 fn_zerop internal static fixed bin(17,0) initial dcl 2-9 frame based structure level 1 dcl 9-7 frame_ptrs defined pointer array dcl 9-16 i 000117 automatic fixed bin(17,0) dcl 34 set ref 188* 221* 221 222 join 000040 constant label dcl 81 ref 69 74 79 kludge_fixed_bin 000113 automatic fixed bin(18,0) dcl 34 set ref 113* 114 lisp_$apply 000016 constant entry external dcl 34 ref 201 209 217 lisp_error_ 000022 constant entry external dcl 34 ref 126 150 lisp_error_table_$bad_arg_correctable 000026 external static fixed bin(35,0) dcl 56 ref 148 lisp_error_table_$not_pdl_ptr 000024 external static fixed bin(35,0) dcl 56 ref 124 lisp_print_$type_string 000012 constant entry external dcl 34 ref 204 212 lisp_ptr based structure level 1 dcl 4-17 lisp_ptr_type based bit(36) dcl 4-17 lisp_special_fns_$ncons 000020 constant entry external dcl 34 ref 200 208 216 lisp_static_vars_$array_atom external static fixed bin(71,0) dcl 7-6 lisp_static_vars_$binding_top external static pointer dcl 7-6 lisp_static_vars_$catch_frame external static pointer dcl 7-6 lisp_static_vars_$err_frame external static pointer dcl 7-6 lisp_static_vars_$err_recp external static pointer dcl 7-6 lisp_static_vars_$eval_frame 000030 external static pointer dcl 7-6 ref 106 106 164 164 lisp_static_vars_$frame_ptrs external static pointer array dcl 9-16 lisp_static_vars_$iochan_list external static pointer dcl 7-6 lisp_static_vars_$lisp_static_vars_ external static structure level 1 unaligned dcl 7-6 lisp_static_vars_$nil 000036 external static fixed bin(71,0) dcl 7-6 ref 90 90 105 105 156 156 156 156 173 173 lisp_static_vars_$obarray external static fixed bin(71,0) dcl 7-6 lisp_static_vars_$prin1_atom 000014 external static fixed bin(71,0) dcl 34 ref 207 215 lisp_static_vars_$print_atom 000010 external static fixed bin(71,0) dcl 34 ref 199 lisp_static_vars_$prog_frame external static pointer dcl 7-6 lisp_static_vars_$stack_ptr 000032 external static pointer dcl 7-6 set ref 81 81 91* 91 102* 102 122* 122 175* 175 187* 187 192 192 202* 202 210* 210 218* 218 lisp_static_vars_$star_rset 000040 external static fixed bin(71,0) dcl 7-45 set ref 156 lisp_static_vars_$t_atom external static fixed bin(71,0) dcl 7-6 lisp_static_vars_$top_level external static label variable dcl 7-6 lisp_static_vars_$tty_input_chan external static pointer dcl 7-6 lisp_static_vars_$tty_output_chan external static pointer dcl 7-6 lisp_static_vars_$unmkd_ptr 000034 external static pointer dcl 7-6 set ref 119 119 121* 121 133 133 138 138 146 146 147* 147 lisp_static_vars_$unwp_frame external static pointer dcl 7-6 lisp_static_vars_$user_intr_array external static fixed bin(71,0) array dcl 7-45 loc 000112 automatic bit(18) unaligned dcl 34 set ref 106* 107 107 107 109* 114* 133 135 138 165 166 loc_ovly based structure level 1 packed unaligned dcl 34 locfb based fixed bin(17,0) level 2 packed unaligned dcl 34 set ref 107* 107 nargs 000110 automatic fixed bin(17,0) dcl 34 set ref 84* 85 86 92* 94 nframeptrs internal static fixed bin(17,0) initial dcl 9-16 nil defined fixed bin(71,0) dcl 7-6 ref 90 105 156 156 173 nil_ptr based pointer dcl 7-6 null builtin function ref 162 181 obarray defined fixed bin(71,0) dcl 7-6 pdl_ptr_types36 based structure array level 1 dcl 6-7 posf 000106 automatic bit(1) unaligned dcl 34 set ref 104* 115* 135 166 169 179 prev_frame based bit(18) level 2 packed unaligned dcl 9-7 ref 168 225 prog_frame defined pointer dcl 7-6 ptr builtin function ref 138 168 192 225 push_down_list_ptr_types based structure array level 1 dcl 6-7 rel builtin function ref 106 133 138 164 165 166 189 214 retry 000066 constant label dcl 102 ref 128 151 st 000114 automatic pointer dcl 34 set ref 192* 193 stack 000100 automatic pointer dcl 34 set ref 81* 84 85* 85 90 91 98 99 102 105 109 109 109 113 122 123 123 127 127 144 144 156 173 175 187 193 195 195 197 199 202 205 206 207 210 213 214 215 218 stack_ptr defined pointer dcl 7-6 in procedure "baktrace" set ref 81 91* 102* 122* 175* 187* 192 202* 210* 218* stack_ptr 0(18) based bit(18) level 2 in structure "frame" packed unaligned dcl 9-7 in procedure "baktrace" ref 192 206 stack_seg based structure level 1 dcl 3-5 star_rset defined fixed bin(71,0) dcl 7-45 substr builtin function ref 109 114 t_atom defined fixed bin(71,0) dcl 7-6 t_atom_ptr based pointer dcl 7-6 temp based fixed bin(71,0) array dcl 6-7 set ref 90* 91 98 99 102 105 122 123* 123 127* 127 144 156 173* 175 187 193* 193 195* 199* 202 205 206 207* 210 213 214 215* 218 temp_ptr based pointer array dcl 6-7 ref 195 temp_type36 based bit(36) array level 2 dcl 6-7 ref 109 144 197 tty_input_chan defined pointer dcl 7-6 tty_output_chan defined pointer dcl 7-6 type_info based bit(36) level 2 dcl 8-4 set ref 98* 205* 213* unm 000102 automatic pointer dcl 34 set ref 119* 121 124 125 146* 147 148 149 164* 164* 165 166 167* 168 168 182* 189* 189 189* 192 195 206 214* 225 225 unm2 000104 automatic pointer dcl 34 set ref 162* 167* 181 182 unmkd_ptr defined pointer dcl 7-6 set ref 119 121* 133 138 146 147* unmkd_stack_bottom 2 based pointer level 2 dcl 3-5 ref 138 unspec builtin function ref 109 114 unwp_frame defined pointer dcl 7-6 user_intr_array defined fixed bin(71,0) array dcl 7-45 value based fixed bin(71,0) level 2 dcl 1-5 ref 156 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 736 1000 531 746 Length 1376 531 42 361 204 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME baktrace 88 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME baktrace 000100 stack baktrace 000102 unm baktrace 000104 unm2 baktrace 000106 posf baktrace 000107 esw baktrace 000110 nargs baktrace 000111 first baktrace 000112 loc baktrace 000113 kludge_fixed_bin baktrace 000114 st baktrace 000116 count baktrace 000117 i baktrace THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. lisp_$apply lisp_error_ lisp_print_$type_string lisp_special_fns_$ncons THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. lisp_error_table_$bad_arg_correctable lisp_error_table_$not_pdl_ptr lisp_static_vars_$eval_frame lisp_static_vars_$nil lisp_static_vars_$prin1_atom lisp_static_vars_$print_atom lisp_static_vars_$stack_ptr lisp_static_vars_$star_rset lisp_static_vars_$unmkd_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000006 68 000014 69 000015 71 000016 73 000024 74 000026 76 000027 78 000035 79 000037 81 000040 84 000045 85 000047 86 000051 90 000052 91 000054 92 000056 94 000060 98 000062 99 000064 102 000066 104 000072 105 000073 106 000076 107 000102 108 000110 109 000111 113 000122 114 000124 115 000127 116 000131 119 000132 121 000136 122 000141 123 000144 124 000146 125 000150 126 000152 127 000156 128 000161 133 000162 135 000171 136 000176 138 000177 144 000206 146 000214 147 000217 148 000222 149 000224 150 000226 151 000232 156 000233 160 000245 162 000246 164 000250 165 000256 166 000262 167 000270 168 000272 169 000277 173 000302 175 000305 176 000310 179 000311 181 000313 182 000320 187 000322 188 000326 189 000327 190 000334 192 000340 193 000347 195 000352 197 000361 199 000364 200 000366 201 000372 202 000377 203 000403 204 000405 205 000417 206 000422 207 000427 208 000432 209 000436 210 000443 211 000447 212 000452 213 000464 214 000467 215 000474 216 000477 217 000503 218 000510 221 000514 222 000515 225 000521 226 000527 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved