COMPILATION LISTING OF SEGMENT lisp_print_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1126.08_Tue_mdt Options: optimize map 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1973 * 4* * * 5* ************************************************************** */ 6 print: proc; 7 8 9 /* This segment contains all of the LISP formatting and output 10* routines. Coded 6/7/72, by D. Reed */ 11 /* changed to detect ctrlr_no_uwrite error, 9 Sep 72 by DAM */ 12 /* changed to not insert extra newlines on output to file, DAM 1 Nov 72 13* and to format floating point numbers using danb's convert_sfl_ instead of the 14* char builtin */ 15 /* bignums added, dam, 13 jan 73 */ 16 /* changed for (status _) and (status terpri), dam, 12 FEB 1973 */ 17 /* changed for new I/O system, 22 Mar 1973 by DAM */ 18 /* status_terpri, status_underline moved into readtable, 7 Apr 73 by DAM */ 19 /* modified for new syntax bits, new iochan format 73.10.24 by DAM */ 20 /* Modified 74.03.16 by DAM to use EIS, to support abbreviation, 21* and to be more efficient and easier to read */ 22 /* modified 74.05.16 by DAM for new array stuff */ 23 /* modified 74.09.21 by DAM to accept t for tty as well as nil */ 24 /* modified 74.12.09 by DAM for external arrays */ 25 26 27 /* FLAGS */ 28 29 dcl (printing, /* 1 => output to files, 0 => explode */ 30 slashing, /* 1 => slash special characters, 0 => output as is */ 31 begin_with_nl, /* 1 => is print rather than prin1 or princ, need NL at beginning */ 32 dest1, /* stack -> temp(2) is a file */ 33 destl, /* stack -> temp(2) is a list of files */ 34 explicit_tty, /* (print foo t) flag - ignore ^w */ 35 send_to_tty, /* output should go to tty */ 36 send_to_files, /* output should go to one or more files */ 37 abbreving_flag, /* 1=> this buffer is sharp sign or dot dot dot */ 38 abbreved_out_flag, /* 1=> this buffer shouldn't go to abbreving destinations */ 39 someone_gets_abbreved, /* 1=> there is some abbreviated destination */ 40 someone_gets_unabbreved, /* 1=> there is some unabbreviated destination */ 41 abbrev_on_files, /* 1=> output to files should be abbreviated, 42* 0=> only output to terminal should be abbreviated */ 43 check_prinlevel, 44 check_prinlength, 45 explodensw, 46 flatsw) bit(1) aligned, 47 code fixed bin, 48 nargs fixed bin, 49 newline char(1) static init(" 50 "), 51 space char(1) static init(" "), 52 quote char(1) static init(""""), 53 left_paren char(1) static init("("), 54 right_paren char(1) static init(")"), 55 sharp_sign char(1) static init("#"), 56 dot_dot_dot char(3) static init("..."), 57 sharp_sign_buffer char(1) varying static init("#"), 58 dot_dot_dot_buffer char(4) varying static init("...)"), 59 dot char(1) static init("."), 60 lisp_io_control_$end_of_block entry(ptr, fixed bin(71), fixed bin), 61 lisp_io_control_$fix_not_ok_iochan entry(ptr, bit(1) aligned) returns (bit(1) aligned), 62 lisp_io_fns_$namestring entry, 63 i fixed bin, 64 j fixed bin, 65 idx fixed bin, 66 Ch1 char(1) aligned, 67 Ch2 char(1) aligned, 68 Ch1_syntax bit(27) aligned, 69 Ch2_syntax bit(27) aligned, 70 nelemt fixed bin, 71 cruft fixed bin(71), 72 errcode(2) fixed bin based aligned, /* structure for lisp_error_ */ 73 len fixed bin, 74 lisp_static_vars_$outfiles fixed bin(71) aligned external, 75 outfiles fixed bin(71) def (lisp_static_vars_$outfiles), 76 lisp_error_ entry, 77 lisp_get_atom_ entry(char(*) aligned, fixed bin(71)), 78 lisp_$apply entry, 79 lisp_property_fns_$get entry, 80 io_buffer char(262143) based aligned; 81 82 /* declarations for abbreviation feature */ 83 84 dcl (prinlevel, prinlength) fixed bin(35), 85 (lisp_static_vars_$prinlevel, lisp_static_vars_$prinlength) external pointer, 86 curlevel fixed bin(35), 87 curlength fixed bin(35); 88 89 /* structure pushed on by pdl by recursion to print a list */ 90 91 dcl 1 list_save aligned based structure, 92 2 saved_reti fixed bin, 93 2 saved_curlength fixed bin(35); 94 95 /* SPECIAL CHARACTERS (format effectors) */ 96 97 dcl backspace char(1) static init(""), 98 tab char(1) static init(" "), 99 carriage_return char(1) static init(" "), 100 newpage char(1) static init(" "), 101 format_effectors char(5) static init(" 102 "); /* BS, HT, NL, CR, NP */ 103 104 105 /* STUFF IN STACKS */ 106 107 dcl stack ptr, /* -> lowest stuff in stack (initially args). 108* stack -> temp(1) is data to output. 109* later is explode list or flatsize count. 110* stack -> temp(2) is file or list of files (see dest1, destl flags.) */ 111 tstack ptr, /* -> top four cells in stack. 112* tstack -> temp(1) = data being printed. 113* tstack -> temp(2) = I/O temporary. 114* tstack -> temp(3) = file outputting on (in I/O routine) */ 115 the_array_pointer pointer, 116 unm ptr, /* -> stuff on unmarked pdl */ 117 unmp ptr, /* -> special stuff pushed on unmarked pdl for error */ 118 bufp pointer, /* -> output buffer in unmarked pdl */ 119 saved_bufp pointer, /* saved copy of bufp (used by abbrev hacks) */ 120 buffer char(262143) varying based(bufp), /* output buffer */ 121 /* note this can't be 262144 long or formline_ thinks it is zero */ 122 bufmaxl fixed bin(18), /* number of chars in buffer protected by unmkd_ptr. 123* must be an odd multiple of 4 (double word alignment) */ 124 bufminl fixed bin(18) static init(76); /* minimum value of bufmaxl */ 125 126 dcl type_field bit(36) aligned, 127 reti fixed bin, /* return index */ 128 radix fixed bin, /* output radix for fixed point numbers */ 129 tempd fixed bin(40), /* enough precision to handle worst case */ 130 numbuff(36) char(1) unaligned, /* char array for formatting numbers */ 131 lisp_special_fns_$cons entry, 132 lisp_list_utils_$nreverse entry, 133 lisp_alloc_ entry(fixed bin, fixed bin(71) aligned), 134 (null, addr, addrel, substr, collate, divide, hbound, lbound, mod, binary, 135 char, length, unspec, size, string, before, search, index) builtin; 136 137 dcl 1 a_lisp_datum aligned based structure, 138 2 (word1, word2) bit(36), 139 140 1 overlay_on_lisp_datum aligned based, 141 2 octal_byte(24) bit(3) unaligned; 142 143 /* dcl for bignums */ 144 145 dcl left_arrow fixed bin, /* for output of 4000000 in form 4_18. */ 146 bit36 bit(36) aligned, 147 DigitSet char(36) static init("0123456789abcdefghijklmnopqrstuvwxyz"), 148 dpw fixed bin, 149 wd fixed bin (35), 150 lisp_bignums_$bnprint entry, 151 1 bnprintargs aligned based (unm), /* argument list for lisp_bignums_$bnprint, on unmkd pdl */ 152 2 array ptr, /* ptr to array of fixnums (return) */ 153 2 size fixed bin, /* size of array of fixnums (return) */ 154 2 rad fixed bin(35), /* big radix */ 155 bndigs (1:bnprintargs.size) fixed bin(35) aligned based(bnprintargs.array); /* the array of digits in base bigradix */ 156 1 1 /* Include file lisp_bignum_fmt.incl.pl1 */ 1 2 1 3 dcl 1 lisp_bignum based aligned, /* structure describing lisp big number */ 1 4 2 sign bit(18) unaligned, /* either all ones, or all zeros */ 1 5 2 prec fixed bin(17) unaligned, /* number of words in this number's precision */ 1 6 2 words(0 refer(lisp_bignum.prec)) fixed bin(35); /* 35 significant bits per word. */ 1 7 1 8 /* End include file lisp_bognum_fmt.incl.pl1 */ 157 2 1 2 2 /* Include file lisp_bignum_io_data.incl.pl1 2 3* 13 Jan 1973, dam 2 4* This files defines constant arrays needed by the bignum 2 5* reader and printer. 2 6* digsperwd is the maximum number of digits that can fit in 2 7* 35 bits, indexed by the radix. 2 8* bigradix is the radix**digsperwd, indexed by the radix 2 9* It is used as the multiplier for converting an array 2 10* of small nums into a bignum, or the divisor for converting 2 11* a bignum into an array of small nums */ 2 12 2 13 dcl digsperwd (2:36) static fixed binary initial ( 2 14 34, 22, 17, 15, 13, 12, 11, 11, 10, 2 15 10, 9, 9, 9, 8, 8, 8, 8, 8, 8, 2 16 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2 17 7, 6, 6, 6, 6, 6), 2 18 bigradix(2:36) fixed binary(35) static initial ( 2 19 17179869184, /* 2**34 */ 2 20 31381059609, /* 3**22 */ 2 21 17179869184, /* 4**17 */ 2 22 30517578125, /* 5**15 */ 2 23 13060694016, /* 6**13 */ 2 24 13841287201, /* 7**12 */ 2 25 8589934592, /* 8**11 */ 2 26 31381059609, /* 9**11 */ 2 27 10000000000, /* 10**10 */ 2 28 25937424601, /* 11**10 */ 2 29 5159780352, /* 12**9 */ 2 30 10604499373, /* 13**9 */ 2 31 20661046784, /* 14**9 */ 2 32 2562890625, /* 15**8 */ 2 33 4294967296, /* 16**8 */ 2 34 6975757441, /* 17**8 */ 2 35 11019960576, /* 18**8 */ 2 36 16983563041, /* 19**8 */ 2 37 25600000000, /* 20**8 */ 2 38 1801088541, /* 21**7 */ 2 39 2494357888, /* 22**7 */ 2 40 3404825447, /* 23**7 */ 2 41 4586471424, /* 24**7 */ 2 42 6103515625, /* 25**7 */ 2 43 8031810176, /* 26**7 */ 2 44 10460353203, /* 27**7 */ 2 45 13492928512, /* 28**7 */ 2 46 17249876309, /* 29**7 */ 2 47 21870000000, /* 30**7 */ 2 48 27512614111, /* 31**7 */ 2 49 1073741824, /* 32**6 */ 2 50 1291467969, /* 33**6 */ 2 51 1544804416, /* 34**6 */ 2 52 1838265625, /* 35**6 */ 2 53 2176782336 /* 36**6 */ 2 54 ); 2 55 /* End include file lisp_bignum_io_data.incl.pl1 */ 158 3 1 /* Include file lisp_ptr_fmt.incl.pl1; 3 2* describes the format of lisp pointers as 3 3* a bit string overlay on the double word ITS pair 3 4* which allows lisp to access some unused bits in 3 5* the standard ITS pointer format. It should be noted that 3 6* this is somewhat of a kludge, since 3 7* it is quite machine dependent. However, to store type 3 8* fields in the pointer, saves 2 words in each cons, 3 9* plus some efficiency problems. 3 10* 3 11* D.Reed 4/1/71 */ 3 12 /* modified to move type field to other half of ptr */ 3 13 /* D.Reed 5/31/72 */ 3 14 3 15 3 16 dcl based_ptr ptr aligned based; /* for dealing with lisp values as pointers */ 3 17 dcl lisp_ptr_type bit(36) aligned based, /* for more efficient checking of type bits */ 3 18 1 lisp_ptr based aligned, /* structure of double word pointer in lisp */ 3 19 2 segno bit(18) unaligned, /* segment number pointed to by pointer */ 3 20 2 ringnum bit(3) unaligned, /* ring mumber for validation */ 3 21 2 type bit(9) unaligned, /* type field */ 3 22 2 itsmod bit(6) unaligned, 3 23 2 offset fixed bin(17) unaligned, /* offset in segment of object pointed to */ 3 24 2 chain bit(18) unaligned, /* normally 0, but may be set to chain pointers together */ 3 25 3 26 /* manifest constant strings for testing above type field */ 3 27 3 28 ( 3 29 Cons init("000000000"b), /* a pointer to a list has a zero type field */ 3 30 Fixed init("100000000"b), /* a fixed point number, stored in second word of the ptr */ 3 31 Float init("010000000"b), /* a floating number, also stored in the second word of the ptr */ 3 32 Atsym init("001000000"b), /* this bit on means a ptr to an atomic symbol */ 3 33 Atomic init("111111111"b), /* any bit on means an atomic data type */ 3 34 Bignum init("000001000"b), /* a multiple-precision number */ 3 35 Bigfix init("000001000"b), /* a fixed point bignum (only kind for now) */ 3 36 Numeric init("110000000"b), /* either type immediate number. Both bits on 3 37* means a special internal uncollectable weird object */ 3 38 Uncollectable init("110000000"b), /* not looked through by garbage collector */ 3 39 String init("000100000"b), /* pointer to lisp character string - length word, chars */ 3 40 Subr init("000010000"b), /* pointer to compiled (or builtin) subroutine (linkage) code */ 3 41 System_Subr init("000000100"b), /* Subr bit must be on too, indicates ptr into lisp_subr_tv_ */ 3 42 Array init("000000010"b), /* Subr bit must be on too, indicates ptr to a lisp array */ 3 43 File init("000000001"b) /* pointer to a file object (iochan block) */ 3 44 ) bit(9) static, 3 45 3 46 /* 36 bit manifest constant strings for testing lisp_ptr_type */ 3 47 3 48 3 49 ( 3 50 Cons36 init("000000000000000000000000000000"b), 3 51 Fixed36 init("000000000000000000000100000000"b), 3 52 Float36 init("000000000000000000000010000000"b), 3 53 Atsym36 init("000000000000000000000001000000"b), 3 54 Atomic36 init("000000000000000000000111111100"b), 3 55 Bignum36 init("000000000000000000000000001000"b), 3 56 System_Subr36 3 57 init("000000000000000000000000000100"b), 3 58 Bigfix36 init("000000000000000000000000001000"b), 3 59 Numeric36 init("000000000000000000000110000000"b), /* does not check for bignum */ 3 60 NotConsOrAtsym36 3 61 init("000000000000000000000110111111"b), 3 62 SubrNumeric36 3 63 init("000000000000000000000110010000"b), /* used in garbage collector, for quick check */ 3 64 String36 init("000000000000000000000000100000"b), 3 65 Subr36 init("000000000000000000000000010000"b), 3 66 File36 init("000000000000000000000000000001"b), 3 67 Array36 init("000000000000000000000000000010"b)) bit(36) aligned static, 3 68 3 69 /* undefined pointer value is double word of zeros */ 3 70 3 71 Undefined bit(72) static init(""b); 3 72 3 73 /* end of include file lisp_ptr_fmt.incl.pl1 */ 159 4 1 4 2 /* BEGIN INCLUDE FILE lisp_name_codes.incl.pl1 */ 4 3 4 4 /* These are codes for the names of functions which are stored into ab|-1,x7 before 4 5* calling lisp_error_ for a bad_argument or bad_arg_correctable error. They 4 6* are used so that the name of the function which is rejecting its argument 4 7* can be printed. Please note that all these codes are negative. */ 4 8 4 9 dcl ( 4 10 fn_do init (-10), 4 11 fn_arg init (-11), 4 12 fn_setarg init (-12), 4 13 fn_status init (-13), 4 14 fn_sstatus init (-14), 4 15 fn_errprint init (-15), 4 16 fn_errframe init (-16), 4 17 fn_evalframe init (-17), 4 18 fn_defaultf init (-18), 4 19 fn_tyo init (-22), 4 20 fn_ascii init (-23), 4 21 fn_rplaca init (-24), 4 22 fn_definedp init (-25), 4 23 fn_setq init (-26), 4 24 fn_set init (-27), 4 25 fn_delete init (-28), 4 26 fn_delq init (-29), 4 27 fn_stringlength init (-30), 4 28 fn_catenate init (-31), 4 29 fn_array init (-32), 4 30 fn_substr init (-33), 4 31 fn_index init (-34), 4 32 fn_get_pname init (-35), 4 33 fn_make_atom init (-36), 4 34 fn_ItoC init (-37), 4 35 fn_CtoI init (-38), 4 36 fn_defsubr init (-39), 4 37 fn_star_array init (-40), 4 38 fn_args init (-41), 4 39 fn_sysp init (-42), 4 40 fn_get init (-43), 4 41 fn_getl init (-44), 4 42 fn_putprop init (-45), 4 43 fn_remprop init (-46), 4 44 fn_save init (-47), 4 45 fn_add1 init (-48), 4 46 fn_sub1 init (-49), 4 47 fn_greaterp init (-50), 4 48 fn_lessp init (-51), 4 49 fn_minus init (-52), 4 50 fn_plus init (-53), 4 51 fn_times init (-54), 4 52 fn_difference init (-55), 4 53 fn_quotient init (-56), 4 54 fn_abs init (-57), 4 55 fn_expt init (-58), 4 56 fn_boole init (-59), 4 57 fn_rot init (-60), 4 58 fn_lsh init (-61), 4 59 fn_signp init (-62), 4 60 fn_fix init (-63), 4 61 fn_float init (-64), 4 62 fn_remainder init (-65), 4 63 fn_max init (-66), 4 64 fn_min init (-67), 4 65 fn_add1_fix init (-68), 4 66 fn_add1_flo init (-69), 4 67 fn_sub1_fix init (-70), 4 68 fn_sub1_flo init (-71), 4 69 fn_plus_fix init (-72), 4 70 fn_plus_flo init (-73), 4 71 fn_times_fix init (-74), 4 72 fn_times_flo init (-75), 4 73 fn_diff_fix init (-76), 4 74 fn_diff_flo init (-77), 4 75 fn_quot_fix init (-78), 4 76 fn_quot_flo init (-79), 4 77 fn_eval init (-80), 4 78 fn_apply init (-81), 4 79 fn_prog init (-82), 4 80 fn_errset init (-83), 4 81 fn_catch init (-84), 4 82 fn_throw init (-85), 4 83 fn_store init (-86), 4 84 fn_defun init (-87), 4 85 fn_baktrace init (-88), 4 86 fn_bltarray init (-89), 4 87 fn_star_rearray init (-90), 4 88 fn_gensym init (-91), 4 89 fn_makunbound init (-92), 4 90 fn_boundp init (-93), 4 91 fn_star_status init (-94), 4 92 fn_star_sstatus init (-95), 4 93 fn_freturn init (-96), 4 94 fn_cos init (-97), 4 95 fn_sin init (-98), 4 96 fn_exp init (-99), 4 97 fn_log init (-100), 4 98 fn_sqrt init (-101), 4 99 fn_isqrt init (-102), 4 100 fn_atan init (-103), 4 101 fn_sleep init (-104), 4 102 fn_oddp init (-105), 4 103 fn_tyipeek init (-106), 4 104 fn_alarmclock init (-107), 4 105 fn_plusp init (-108), 4 106 fn_minusp init (-109), 4 107 fn_ls init (-110), 4 108 fn_eql init (-111), 4 109 fn_gt init (-112), 4 110 fn_alphalessp init (-113), 4 111 fn_samepnamep init (-114), 4 112 fn_getchar init (-115), 4 113 fn_opena init (-116), 4 114 fn_sxhash init (-117), 4 115 fn_gcd init (-118), 4 116 fn_allfiles init (-119), 4 117 fn_chrct init (-120), 4 118 fn_close init (-121), 4 119 fn_deletef init (-122), 4 120 fn_eoffn init (-123), 4 121 fn_filepos init (-124), 4 122 fn_inpush init (-125), 4 123 fn_linel init (-126), 4 124 fn_mergef init (-127), 4 125 fn_namelist init (-128), 4 126 fn_names init (-129), 4 127 fn_namestring init (-130), 4 128 fn_openi init (-131), 4 129 fn_openo init (-132), 4 130 fn_prin1 init (-133), 4 131 fn_princ init (-134), 4 132 fn_print init (-135), 4 133 fn_read init (-136), 4 134 fn_readch init (-137), 4 135 fn_readstring init (-138), 4 136 fn_rename init (-139), 4 137 fn_shortnamestring init (-140), 4 138 fn_tyi init (-141), 4 139 fn_setsyntax init (-142), 4 140 fn_cursorpos init (-143), 4 141 fn_force_output init (-144), 4 142 fn_clear_input init (-145), 4 143 fn_random init (-146), 4 144 fn_haulong init (-147), 4 145 fn_haipart init (-148), 4 146 fn_cline init (-149), 4 147 fn_fillarray init (-150), 4 148 fn_listarray init (-151), 4 149 fn_sort init (-152), 4 150 fn_sortcar init (-153), 4 151 fn_zerop init (-154), 4 152 fn_listify init (-155), 4 153 fn_charpos init (-156), 4 154 fn_pagel init (-157), 4 155 fn_linenum init (-158), 4 156 fn_pagenum init (-159), 4 157 fn_endpagefn init (-160), 4 158 fn_arraydims init (-161), 4 159 fn_loadarrays init (-162), 4 160 fn_dumparrays init (-163), 4 161 fn_expt_fix init (-164), 4 162 fn_expt_flo init (-165), 4 163 fn_nointerrupt init (-166), 4 164 fn_open init (-167), 4 165 fn_in init (-168), 4 166 fn_out init (-169), 4 167 fn_truename init (-170), 4 168 fn_ifix init (-171), 4 169 fn_fsc init (-172), 4 170 fn_progv init (-173), 4 171 fn_mapatoms init (-174), 4 172 fn_unwind_protect init (-175), 4 173 fn_eval_when init (-176), 4 174 fn_read_from_string init (-177), 4 175 fn_displace init (-178), 4 176 fn_nth init (-179), 4 177 fn_nthcdr init (-180), 4 178 fn_includef init (-181) 4 179 ) fixed bin static; 4 180 4 181 /* END INCLUDE FILE lisp_name_codes.incl.pl1 */ 160 5 1 /* include file lisp_stack_fmt.incl.pl1 -- 5 2* describes the format of the pushdown list 5 3* used by the lisp evaluator and lisp subrs 5 4* for passing arguments, saving atom bindings, 5 5* and as temporaries */ 5 6 5 7 dcl 5 8 temp(10000) fixed bin(71) aligned based, 5 9 5 10 temp_ptr(10000) ptr aligned based, 5 11 1 push_down_list_ptr_types(10000) based aligned, 5 12 2 junk bit(21) unaligned, 5 13 2 temp_type bit(9) unaligned, 5 14 2 more_junk bit(42) unaligned, 5 15 5 16 1 pdl_ptr_types36(10000) based aligned, 5 17 2 temp_type36 bit(36), 5 18 2 junk bit(36), 5 19 5 20 1 binding_block aligned based, 5 21 2 top_block bit(18) unaligned, 5 22 2 bot_block bit(18) unaligned, /* these two are rel pointers into the marked PDL */ 5 23 2 back_ptr bit(18) unaligned, /* relative pointer into unmarked PDL for last binding block. */ 5 24 2 rev_ptr bit(18) unaligned, /* relative pointer to reversal bb which reversed this one, init to 0 */ 5 25 5 26 1 bindings(10000) based aligned, /* format fof bindings on stack */ 5 27 2 old_val fixed bin(71) aligned, 5 28 2 atom fixed bin(71) aligned; 5 29 5 30 5 31 5 32 /* end include file lisp_stack_fmt.incl.pl1 */ 161 6 1 /* Include file lisp_common_vars.incl.pl1; 6 2* describes the external static variables which may be referenced 6 3* by lisp routines. 6 4* D. Reed 4/1/71 */ 6 5 6 6 dcl 1 lisp_static_vars_$lisp_static_vars_ external, 6 7 2 cclist_ptr ptr, /* pointer to list of constants kept 6 8* by compiled programs */ 6 9 2 garbage_collect_soon bit(1) aligned, /* if this is on we should garbage collect soon */ 6 10 6 11 lisp_static_vars_$err_recp ptr ext aligned, /* pointer to error data */ 6 12 err_recp ptr defined (lisp_static_vars_$err_recp), 6 13 eval_frame ptr defined (lisp_static_vars_$eval_frame), /* info kept by eval if *rset t */ 6 14 lisp_static_vars_$eval_frame ptr ext static, 6 15 lisp_static_vars_$prog_frame ptr ext aligned, 6 16 lisp_static_vars_$err_frame ptr ext aligned, 6 17 lisp_static_vars_$catch_frame ptr ext aligned, 6 18 lisp_static_vars_$unwp_frame ptr ext aligned, 6 19 lisp_static_vars_$stack_ptr ptr ext aligned, 6 20 lisp_static_vars_$t_atom fixed bin(71) ext aligned, 6 21 lisp_static_vars_$top_level label ext, /* top level read_eval_print loop */ 6 22 lisp_static_vars_$unmkd_ptr ptr ext aligned, 6 23 lisp_static_vars_$binding_top ptr ext aligned, 6 24 lisp_static_vars_$obarray fixed bin(71) aligned ext, 6 25 obarray fixed bin(71) defined (lisp_static_vars_$obarray), 6 26 lisp_static_vars_$array_atom fixed bin(71) aligned ext, 6 27 array_atom fixed bin(71) defined (lisp_static_vars_$array_atom), 6 28 binding_top ptr defined (lisp_static_vars_$binding_top), 6 29 unmkd_ptr ptr defined (lisp_static_vars_$unmkd_ptr), 6 30 stack_ptr ptr defined (lisp_static_vars_$stack_ptr), 6 31 lisp_static_vars_$nil ext static fixed bin(71) aligned, 6 32 nil fixed bin(71) defined (lisp_static_vars_$nil), 6 33 lisp_static_vars_$tty_input_chan ext static ptr, /* used by the reader */ 6 34 lisp_static_vars_$tty_output_chan ext static ptr, /*used by print*/ 6 35 tty_input_chan ptr def (lisp_static_vars_$tty_input_chan), 6 36 tty_output_chan ptr def (lisp_static_vars_$tty_output_chan), 6 37 lisp_static_vars_$iochan_list external pointer, /* list of all open iochans */ 6 38 nil_ptr ptr based(addr(lisp_static_vars_$nil)) aligned, 6 39 prog_frame ptr def (lisp_static_vars_$prog_frame), /* 3 ptrs for use of lisp_prog_fns_ */ 6 40 err_frame ptr def (lisp_static_vars_$err_frame), /* they point out frames in unmkd pdl */ 6 41 catch_frame ptr def (lisp_static_vars_$catch_frame), 6 42 unwp_frame ptr def (lisp_static_vars_$unwp_frame), 6 43 t_atom_ptr ptr aligned based(addr(lisp_static_vars_$t_atom)), 6 44 t_atom fixed bin(71) defined (lisp_static_vars_$t_atom); /* pointer to atom t */ 6 45 dcl lisp_static_vars_$user_intr_array(20) fixed bin(71) aligned ext static, /* -> atoms whose values are intr service functions */ 6 46 user_intr_array (20) fixed bin(71) aligned def (lisp_static_vars_$user_intr_array), 6 47 lisp_static_vars_$star_rset fixed bin(71) aligned ext static, 6 48 star_rset fixed bin(71) aligned def (lisp_static_vars_$star_rset); 6 49 6 50 6 51 /* end include file lisp_common_vars.incl.pl1 */ 162 7 1 7 2 /* BEGIN INCLUDE FILE lisp_readtable.incl.pl1 */ 7 3 7 4 dcl num_macs fixed bin static init(8); /* size of efficient portion of macro_table */ 7 5 7 6 /* if changed, the declarations below must also be changed */ 7 7 dcl read_table_dim_vector dimension(1) fixed bin static init(145); /* number of dbl words in read_table data */ 7 8 7 9 7 10 7 11 dcl 1 read_table aligned based(addr(addr(readtable)->based_ptr -> atom.value)->based_ptr -> array_info.array_data_ptr), 7 12 2 macro_table(8) fixed bin(71), /* -> exprs for first few macros */ 7 13 2 more_macros fixed bin(71), /* list of any remaining macros */ 7 14 2 syntax (0:131) bit(27) aligned, /* syntax bits for 128 ascii chars + 4 pseudo chars */ 7 15 2 translation (0:131) fixed bin aligned, /* character translation or index in macro_table */ 7 16 2 status_terpri bit(1) aligned, /* "1"b if (status terpri) is t */ 7 17 2 status_underline bit(1) aligned, /* "1"b if (status _) is t */ 7 18 7 19 2 status_ttyread bit(1) aligned, /* not actually used at present */ 7 20 2 abbreviate_on_files bit(1) aligned, /* (sstatus abbrev 1) */ 7 21 2 abbreviate_on_flat bit(1) aligned, /* (sstatus abbrev 2) */ 7 22 2 words_not_used_yet (3) bit(36) aligned; 7 23 7 24 7 25 /* Manifest constants for syntax bits */ 7 26 7 27 dcl ( 7 28 7 29 forcefeed init("000000100000000000000000000"b), /* used only by ITS lisp */ 7 30 vertical_motion init("000000010000000000000000000"b), /* bit on for NL and NP characters */ 7 31 string_quote_exp init("000000001000000000000000000"b), /* string quote if bit12=1, exponent if bit12 = 0 */ 7 32 special init("000000000100000000000000000"b), /* always slash if in atom */ 7 33 single_char_object init("000000000010000000000000000"b), 7 34 blank init("000000000001000000000000000"b), /* space, tab, comma, nl, etc. */ 7 35 lparn init("000000000000100000000000000"b), /* "(", bit12 => super left paren */ 7 36 dotted_pair_dot init("000000000000010000000000000"b), /* the two uses of "." are kept seperate */ 7 37 rparn init("000000000000001000000000000"b), /* ")", bit12 => super right paren */ 7 38 macro init("000000000000000100000000000"b), 7 39 slashifier init("000000000000000010000000000"b), 7 40 rubout init("000000000000000001000000000"b), /* used only by ITS lisp */ 7 41 slash_if_first init("000000000000000000100000000"b), /* slashify if first char in pname */ 7 42 decimal_point init("000000000000000000010000000"b), 7 43 slash_if_not_first init("000000000000000000001000000"b), /* slashify on output when in pname & not 1st */ 7 44 slash_output init("000000000000000000101000000"b), /* slashify on output when in pname */ 7 45 bit12 init("000000000000000000000100000"b), /* selects from two meanings of certain other bits */ 7 46 /* NOTE: this is not really bit 12 anymore, but keep name */ 7 47 splice init("000000000000000000000100000"b), /* splicing macro */ 7 48 shift_scale init("000000000000000000000010000"b), /* left shift if bit12 = 1 7 49* fixed point scale if bit12 = 0 */ 7 50 plus_minus init("000000000000000000000001000"b), /* + if bit12 = 0, - if bit12 = 1 */ 7 51 digit init("000000000000000000000000100"b), /* decimal digit */ 7 52 extd_alpha init("000000000000000000000000010"b), /* extended alphabetic */ 7 53 alpha init("000000000000000000000000001"b) /* familiar alphabetic */ 7 54 7 55 ) bit(27) static; 7 56 7 57 /* End include file lisp_readtable.incl.pl1 */ 7 58 163 8 1 /***** BEGIN INCLUDE FILE lisp_array_fmt.incl.pl1 *****/ 8 2 8 3 /* This include file defines the format of the "new" LISP arrays. 8 4* Written 74.05.13 by DAM */ 8 5 8 6 /* Info block in static space. pointed at by array ptr */ 8 7 8 8 dcl 1 array_info aligned based structure, /* 8 words long */ 8 9 2 ndims fixed bin(17) unaligned, /* number of dimensions */ 8 10 2 gc_mark bit(18) unaligned, /* alternating bits for garbage coll. */ 8 11 2 call_array_operator bit(36), /* tspbp instruction to array opr */ 8 12 2 array_data_ptr pointer, /* -> array_data structure */ 8 13 2 array_load_sequence(3) bit(36), /* lda, ldq, tra bp|0 */ 8 14 2 type fixed bin(17) unaligned, /* type of array, see dcl below */ 8 15 2 minus_2_times_ndims fixed bin(17) unaligned; /* for convenience of array opr */ 8 16 8 17 /* Codes for the different types of arrays: 8 18* Name Value arg to *array to create one */ 8 19 8 20 dcl (S_expr_array init(0), /* t */ 8 21 Un_gc_array init(1), /* nil */ 8 22 Fixnum_array init(2), /* fixnum */ 8 23 Flonum_array init(3), /* flonum */ 8 24 Readtable_array init(4), /* readtable */ 8 25 Obarray_array init(5), /* obarray */ 8 26 Dead_array init(6) /* (*rearray a) */ 8 27 ) fixed bin(17) static; 8 28 8 29 /* Block of array data and dimensions, in garbage-collected Lists space */ 8 30 8 31 dcl 1 array_data aligned based structure, 8 32 2 dope_vector(ZERO), /* address by dope_vector(i-ndims). no way to dcl in PL/I */ 8 33 3 bounds fixed bin(35), /* 0 <_ subscript < bounds */ 8 34 3 multiplier fixed bin(35), /* multiplier in polynomial-type subscript calc. */ 8 35 2 data(0:1000) fixed bin(71); /* single or double words depending on type of array */ 8 36 8 37 dcl ZERO fixed bin static init(0); /* Circumvent a compiler bug causing reference through null pointer in get_array_size$multf */ 8 38 8 39 /***** END INCLUDE FILE lisp_array_fmt.incl.pl1 *****/ 164 165 166 dcl slash_suppressors bit(27) static init( /* syntax that in 2nd char can suppress 167* slashing of first char in pname */ 168 "000000000000000000001001011"b); /* slash_if_not_first|plus_minus|extd_alpha|alpha */ 169 9 1 /* lisp number format -- overlaid on standard its pointer. */ 9 2 9 3 9 4 dcl 1 fixnum_fmt based aligned, 9 5 2 type_info bit(36) aligned, 9 6 2 fixedb fixed bin, 9 7 9 8 1 flonum_fmt based aligned, 9 9 2 type_info bit(36) aligned, 9 10 2 floatb float bin, 9 11 9 12 fixnum_type bit(36) aligned static init("000000000000000000000100000000100111"b), 9 13 flonum_type bit(36) aligned static init("000000000000000000000010000000100111"b); 9 14 9 15 /* end of lisp number format */ 9 16 170 10 1 /* Include file lisp_cons_fmt.incl.pl1; 10 2* defines the format for a cons within the lisp system 10 3* D.Reed 4/1/71 */ 10 4 10 5 dcl consptr ptr, 10 6 1 cons aligned based (consptr), /* structure defining format for cons */ 10 7 2 car fixed bin(71), 10 8 2 cdr fixed bin(71), 10 9 10 10 1 cons_ptrs aligned based (consptr), /* for using car and cdr as pointers */ 10 11 2 car ptr, 10 12 2 cdr ptr, 10 13 10 14 10 15 1 cons_types aligned based (consptr), /* structure for extracting types out of cons */ 10 16 2 padding bit(21) unaligned, 10 17 2 car bit(9) unaligned, 10 18 2 padding2 bit(63) unaligned, 10 19 2 cdr bit(9) unaligned, 10 20 2 padend bit(42) unaligned; 10 21 10 22 dcl 1 cons_types36 aligned based, 10 23 2 car bit(36), 10 24 2 pada bit(36), 10 25 2 cdr bit(36), 10 26 2 padd bit(36); 10 27 10 28 10 29 /* end include file lisp_cons_fmt.incl.pl1 */ 171 11 1 /* Include file lisp_atom_fmt.incl.pl1; 11 2* describes internal format of atoms in the lisp system 11 3* D.Reed 4/1/71 */ 11 4 11 5 dcl 1 atom aligned based, /* overlay for atom fomat */ 11 6 2 value fixed bin(71), /* atom's value */ 11 7 2 plist fixed bin(71), /* property list */ 11 8 2 pnamel fixed bin, /* length of print name */ 11 9 2 pname char(1 refer(pnamel)), /* print name of atom */ 11 10 11 11 1 atom_ptrs based aligned, /* for use of plist and value of atom as ptrs */ 11 12 2 value ptr, 11 13 2 plist ptr, 11 14 11 15 1 atom_double_words based aligned, /* overlay for atom pointer checking */ 11 16 2 value bit(72), 11 17 2 plist bit(72); 11 18 11 19 /* end of include file lisp_atom_fmt.incl.pl1 */ 172 12 1 /***** BEGIN INCLUDE FILE lisp_string_fmt.incl.pl1 ***** 12 2* describes format of storage for lisp 12 3* character strings. 12 4* D. Reed 4/1/71 */ 12 5 12 6 dcl 1 lisp_string based aligned, 12 7 2 string_length fixed bin, 12 8 2 string char(1 refer(string_length)); 12 9 12 10 /***** END INCLUDE FILE lisp_string_fmt.incl.pl1 */ 173 13 1 /* INCLUDE FILE lisp_io.incl.pl1 */ 13 2 13 3 /* data structures used by the lisp i/o system */ 13 4 14 1 /* BEGIN INCLUDE FILE lisp_iochan.incl.pl1 */ 14 2 14 3 /* This include file describes the format of the 'iochan' block, 14 4* which is used to implement lisp file-objects. The iochan 14 5* is the central data base of the i/o system. When open 14 6* is used, an iochan is created in lisp static storage. 14 7* When the lisp environment is booted, 2 iochans for input and 14 8* output on the tty are created. Iochans are saved and restored 14 9* by the save mechanism */ 14 10 14 11 /* open i/o channel information */ 14 12 14 13 dcl 1 iochan based aligned, /* format of a file object */ 14 14 2 ioindex fixed bin(24), /* 0-origin character position in block */ 14 15 2 iolength fixed bin(24), /* size of block in chars - actual(in), max(out) */ 14 16 2 ioptr pointer, /* -> block */ 14 17 2 thread pointer, /* list of all iochans open; from lisp_static_vars_$iochan_list */ 14 18 2 fcbp pointer, /* for tssi_ */ 14 19 2 aclinfop pointer, /* .. */ 14 20 2 component fixed bin, /* .. */ 14 21 2 charpos fixed bin, /* 0-origin horizontal position on line */ 14 22 2 linel fixed bin, /* (out) line length, 0 => oo */ 14 23 2 flags unaligned, 14 24 3 seg bit(1), /* 1 => msf, 0 => stream */ 14 25 3 read bit(1), /* 0 => openi, 1 => not */ 14 26 3 write bit(1), /* 0 => openo, 1 => not */ 14 27 3 gc_mark bit(1), /* for use by the garbage collector */ 14 28 3 interactive bit(1), /* 1 => input => this is the tty 14 29* output => flush buff after each op */ 14 30 3 must_reopen bit(1), /* 1 => has been saved and not reopend yet */ 14 31 3 nlsync bit(1), /* 1 => there is a NL in the buffer (output streams only) */ 14 32 3 charmode bit(1), /* enables instant ios_$write */ 14 33 3 extra_nl_done bit(1), /* 1 => last char output was extra NL for chrct */ 14 34 3 fixnum_mode bit(1), /* to be used with in and out functions */ 14 35 3 image_mode bit(1), /* just suppresses auto-cr */ 14 36 3 not_yet_used bit(25), 14 37 2 function fixed bin(71), /* EOF function (input), or endpagefn (output) <<< gc-able >>> */ 14 38 2 namelist fixed bin(71), /* list of names, car is directory pathname <<< gc-able >>> */ 14 39 2 name char(32) unaligned, /* stream name or entry name */ 14 40 2 pagel fixed bin, /* number of lines per page */ 14 41 2 linenum fixed bin, /* current line number, starting from 0 */ 14 42 2 pagenum fixed bin, /* current page number, starting from 0 */ 14 43 14 44 flag_reset_mask bit(36) aligned static init( /* anded into flags with each char */ 14 45 "111011110111111111"b); 14 46 14 47 /* END INCLUDE FILE lisp_iochan.incl.pl1 */ 13 5 13 6 13 7 /* masks for checking iochan.flags, seeing if lisp_io_control_$fix_not_ok_iochan should be called */ 13 8 13 9 dcl not_ok_to_read bit(36) static init("0100010001"b), /* mask for checking iochan.flags on input */ 13 10 not_ok_to_write bit(36) static init("0010010001"b);/* mask for checking iochan.flags on output */ 13 11 dcl not_ok_to_read_fixnum bit(36) static init("0100010000"b), 13 12 not_ok_to_write_fixnum bit(36) static init("0010010000"b); 13 13 13 14 13 15 /* miscellaneous global, static variables and atoms used by the I/O system */ 13 16 13 17 dcl lisp_static_vars_$read_print_nl_sync bit(36) ext, 13 18 read_print_nl_sync bit(36) defined (lisp_static_vars_$read_print_nl_sync), 13 19 lisp_static_vars_$ibase ext fixed bin(71), 13 20 ibase fixed bin(71) defined (lisp_static_vars_$ibase), 13 21 13 22 lisp_static_vars_$quote_atom ext fixed bin (71), 13 23 quote_atom fixed bin(71) defined (lisp_static_vars_$quote_atom), 13 24 13 25 lisp_static_vars_$base ext fixed bin(71), 13 26 base fixed bin(71) defined ( lisp_static_vars_$base), 13 27 13 28 lisp_static_vars_$stnopoint ext fixed bin(71), 13 29 stnopoint fixed bin(71) defined (lisp_static_vars_$stnopoint), 13 30 13 31 lisp_static_vars_$tty_atom ext fixed bin(71), 13 32 tty_atom fixed bin(71) defined (lisp_static_vars_$tty_atom), 13 33 lisp_static_vars_$status_gctwa ext fixed bin(71), 13 34 status_gctwa fixed bin(71) defined (lisp_static_vars_$status_gctwa), 13 35 13 36 lisp_static_vars_$s_atom ext fixed bin(71), 13 37 s_atom fixed bin(71) defined (lisp_static_vars_$s_atom), 13 38 13 39 lisp_static_vars_$readtable ext fixed bin(71), 13 40 readtable fixed bin(71) defined (lisp_static_vars_$readtable), 13 41 13 42 lisp_static_vars_$plus_status ext fixed bin(71), 13 43 plus_status fixed bin(71) defined (lisp_static_vars_$plus_status); 13 44 15 1 /* BEGIN INCLUDE FILE lisp_control_chars.incl.pl1 */ 15 2 15 3 /* Last modified D. Reed 6/29/72 */ 15 4 15 5 dcl lisp_static_vars_$ctrlD ext fixed bin(71), 15 6 ctrlD fixed bin(71) defined (lisp_static_vars_$ctrlD); 15 7 15 8 dcl lisp_static_vars_$ctrlQ ext fixed bin(71), 15 9 ctrlQ fixed bin(71) defined (lisp_static_vars_$ctrlQ); 15 10 15 11 dcl lisp_static_vars_$ctrlR ext fixed bin(71), 15 12 ctrlR fixed bin(71) defined (lisp_static_vars_$ctrlR); 15 13 15 14 dcl lisp_static_vars_$ctrlW ext fixed bin(71), 15 15 ctrlW fixed bin(71) defined (lisp_static_vars_$ctrlW); 15 16 15 17 /* END INCLUDE FILE lisp_control_chars.incl.pl1 */ 15 18 13 45 13 46 /* END INCLUDE FILE lisp_io.incl.pl1 */ 13 47 174 16 1 16 2 /* BEGIN INCLUDE FILE lisp_error_codes.incl.pl1 */ 16 3 16 4 /* This contains codes to be stored on the unmkd pdl before calling 16 5* lisp_error_. These codes, at ab|-2,x7, are used by lisp_error_ 16 6* as an index into lisp_error_table_. */ 16 7 16 8 dcl ( 16 9 undefined_atom init(100), /* - correctable */ 16 10 undefined_function init(101), /* - correctable */ 16 11 too_many_args init(102), /* uncorrectable */ 16 12 too_few_args init(103), /* .. */ 16 13 file_system_error init(104), /* (obsolete) */ 16 14 bad_argument init(105), /* uncorrectable arg reject */ 16 15 undefined_subr init(106), 16 16 bad_function init(107), /* "bad functional form" */ 16 17 bad_bv init(108), /* attempt to bind non-variable */ 16 18 unseen_go_tag init(109), /* correctable -> unevaled new tag */ 16 19 throw_to_no_catch init(110), /* .. */ 16 20 nonfixedarg init(111), /* correctable */ 16 21 parenmissing init(112), /* uncorr reader error */ 16 22 doterror init(113), /* .. */ 16 23 illobj init(114), /* .. */ 16 24 badmacro init(115), /* .. */ 16 25 shortreadlist init(116), /* .. */ 16 26 badreadlist init(117), /* .. */ 16 27 array_bound_error init(118), /* corr -> (array sub1 sub2...) */ 16 28 car_cdr_error init(119), /* uncorr - car or cdr of number */ 16 29 bad_arg_correctable init(120), /* correctable arg reject */ 16 30 bad_prog_op init(121), /* uncorr fail-act: go or return */ 16 31 no_lexpr init(122), /* uncorr fail-act: args or setarg */ 16 32 wrong_no_args init(123), /* correctable wna -> new expr value */ 16 33 bad_ibase init(124), /* corr */ 16 34 bad_base init(125), /* corr */ 16 35 bad_input_source init(126), /* corr - retry i/o */ 16 36 bad_output_dest init(127), /* .. */ 16 37 nihil_ex_nihile init(128), /* uncorr - attempt to setq nil */ 16 38 not_pdl_ptr init(131), /* corr arg reject - for pdl ptr args */ 16 39 bad_f_fcn init(134), /* compiled call to fsubr with evaled args */ 16 40 overflow_err init(135), /* arithmetic overflow. */ 16 41 mismatch_super_parens init(136), /* uncorr reader error */ 16 42 no_left_super_paren init(137), /* .. */ 16 43 flonum_too_big init(138), /* .. */ 16 44 quoterror init(139), /* .. */ 16 45 badreadtable init(140), /* .. */ 16 46 badobarray init(141), /* .. */ 16 47 atan_0_0_err init(142), /* (atan 0 0) doesn't work */ 16 48 unable_to_float init(143), /* corr arg reject - (float x) */ 16 49 division_by_zero init(144), /* uncorr (should really be corr) */ 16 50 eof_in_object init(145), /* corr fail-act -> keep reading anyway */ 16 51 cant_filepos init(146), /* corr fail-act -> new expr value */ 16 52 filepos_oob init(147), /* .. */ 16 53 file_sys_fun_err init(148), /* corr f.s. err -> new expr value */ 16 54 stars_left_in_name init(149), /* .. */ 16 55 io_wrong_direction init(150), /* .. */ 16 56 file_is_closed init(151), /* .. */ 16 57 reopen_inconsistent init(152), /* .. */ 16 58 bad_entry_name init(153), /* .. */ 16 59 bad_do_format init(154), /* bad do format in interp. */ 16 60 not_an_array init(155), /* bad array-type arg */ 16 61 not_alpha_array init(156), /* bad all-alphabetic array */ 16 62 include_file_error init(157), /* %include barfed */ 16 63 stack_loss_error init(158), /* stack overflew */ 16 64 underflow_fault init(159), 16 65 zerodivide_fault init(160), 16 66 bad_array_subscript init(161), 16 67 store_not_allowed init(162), 16 68 dead_array_reference init(163), 16 69 cant_subscript_readtable init(164), 16 70 not_same_type init(165), 16 71 special_array_type init(166), 16 72 array_too_big init(167), 16 73 argument_must_be_array init(168), 16 74 store_function_misused init(169) 16 75 ) fixed bin static; 16 76 16 77 /* END INCLUDE FILE lisp_error_codes.incl.pl1 */ 175 176 177 178 179 180 /* print: proc; */ 181 182 183 slashing, begin_with_nl = "1"b; /* options peculiar to print */ 184 go to prin_com; 185 186 prin1: entry; 187 188 slashing = "1"b; /* formatted but no nl */ 189 go to prin1_com; 190 191 princ: entry; 192 193 slashing = "0"b; /* no formatting other than whitespace */ 194 195 prin1_com:begin_with_nl = "0"b; 196 prin_com: printing = "1"b; /* actual output to be done */ 197 flatsw = "0"b; /* not doing flatsize, flatc */ 198 call get_dest_subr; /* find out where output is to be sent */ 199 go to print_common; /* go join common code, stack already set */ 200 201 /* 202* * The above entries are the old subr versions retained because they are called internally. 203* * The following entries are the new, lsubr versions. 204* */ 205 206 print_: entry; 207 208 slashing, begin_with_nl = "1"b; 209 go to prin_com_; 210 211 prin1_: entry; 212 213 slashing = "1"b; 214 go to prin1_com_; 215 216 princ_: entry; 217 218 slashing = "0"b; 219 220 prin1_com_: 221 begin_with_nl = "0"b; 222 prin_com_: 223 printing = "1"b; 224 flatsw = "0"b; 225 call get_dest; 226 go to print_common; 227 228 229 230 explode: entry; 231 232 slashing = "1"b; 233 go to explodecom; 234 235 explodec: entry; 236 237 slashing = "0"b; /* no formatting */ 238 explodecom: 239 explodensw = "0"b; 240 go to explode1; 241 242 exploden: entry; 243 244 explodensw = "1"b; 245 slashing = "0"b; 246 explode1: printing = "0"b; 247 flatsw = "0"b; 248 stack = addrel(stack_ptr, -2); 249 call set_up_buffer; 250 go to print_common; 251 252 flatsize: entry; 253 254 slashing = "1"b; 255 go to flatcom; 256 257 flatc: entry; 258 259 slashing = "0"b; 260 flatcom: flatsw = "1"b; 261 printing = "0"b; 262 stack = addrel(stack_ptr, -2); 263 call set_up_buffer; 264 go to print_common; 265 266 tyo: entry; 267 268 abbreving_flag, abbreved_out_flag, abbrev_on_files = "0"b; /* don't try to abbreviate */ 269 call get_dest; 270 tyo_restart: 271 if stack -> fixnum_fmt.type_info ^= fixnum_type then go to bad_tyo; 272 if stack -> fixedb > 511 then go to bad_tyo; 273 if stack -> fixedb < 0 then go to bad_tyo; 274 printing = "1"b; 275 buffer = byte (stack -> fixedb); 276 call send_the_buffer; 277 call flush_buffers; 278 go to exit; 279 280 bad_tyo: 281 unm = unmkd_ptr; /* get room on unmkd_stack for error info */ 282 unmkd_ptr = addrel(unm,2); 283 unm -> errcode(1) = bad_arg_correctable; 284 unm -> errcode(2) = fn_tyo; 285 tstack -> temp(3) = stack -> temp(1); 286 call lisp_error_; 287 stack -> temp(1) = tstack -> temp(3); 288 go to tyo_restart; /* come back and try again */ 289 290 291 type_string: entry(string_to_be_typed_out); 292 293 dcl string_to_be_typed_out char(*) aligned; 294 295 abbreving_flag, abbreved_out_flag, abbrev_on_files = "0"b; /* don't try to abbreviate */ 296 call get_dest_non_lsubr; 297 298 if length(string_to_be_typed_out) > bufmaxl 299 then do; /* need bigger buffer */ 300 bufmaxl = 8*divide(length(string_to_be_typed_out)+3, 8, 18, 0) + 4; /* double word alignment */ 301 unmkd_ptr = addrel(bufp, divide(bufmaxl, 4, 18, 0)+1); 302 end; 303 304 buffer = string_to_be_typed_out; 305 call send_the_buffer; 306 call flush_buffers; 307 stack_ptr = stack; 308 unmkd_ptr = unm; 309 return; 310 311 312 terpri: entry; /* terpri as lsubr (0 . 1) */ 313 314 abbreving_flag, abbreved_out_flag, abbrev_on_files = "0"b; /* don't try to abbreviate */ 315 call get_dest_4_terpri; /* special variant of get_dest */ 316 printing = "1"b; 317 buffer = newline; 318 call send_the_buffer; 319 call flush_buffers; 320 stack_ptr = addr(stack -> temp(2)); 321 unmkd_ptr = unm; 322 stack -> temp(1) = nil; /* return nil*/ 323 return; 324 325 type_nl: entry; 326 327 abbreving_flag, abbreved_out_flag, abbrev_on_files = "0"b; /* don't try to abbreviate */ 328 call get_dest_non_lsubr; 329 buffer = newline; 330 call send_the_buffer; 331 call flush_buffers; 332 stack_ptr = stack; 333 unmkd_ptr = unm; 334 return; 335 336 337 print_common: /* all code for formatting lisp objects starts here */ 338 339 /* Make sure the readtable has not been munged */ 340 341 if addr( 342 addr(readtable)->based_ptr -> atom.value) 343 -> lisp_ptr_type & Array36 then; 344 else go to bad_readtable; /* not an array */ 345 346 /* its an array, make sure it was made by makreadtable */ 347 348 if addr(readtable)->based_ptr -> atom_ptrs.value -> array_info.type ^= Readtable_array 349 then go to bad_readtable; 350 351 prinlevel = lisp_static_vars_$prinlevel -> fixedb; 352 prinlength = lisp_static_vars_$prinlength -> fixedb; 353 if lisp_static_vars_$prinlevel -> fixnum_fmt.type_info = fixnum_type 354 then check_prinlevel = "1"b; 355 else check_prinlevel = "0"b; 356 if lisp_static_vars_$prinlength -> fixnum_fmt.type_info = fixnum_type 357 then check_prinlength = "1"b; 358 else check_prinlength = "0"b; 359 360 curlevel = 0; 361 abbreving_flag, abbreved_out_flag = "0"b; 362 abbrev_on_files = abbreviate_on_files; 363 if ^ printing 364 then if abbreviate_on_flat 365 then do; 366 someone_gets_abbreved = "1"b; 367 someone_gets_unabbreved = "0"b; 368 end; 369 else do; 370 someone_gets_abbreved = "0"b; 371 someone_gets_unabbreved = "1"b; 372 end; 373 else do; 374 someone_gets_abbreved = "1"b; 375 if ^ send_to_files then someone_gets_unabbreved = "0"b; 376 else if abbrev_on_files then someone_gets_unabbreved = "0"b; 377 else someone_gets_unabbreved = "1"b; 378 end; 379 380 if ^ someone_gets_abbreved then check_prinlevel, check_prinlength = "0"b; 381 382 reti = 0; /* set transfer vector return index */ 383 384 tstack -> temp(1) = stack -> temp(1); /* first argument to print loop */ 385 386 if ^printing 387 then if flatsw 388 then do; /* set count of printable characters */ 389 stack -> fixnum_fmt.type_info = fixnum_type; 390 stack -> fixedb = 0; 391 end; 392 else stack -> temp(1) = nil; /* list of characters, later to be reversed */ 393 else if begin_with_nl 394 then do; 395 buffer = newline; 396 call send_the_buffer; 397 end; 398 399 print_loop: /* main printing loop, pseudo-recursive function */ 400 401 type_field = tstack -> temp_type36(1); /* get type to branch on */ 402 if type_field = fixnum_type then go to format_fixed; 403 if type_field = flonum_type then go to format_float; 404 if type_field & Bigfix36 then go to format_big; 405 if type_field & Atsym36 then go to format_symbol; 406 if type_field & String36 then go to format_string; 407 if type_field & File36 then go to format_file_object; 408 if type_field & Array36 then go to format_array_pointer; 409 if tstack -> temp_type(1) then go to format_random; /* got screwed up type */ 410 if tstack -> lisp_ptr.itsmod ^= "100011"b then go to format_random; 411 if substr(tstack -> a_lisp_datum.word2, 19, 18) ^= ""b then go to format_random; 412 413 /* not an atomic type, so print list format, by recursing */ 414 415 /* have to move the buffer so can save return address */ 416 417 bufp = addrel(unm, 2); 418 bufmaxl = bufminl; 419 unmkd_ptr = addrel(bufp, 1+divide(bufminl,4,18,0)); 420 unm -> saved_reti = reti; 421 unm -> saved_curlength = curlength; 422 unm = bufp; 423 curlength = 0; 424 curlevel = curlevel + 1; 425 if check_prinlevel 426 then if curlevel > prinlevel 427 then do; /* abbreviation hacks */ 428 if ^ abbreved_out_flag 429 then do; /* have to put a sharp sign */ 430 abbreving_flag = "1"b; 431 saved_bufp = bufp; 432 bufp = addr(sharp_sign_buffer); 433 call send_the_buffer; 434 bufp = saved_bufp; 435 abbreving_flag = "0"b; 436 if ^ someone_gets_unabbreved then go to rest_of_list_suppressed; /* make explode work right */ 437 end; 438 abbreved_out_flag = "1"b; 439 end; 440 441 /* begin the list with a left parenthesis */ 442 443 buffer = left_paren; 444 call send_the_buffer; 445 446 list_loop:tstack -> temp(2) = tstack -> temp_ptr(1) -> cons.car; 447 tstack -> temp(1) = tstack -> temp_ptr(1) -> cons.cdr; /* next list element */ 448 tstack = addr(tstack -> temp(2)); /* recursively print list item */ 449 stack_ptr = addr(tstack -> temp(4)); 450 reti = 1; /* return for list routine */ 451 curlength = curlength + 1; 452 if check_prinlength 453 then if curlength > prinlength 454 then do; /* abbreviation */ 455 if ^ abbreved_out_flag 456 then do; 457 abbreving_flag = "1"b; /* have to put a dot dot dot */ 458 saved_bufp = bufp; 459 bufp = addr(dot_dot_dot_buffer); 460 call send_the_buffer; 461 bufp = saved_bufp; 462 abbreving_flag = "0"b; 463 abbreved_out_flag = "1"b; 464 if ^ someone_gets_unabbreved /* try not to loop on circular lists */ 465 then do; 466 tstack = addrel(tstack, -2); 467 go to rest_of_list_suppressed; 468 end; 469 end; 470 end; 471 472 if ^ abbreved_out_flag then go to print_loop; /* print car of list */ 473 else if someone_gets_unabbreved then go to print_loop; 474 else; /* no need to recurse because no one will see it anyway */ 475 476 print_ret(1): /* return from printing one list element */ 477 tstack = addrel(tstack,-2); /* back down stack */ 478 if tstack -> temp(1) = nil then go to print_ret(2); /* end of list */ 479 else if tstack -> temp_type(1) 480 then do; 481 non_nil_end: buffer = " . "; /* dotted pair dot */ 482 call send_the_buffer; 483 reti = 2; /* for end of list */ 484 stack_ptr = addr (tstack -> temp (4)); 485 go to print_loop; 486 end; 487 488 else if tstack -> lisp_ptr.itsmod ^= "100011"b then go to non_nil_end; 489 490 else do; /* have another atom here */ 491 buffer = space; 492 call send_the_buffer; 493 go to list_loop; 494 end; 495 496 print_ret(2): /* return from printing a list */ 497 498 buffer = right_paren; 499 call send_the_buffer; 500 501 rest_of_list_suppressed: 502 /* pop the stack. again, must re-allocate buffer slightly */ 503 504 unm = addrel(unm,-2); 505 bufp = unm; 506 bufmaxl = bufmaxl + 8; /* 8 more chars are protected */ 507 reti = unm -> saved_reti; 508 curlength = unm -> saved_curlength; 509 curlevel = curlevel - 1; 510 511 /* turn off abbreved_out_flag if we are now back in un abbreved region */ 512 513 if check_prinlevel then if curlevel > prinlevel then go to keep_on_abbreving; 514 if check_prinlength then if curlength > prinlength then go to keep_on_abbreving; 515 abbreved_out_flag = "0"b; 516 keep_on_abbreving: 517 518 go to print_ret(reti); 519 520 print_ret(0): /* return from printing the whole thing */ 521 522 if printing 523 then do; 524 if begin_with_nl then do; 525 buffer = space; /* print, want space after the output */ 526 call send_the_buffer; 527 end; 528 call flush_buffers; 529 end; 530 exit: stack_ptr = addr(stack -> temp(2)); 531 unmkd_ptr = unm; /* pop back unmkd stack */ 532 if ^printing then if ^flatsw then call lisp_list_utils_$nreverse; /* zap list to reverse of self */ 533 else; 534 else stack->temp(1) = t_atom; 535 return; 536 537 538 format_big: /* format a fixed point bignum */ 539 540 call get_radix; 541 542 /* convert the bignum to an array of small nums which are digits to some big radix, namely 543* the largest possible power of the output radix that fits in 35 bits */ 544 545 dpw = digsperwd(radix); 546 unmkd_ptr = addrel(unm, size(bnprintargs)); /* make arg list for lisp_bignums_$bnprint */ 547 tstack -> temp(3) = tstack -> temp(1); /* copy argument */ 548 bnprintargs.rad = bigradix(radix); 549 call lisp_bignums_$bnprint; 550 stack_ptr = addr(tstack -> temp(4)); /* lisp_bignums_ mungs stack */ 551 552 /* now put buffer above bnprintargs on stack */ 553 554 bufp = unmkd_ptr; /* allocate buffer above bnprintargs and bndigs */ 555 bufmaxl = bufminl; 556 unmkd_ptr = addrel(bufp, 1+divide(bufminl,4,18,0)); 557 558 /* set sign into buffer */ 559 560 if tstack -> temp_ptr(1) -> lisp_bignum.sign 561 then buffer = "-"; 562 else if radix <= 10 then buffer = ""; /* omit + usually */ 563 else buffer = "+"; /* but if wierd base indicate is number not atom */ 564 565 /* expand each of these fixnums into digits */ 566 567 do j = hbound(bndigs, 1) to lbound(bndigs, 1) by -1; 568 wd = bndigs(j); /* next word to be expanded into digits */ 569 do i = 35 by -1 to 36-dpw; 570 idx = divide(wd, radix, 35, 0); 571 code = binary(wd, 40) - binary(radix*idx, 40); 572 numbuff(i+1) = substr(DigitSet, code+1, 1); 573 if idx = 0 then if j = hbound(bndigs, 1) then go to done_bfx; /* suppress leading zeroes for 574* first word only */ 575 wd = idx; 576 end; 577 i = 36-dpw; 578 done_bfx: if length(buffer) + 36 - i + 1 > bufmaxl then do; /* grow buffer */ 579 /* extra +1 is for decimal point. */ 580 bufmaxl = 4 + 8*divide(length(buffer) + 36 - i - 4 + 7, 8, 18, 0); 581 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 582 end; 583 buffer = buffer || substr(string(numbuff), i+1); 584 end; 585 left_arrow = 0; 586 go to point; /* maybe add decimal point at end */ 587 588 get_radix: proc; 589 590 retry: if addr(base) -> based_ptr -> fixnum_fmt.type_info ^= fixnum_type 591 then go to bad_radix; 592 593 radix = addr(base) -> based_ptr -> fixedb; 594 595 if radix < 2 then go to bad_radix; 596 if radix > 36 then go to bad_radix; 597 return; /* good radix */ 598 599 bad_radix:unmp = unmkd_ptr; /* get room to pass error code */ 600 unmkd_ptr = addrel(unmp, 2); 601 unmp -> errcode(1) = bad_base; 602 call lisp_error_; /* signal error */ 603 go to retry; 604 605 end get_radix; 606 607 608 609 610 611 format_fixed: /* format a fixed point number */ 612 613 buffer = ""; 614 call get_radix; 615 616 if tstack -> fixedb < 0 617 then buffer = "-"; /* put minus sign */ 618 else do; 619 tstack -> fixedb = - tstack -> fixedb; /* uniform negative conversion */ 620 if radix > 10 621 then buffer = "+"; /* to indicate number in wierd base */ 622 end; 623 624 625 /* print numbers with 18, 24, or 30 trailing zeroes with the _ (left arrow) notation */ 626 627 left_arrow = 0; 628 if tstack -> fixedb ^= 0 then 629 if radix = 8 then goto underline_hackery; /* only use this format for octal output */ 630 else if ^ status_underline then 631 underline_hackery: 632 /* may be allowed to use the xx_yy. output format */ 633 634 if read_table.syntax(95) = "000000000000110010"b then do; /* only if syntax of _ is standard */ 635 bit36 = unspec(tstack -> fixedb); /* look at the number to be printed */ 636 if substr(bit36, 2, 35) = ""b then do; 637 left_arrow = 35; 638 tstack -> fixedb = -1; /* must be 400000000000 */ 639 end; 640 else if substr(bit36, 7, 30) = ""b then do; 641 left_arrow = 30; 642 unspec(tstack -> fixedb) = (30)"1"b||bit36; /* qrs 30 */ 643 end; 644 else if substr(bit36, 13, 24) = ""b then do; 645 left_arrow = 24; 646 unspec(tstack -> fixedb) = (24)"1"b||bit36; /* qrs 24 */ 647 end; 648 else if substr(bit36, 19, 18) = ""b then do; 649 left_arrow = 18; 650 unspec(tstack -> fixedb) = (18)"1"b||bit36; /* qrs 18 */ 651 end; 652 end; 653 654 pnum: do i = 35 by -1; /* convert number */ 655 idx = divide(tstack->fixedb,radix,35,0); 656 tempd = radix*idx; 657 code = tempd - binary(tstack->fixedb,40,0); 658 numbuff(i+1) = substr(DigitSet,code+1,1); 659 if idx = 0 then go to done_num; 660 tstack -> fixedb = idx; 661 end; 662 663 done_num: buffer = buffer || substr(string(numbuff), i+1); 664 665 /* buffer contains number. append "." and "_" frobs if necessary, then output */ 666 667 point: if radix = 10 /* add decimal point? */ 668 then if addr(stnopoint)->based_ptr->atom.value = nil 669 then buffer = buffer || "."; 670 671 if left_arrow ^= 0 then do; /* print _ and the shift factor in decimal */ 672 buffer = buffer || "_"; 673 tstack -> fixedb = -left_arrow; /* = shift factor */ 674 left_arrow = 0; /* prevent recursion */ 675 if addr(stnopoint)->based_ptr -> atom.value = nil then radix = 10; /* put shift factor in decimal if possible */ 676 go to pnum; 677 end; 678 679 /* whole number is now in buffer. put it out, empty the stack (in case of bignum), and return */ 680 681 call send_the_buffer; 682 bufp = unm; 683 bufmaxl = bufminl; 684 unmkd_ptr = addrel(bufp, 1+divide(bufminl,4,18,0)); 685 go to print_ret(reti); 686 687 688 689 format_float: /* format a floating point number */ 690 691 /**dcl numeric_to_ascii_ entry(float decimal(59), fixed bin, char(262144) varying); 692*/** /* note return parameter's length is misdeclared. This won't hurt anything because it is declared longer than it should be */ 693 /** 694*/** call numeric_to_ascii_((tstack -> floatb), 8, buffer); /* do the conversion */ 695 /** if index(buffer, ".") = 0 then buffer = buffer || ".0"; /* disallow integer format */ 696 697 /* above code replaced by the following */ 698 699 dcl lisp_flonum_conversion_ entry(1 aligned structure like arg_str); 700 701 dcl 1 arg_str aligned structure, 702 2 flonum float bin(27), 703 2 bufp unaligned pointer, 704 2 temps_for_the_alm_code, 705 3 mantissa fixed bin(27), 706 3 exponent fixed bin(8), 707 3 dec_temp float decimal(10), 708 3 dec_exp float decimal(10), 709 3 dbl_temp fixed bin(71); 710 711 arg_str.flonum = tstack -> floatb; 712 arg_str.bufp = bufp; 713 call lisp_flonum_conversion_(arg_str); /* use eis instructions to convert nicely */ 714 715 call send_the_buffer; 716 717 go to print_ret(reti); 718 719 720 721 722 /* format an array pointer giving type, bounds, and address */ 723 724 dcl array_type fixed bin, 725 array_type_name (0:6) char(12) varying static init( 726 "array", "nil", "fixnum", "flonum", "readtable", "obarray", "dead-array"); 727 728 format_array_pointer: 729 730 buffer = sharp_sign; 731 if tstack -> temp_ptr(1) -> array_info.minus_2_times_ndims = 0 then go to format_external_array_pointer_differently; 732 array_type = tstack -> temp_ptr(1) -> array_info.type; 733 if array_type < 0 then go to format_random; 734 if array_type > 6 then go to format_random; 735 buffer = buffer || array_type_name(array_type); 736 if array_type ^= Dead_array then do; /* put bounds */ 737 Ch1 = "-"; /* character to go before bound */ 738 do i = 1 to tstack -> temp_ptr(1) -> array_info.ndims; 739 buffer = buffer || Ch1; 740 Ch1 = ":"; /* character to go before next bound */ 741 tempd = tstack -> temp_ptr(1) -> array_info.array_data_ptr -> 742 array_data.dope_vector(i-tstack -> temp_ptr(1) -> array_info.ndims).bounds; 743 do idx = 36 repeat (idx-1); 744 j = divide(tempd, 10, 35, 0); 745 numbuff(idx) = substr(DigitSet, tempd-10*j+1, 1); 746 tempd = j; 747 if tempd = 0 then go to format_array_exitloop; 748 end; 749 format_array_exitloop: 750 if length(buffer)+36-idx+1+15 > bufmaxl then do; /* get room for this number + all cruft after it */ 751 bufmaxl = 4 + 8*divide(length(buffer)+36-idx+1+15-4+7, 8, 18, 0); 752 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 753 end; 754 buffer = buffer || substr(string(numbuff), idx, 36-idx+1); 755 end; 756 end; 757 758 /* put address of array_info block */ 759 760 the_array_pointer = tstack -> temp_ptr(1); 761 buffer = buffer || "-"; 762 763 format_array_pointer_address: 764 j = fixed(baseno(the_array_pointer), 18); 765 do idx = 36 by -1; /* until j=0 */ 766 i = divide(j,8,17,0); 767 numbuff(idx) = substr(DigitSet, j-8*i+1, 1); 768 j = i; 769 if j = 0 then go to endloop_0001; 770 end; 771 endloop_0001: 772 buffer = buffer || substr(string(numbuff), idx, 36-idx+1); 773 buffer = buffer || "|"; 774 775 j = fixed(rel(the_array_pointer), 18); 776 do idx = 36 by -1; /* until j=0 */ 777 i = divide(j, 8, 17, 0); 778 numbuff(idx) = substr(DigitSet, j-8*i+1, 1); 779 j = i; 780 if j = 0 then go to endloop_0002; 781 end; 782 endloop_0002: 783 buffer = buffer || substr(string(numbuff), idx, 36-idx+1); 784 785 call send_the_buffer; 786 go to print_ret(reti); 787 788 format_external_array_pointer_differently: 789 790 buffer = buffer || "external@"; 791 the_array_pointer = tstack -> temp_ptr(1) -> array_info.array_data_ptr; 792 go to format_array_pointer_address; 793 794 /* format a file object -- sharp sign and the path name */ 795 796 format_file_object: 797 if addr(tstack -> temp_ptr(1) -> iochan.namelist)->lisp_ptr.type ^= Cons 798 then go to format_random; /* don't want a wta-barf here, since would loop! */ 799 tstack -> temp(1) = tstack -> temp_ptr(1) -> iochan.namelist; /* get namelist, and make into a string */ 800 stack_ptr = addr(tstack -> temp(2)); 801 call lisp_io_fns_$namestring; /* get name of this file as a lisp string */ 802 stack_ptr = addr(tstack -> temp(4)); 803 if 1 + tstack -> temp_ptr(1) -> lisp_string.string_length > bufmaxl 804 then do; /* allocate more buffer */ 805 bufmaxl = 4 + 8*divide(tstack -> temp_ptr(1) -> lisp_string.string_length + 1 - 4 + 7, 8, 18, 0); 806 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 807 end; 808 buffer = sharp_sign; 809 buffer = buffer || tstack -> temp_ptr(1) -> lisp_string.string; 810 call send_the_buffer; 811 go to print_ret(reti); 812 813 format_string: /* print string value */ 814 815 if ^slashing then do; /* easy case, just ship it out */ 816 817 if tstack -> temp_ptr(1) -> lisp_string.string_length > bufmaxl 818 then do; 819 bufmaxl = 4 + 8*divide(tstack -> temp_ptr(1) -> lisp_string.string_length - 4 + 7, 8, 18, 0); 820 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 821 end; 822 buffer = tstack -> temp_ptr(1) -> lisp_string.string; 823 end; 824 else do; /* hard case, have to put in quotes */ 825 buffer = quote; 826 nelemt = tstack -> temp_ptr(1) -> lisp_string.string_length; 827 i = 0; 828 do while (nelemt > 0); /* push out sections not containing quotes */ 829 /*** COMPILER BUG: j = length(before(substr(tstack -> temp_ptr(1) -> lisp_string.string, i+1), quote)); ***/ 830 j = -1 + index(substr(tstack -> temp_ptr(1) -> lisp_string.string, i+1), quote); 831 if j < 0 then j = length(substr(tstack -> temp_ptr(1) -> lisp_string.string, i+1)); 832 if 2 + length(buffer) + j > bufmaxl then do; /* allocate more buffer */ 833 /* note, the '2 + ' is for a possible quote */ 834 bufmaxl = 4 + 8*divide(2 + length(buffer) + j - 4 + 7, 8, 18, 0); 835 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 836 end; 837 buffer = buffer || substr(tstack -> temp_ptr(1) -> lisp_string.string, i+1, j); 838 i = i + j; 839 nelemt = nelemt - j; 840 841 /* now there may be a quote as the next character, or else we're done */ 842 843 if nelemt > 0 then do; /* there is a quote */ 844 buffer = buffer || (quote || quote); 845 i = i + 1; 846 nelemt = nelemt - 1; 847 end; 848 end; 849 850 /* stick one more quote on the end */ 851 852 if length(buffer) + 1 > bufmaxl then do; 853 bufmaxl = 4 + 8*divide(length(buffer) + 1 - 4 + 7, 8, 18, 0); 854 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 855 end; 856 buffer = buffer || quote; 857 end; 858 859 /* string has been formatted into buffer, type it out and return */ 860 861 call send_the_buffer; 862 863 go to print_ret(reti); 864 865 format_symbol: 866 867 if tstack -> temp_ptr(1) -> atom.pnamel = 0 then go to print_ret(reti); 868 869 Ch1 = substr(tstack -> temp_ptr(1) -> atom.pname,1,1); 870 Ch1_syntax = read_table.syntax(binary(unspec(Ch1),9)); 871 if tstack -> temp_ptr(1) -> atom.pnamel = 1 872 then Ch2_syntax = "0"b; /* cause code below to work */ 873 else do; 874 Ch2 = substr(tstack -> temp_ptr(1) -> atom.pname,2,1); 875 Ch2_syntax = read_table.syntax(binary(unspec(Ch2),9)); 876 end; 877 878 if ^ slashing then do; /* no slashing, just copy out the pname */ 879 if tstack -> temp_ptr(1) -> atom.pnamel > bufmaxl 880 then do; /* allocate some more buffer */ 881 bufmaxl = 4 + 8*divide(tstack -> temp_ptr(1) -> atom.pnamel - 4 + 7, 8, 18, 0); 882 unmkd_ptr = addrel(bufp, 1+divide(bufmaxl, 4, 18, 0)); 883 end; 884 buffer = tstack -> temp_ptr(1) -> atom.pname; 885 call send_the_buffer; 886 go to print_ret(reti); 887 end; 888 /* slashing, see if first character should be slashed */ 889 else if Ch1_syntax & single_char_object 890 then if Ch2_syntax then go to slash_first_char; 891 else go to dont_slash_first_char; /* suppress slash for lone sco */ 892 else if Ch1_syntax & slash_if_first 893 then if Ch1_syntax & slash_if_not_first then go to slash_first_char; 894 else if Ch1_syntax & plus_minus 895 then if Ch2_syntax = ""b then go to dont_slash_first_char; 896 else if Ch2_syntax & slash_suppressors then go to dont_slash_first_char; 897 else go to slash_first_char; 898 else if Ch1_syntax & digit 899 then if Ch2_syntax & shift_scale then go to slash_first_char; 900 else if Ch2_syntax & slash_suppressors then go to dont_slash_first_char; 901 else go to slash_first_char; 902 else go to slash_first_char; /* something random, better slash it */ 903 else go to dont_slash_first_char; /* slash bit not turned on */ 904 905 dont_slash_first_char: 906 buffer = Ch1; 907 go to scan_pname; 908 909 slash_first_char: 910 buffer = "//"; 911 substr(buffer, 2, 1) = Ch1; /* efficiency hack */ 912 913 scan_pname: 914 915 /* now scan through pname, putting out characters and slashes */ 916 917 do i = 2 by 1 while( i <= tstack -> temp_ptr(1) -> atom.pnamel ); 918 Ch1 = substr(tstack -> temp_ptr(1) -> atom.pname, i, 1); 919 if read_table.syntax(binary(unspec(Ch1), 9)) & slash_if_not_first 920 then do; /* put out a slash before this char. */ 921 call ensure_room_in_buffer; 922 buffer = buffer || "/"; 923 end; 924 call ensure_room_in_buffer; /* now put out the character */ 925 buffer = buffer || Ch1; 926 end; 927 928 call send_the_buffer; 929 930 go to print_ret(reti); 931 932 933 ensure_room_in_buffer: procedure; 934 935 if length(buffer) >= bufmaxl then do; 936 bufmaxl = bufmaxl + 8; /* append two more words to buffer */ 937 unmkd_ptr = addrel(unmkd_ptr, 2); 938 end; 939 end ensure_room_in_buffer; 940 941 format_random: /* non-printable type */ 942 943 /* format up as a sharp sign and 24 octal digits */ 944 945 buffer = sharp_sign; 946 947 do i = 1 to 24; 948 buffer = buffer || substr(DigitSet, 1+binary(tstack -> octal_byte(i), 3), 1); 949 end; 950 call send_the_buffer; 951 go to print_ret(reti); 952 953 /*** internal procedures for sending characters out (the "I/O" routines) ***/ 954 955 956 send_the_buffer: procedure; 957 958 if printing then do; 959 if send_to_tty then call send_buffer_to_tty; 960 if send_to_files then call send_buffer_to_files; 961 end; 962 963 else if flatsw then stack -> fixedb = stack -> fixedb + length(buffer); 964 965 else do; /* exploding */ 966 967 do i = 1 to length(buffer); 968 tstack -> temp(3) = stack -> temp(1); /* list so far */ 969 Ch1 = substr(buffer, i, 1); 970 idx = rank (Ch1); /* 511 chars BSG 10/13/80 */ 971 if explodensw then do; 972 addr(tstack -> temp(2)) -> fixnum_fmt.type_info = fixnum_type; 973 addr(tstack -> temp(2)) -> fixedb = idx; 974 end; 975 else do; 976 dcl charobjp ptr, 977 char_obj fixed bin(71) aligned based(charobjp), 978 1 obarray_structure based aligned, 979 2 hash_table(0:510) fixed bin(71), 980 2 char_objects(0:127) fixed bin(71); 981 if idx > 127 then call lisp_get_atom_ (Ch1,tstack -> temp (2)); 982 else do; 983 charobjp=addr (addr(obarray)->based_ptr->atom_ptrs.value->array_info.array_data_ptr->char_objects(idx) ); 984 985 if char_obj = nil then do; 986 if idx = 0 then call lisp_get_atom_("", char_obj); 987 else call lisp_get_atom_(Ch1, char_obj); 988 end; 989 tstack -> temp(2) = char_obj; 990 end; 991 end; 992 stack_ptr = addr(tstack -> temp(4)); /* list printer screws this up */ 993 call lisp_special_fns_$cons; 994 stack -> temp(1) = tstack -> temp(2); 995 stack_ptr = addr(tstack -> temp(4)); 996 end; 997 end; 998 999 end send_the_buffer; 1000 1001 send_buffer_to_files: proc; 1002 1003 if destl then do; 1004 tstack -> temp(3) = stack -> temp(2); /* list of files */ 1005 do while(tstack -> temp_type(3) = Cons); 1006 tstack -> temp(2) = tstack -> temp_ptr(3) -> cons.car; 1007 tstack -> temp(3) = tstack -> temp_ptr(3) -> cons.cdr; 1008 call send_buffer_to_a_file; 1009 end; 1010 end; 1011 1012 else if dest1 then do; 1013 tstack -> temp(2) = stack -> temp(2); /* a single file */ 1014 call send_buffer_to_a_file; 1015 end; 1016 end send_buffer_to_files; 1017 1018 1019 send_buffer_to_tty: proc; 1020 1021 dcl outp pointer, /* -> iochan structure for file outputting on */ 1022 same_line bit(1), /* "1"b means could put auto newline, "0"b means already done */ 1023 invoke_endpagefn bit(1), /* flag that page broke in the middle of the buffer */ 1024 hpos fixed bin, /* horizontal position temp. during motion computation */ 1025 position fixed bin(18), /* position in buffer */ 1026 i fixed bin(18), /* temp. */ 1027 nelemt fixed bin(18), /* count of number of elements in various loops */ 1028 starting_index fixed bin(18), /* where to start outputting from */ 1029 Nelemt fixed bin(18), /* count of number of elements left to do in buffer */ 1030 saved_nelemt fixed bin(18), /* number of elements that were sent out */ 1031 amount fixed bin(18); /* number of characters that could be put out and fit */ 1032 1033 1034 if ^ explicit_tty /* if not (print foo t), look at ^w */ 1035 then if addr(ctrlW) -> based_ptr -> atom.value ^= nil then return; /* tty output suppressed */ 1036 tstack -> temp(2) = nil; 1037 1038 send_buffer_to_a_file: entry; 1039 1040 Nelemt = length(buffer); 1041 starting_index = 1; 1042 1043 retry: if tstack -> temp(2) = nil then outp = lisp_static_vars_$tty_output_chan; 1044 else if tstack -> temp(2) = t_atom then outp = lisp_static_vars_$tty_output_chan; 1045 else if tstack -> temp_type36(2) & File36 then outp = tstack -> temp_ptr(2); 1046 else do; /* error */ 1047 unmp = unmkd_ptr; 1048 unmkd_ptr = addrel(unmp, 2); 1049 unmp -> errcode(1) = bad_output_dest; 1050 call lisp_error_; /* the losing file is on top of the stack */ 1051 go to retry; 1052 end; 1053 1054 /* make sure abbreviation allows this buffer to go to this destination */ 1055 1056 if (tstack -> temp_type36(2) & File36) = ""b 1057 then do; /* tty */ 1058 if abbreved_out_flag then return; 1059 end; 1060 else do; /* non-tty file */ 1061 if abbrev_on_files & abbreved_out_flag then return; 1062 if bool(abbrev_on_files, abbreving_flag, "0110"b) then return; 1063 end; 1064 1065 /* check that this iochan is OK to use */ 1066 1067 if string(outp -> iochan.flags) & not_ok_to_write 1068 then if lisp_io_control_$fix_not_ok_iochan(outp, "1"b) 1069 then return; 1070 string(outp -> iochan.flags) = string(outp -> iochan.flags) & flag_reset_mask; /* clear certain flags */ 1071 1072 if Nelemt = 0 then return; /* seem to be all done */ 1073 invoke_endpagefn = "0"b; 1074 1075 /* compute motion due to this string and do auto-terpri stuff */ 1076 1077 same_line = "1"b; 1078 compute_motion: 1079 position = starting_index; 1080 nelemt = Nelemt; 1081 hpos = outp -> iochan.charpos; 1082 do while (nelemt > 0); 1083 i = search(substr(buffer, position, nelemt), format_effectors); 1084 if i = 0 then i = nelemt + 1; /* rest of string is normal characters */ 1085 if i > 1 then do; /* some normal chars to process */ 1086 hpos = hpos + (i - 1); /* compute horizonal motion */ 1087 position = position + (i - 1); 1088 nelemt = nelemt - (i - 1); 1089 check_hpos: if same_line /* do auto terpri stuff */ 1090 then if ^ status_terpri 1091 then if outp -> iochan.image_mode = "0"b 1092 then if outp -> iochan.linel ^= 0 1093 then if outp -> iochan.linel < hpos 1094 then if hpos > i-1 then do; 1095 same_line = "0"b; /* now on new line, don't loop infinitely */ 1096 call send_out_newline; 1097 if substr(buffer, starting_index, 1) = space 1098 then do; 1099 starting_index = starting_index + 1; 1100 Nelemt = Nelemt - 1; 1101 end; 1102 go to compute_motion; 1103 end; 1104 end; 1105 else do; /* this character is a format effector */ 1106 Ch1 = substr(buffer, position, 1); 1107 position = position + 1; 1108 nelemt = nelemt - 1; 1109 if Ch1 = backspace then if hpos > 0 then hpos = hpos - 1; else; 1110 else if Ch1 = tab then do; 1111 hpos = 10 * divide(hpos + 10, 10, 17, 0); 1112 go to check_hpos; 1113 end; 1114 else if Ch1 = newline then do; 1115 hpos = 0; 1116 same_line = "0"b; /* no need for auto terpri now */ 1117 outp -> iochan.nlsync = "1"b; 1118 outp -> iochan.linenum = outp -> iochan.linenum + 1; 1119 if outp -> iochan.pagel ^= 0 1120 then if outp -> iochan.pagel <= outp -> iochan.linenum 1121 then go to move_to_new_page; 1122 end; 1123 else if Ch1 = newpage then do; 1124 hpos = 0; 1125 same_line = "0"b; 1126 move_to_new_page: outp -> iochan.linenum = 0; 1127 outp -> iochan.pagenum = outp -> iochan.pagenum + 1; 1128 1129 /* invoke the endpagefn if there is one - but first send buffer to devicee */ 1130 1131 if ^ outp -> iochan.interactive 1132 then if outp -> iochan.function ^= nil 1133 then do; 1134 invoke_endpagefn = "1"b; 1135 nelemt = position - starting_index; 1136 go to exitloop; 1137 end; 1138 end; 1139 1140 else if Ch1 = carriage_return then hpos = 0; 1141 end; 1142 end; 1143 1144 exitloop: /* we have either processed it all or stopped because of end of page. 1145* update charpos from hpos then if endpagefn needs to be invoked, 1146* send partial buffer to device, invoke endpagefn, send rest of buffer */ 1147 1148 outp -> iochan.charpos = hpos; 1149 1150 if invoke_endpagefn then do; 1151 nelemt = position-1; /* up to and including NP char. */ 1152 go to send_to_device; 1153 end; 1154 1155 /* special checks for tty: read_print_nl_sync and ^w */ 1156 1157 if (tstack -> temp_type36(2) & File36) = ""b then do; 1158 if read_print_nl_sync then do; 1159 if substr(buffer, starting_index, 1) = newline then do; 1160 starting_index = starting_index + 1; 1161 Nelemt = Nelemt - 1; 1162 end; 1163 read_print_nl_sync = "0"b; 1164 end; 1165 end; 1166 1167 /* send this buffer to this device */ 1168 1169 nelemt = Nelemt; 1170 send_to_device: 1171 saved_nelemt = nelemt; 1172 do while(nelemt > 0); 1173 compute_amount: 1174 amount = outp -> iochan.iolength - outp -> iochan.ioindex; 1175 if amount = 0 then do; 1176 call lisp_io_control_$end_of_block(outp, cruft, code); 1177 if code = -2 then return; /* can't accept any more output */ 1178 go to compute_amount; 1179 end; 1180 if amount > nelemt then amount = nelemt; 1181 substr(outp -> ioptr -> io_buffer, outp -> ioindex+1, amount) = 1182 substr(buffer, starting_index, amount); /* move into buffer */ 1183 starting_index = starting_index + amount; 1184 nelemt = nelemt - amount; 1185 outp -> ioindex = outp -> ioindex + amount; 1186 end; 1187 1188 /* now may need to invoke endpagefn */ 1189 1190 if invoke_endpagefn then do; 1191 starting_index = starting_index + saved_nelemt; 1192 Nelemt = Nelemt - saved_nelemt; 1193 invoke_endpagefn = "0"b; 1194 call flush_buffers; 1195 1196 stack_ptr = addr(tstack -> temp(7)); /* need 3 more cells */ 1197 tstack -> temp(4) = outp -> iochan.function; 1198 tstack -> temp(5) = tstack -> temp(2); /* file */ 1199 tstack -> temp(6) = nil; 1200 call lisp_special_fns_$cons; 1201 call lisp_$apply; 1202 1203 go to retry; /* recompute outp (in case gc) and do rest of buffer */ 1204 end; 1205 1206 1207 send_out_newline: proc; /* needed since can't change the buffer */ 1208 1209 dcl invoke_endpagefn bit(1) init("0"b); /* localized because means exit through routine 1210* that might set flag in outside world, not set flag in o.w. */ 1211 1212 /* check that this iochan is OK to use */ 1213 1214 if string(outp -> iochan.flags) & not_ok_to_write 1215 then if lisp_io_control_$fix_not_ok_iochan(outp, "1"b) 1216 then return; 1217 string(outp -> iochan.flags) = string(outp -> iochan.flags) & flag_reset_mask; /* clear certain flags */ 1218 1219 outp -> iochan.charpos = 0; 1220 outp -> iochan.nlsync = "1"b; 1221 outp -> iochan.extra_nl_done = "1"b; 1222 outp -> iochan.linenum = outp -> iochan.linenum + 1; 1223 if outp -> iochan.pagel ^= 0 1224 then if outp -> iochan.pagel <= outp -> iochan.linenum 1225 then invoke_endpagefn = "1"b; 1226 1227 if outp -> iochan.iolength <= outp -> iochan.ioindex then do; 1228 call lisp_io_control_$end_of_block(outp, cruft, code); 1229 if code = -2 then return; 1230 end; 1231 substr(outp -> ioptr -> io_buffer, outp -> ioindex+1, 1) = newline; 1232 outp -> ioindex = outp -> ioindex + 1; 1233 if invoke_endpagefn then do; 1234 position = starting_index; 1235 go to move_to_new_page; /* GROSS: eventually will do the right thing though */ 1236 end; 1237 end send_out_newline; 1238 1239 1240 end send_buffer_to_tty; 1241 1242 flush_buffers: proc; 1243 1244 dcl tstack pointer, 1245 outp pointer; 1246 1247 /* call end_of_block for any interactive output iochans */ 1248 1249 if send_to_tty 1250 then do; 1251 outp = tty_output_chan; 1252 call flush2; 1253 end; 1254 1255 if dest1 then do; 1256 if stack -> temp(2) = nil then outp = tty_output_chan; 1257 else if stack -> temp(2) = t_atom then outp = tty_output_chan; 1258 else if stack -> temp_type36(2) & File36 then outp = stack -> temp_ptr(2); 1259 else go to ng1; 1260 1261 call flush2; 1262 ng1: end; 1263 else if destl then do; 1264 tstack = stack_ptr; 1265 stack_ptr = addrel(tstack, 2); 1266 do tstack -> temp(1) = stack -> temp(2) 1267 repeat (tstack -> temp_ptr(1) -> cons.cdr) 1268 while (tstack -> temp_type(1) = Cons); 1269 if tstack -> temp_ptr(1) -> cons.car = nil then outp = tty_output_chan; 1270 else if tstack -> temp_ptr(1) -> cons.car = t_atom then outp = tty_output_chan; 1271 else if tstack -> temp_ptr(1) -> cons_types36.car & File36 1272 then outp = tstack -> temp_ptr(1) -> cons_ptrs.car; 1273 else go to ng2; 1274 call flush2; 1275 ng2: end; 1276 stack_ptr = tstack; 1277 end; 1278 1279 1280 flush2: proc; /* proc to maybe flush buffer of outp -> iochan */ 1281 1282 1283 if ^ outp -> iochan.seg then 1284 if outp -> iochan.charmode then go to flush3; 1285 else if outp -> iochan.interactive then if outp -> iochan.nlsync then 1286 flush3: if ^ outp -> iochan.write then 1287 if outp -> iochan.ioindex > 0 1288 then do; 1289 if string(outp -> iochan.flags) & not_ok_to_write then 1290 if lisp_io_control_$fix_not_ok_iochan(outp, "1"b) then return; 1291 call lisp_io_control_$end_of_block(outp, stack -> temp(1), code); 1292 end; 1293 end flush2; 1294 1295 end flush_buffers; 1296 1297 bad_readtable: 1298 /* first attempt to fix the readtable so user can input */ 1299 1300 stack = stack_ptr; 1301 stack_ptr = addr(stack -> temp(3)); 1302 stack -> temp(1) = readtable; /* get the array property, which should be original readtable */ 1303 stack -> temp(2) = array_atom; 1304 call lisp_property_fns_$get; 1305 addr(readtable)->based_ptr -> atom.value = stack -> temp(1); 1306 1307 /* now signal the uncorrectable error */ 1308 1309 unmkd_ptr = addrel(unm, 2); 1310 unm -> errcode(1) = badreadtable; 1311 call lisp_error_; 1312 1313 /*** internal procedures to prepare for printing. 1314* which procedure is called depends on what entry we came in on. 1315* these procedures set stack -> temp(2), set flags, 1316* and set up the buffer in the unmarked pdl ***/ 1317 1318 get_dest: proc; /* for lsubrs */ 1319 1320 stack = addrel(stack_ptr, -2); /* lsubr */ 1321 nargs = stack -> fixedb; 1322 stack = addrel(stack, nargs); 1323 join2: explicit_tty = "0"b; 1324 if nargs = -2 then go to joint; /* only 1 arg is like subr */ 1325 1326 /* 2nd arg was given */ 1327 1328 send_to_tty = "0"b; 1329 send_to_files = "1"b; 1330 1331 /* stack -> temp(2) is file or list of files */ 1332 1333 if stack -> temp_type(2) = Cons then do; 1334 destl = "1"b; 1335 dest1 = "0"b; 1336 end; 1337 else do; 1338 dest1 = "1"b; 1339 destl = "0"b; 1340 end; 1341 go to check_for_tty_as_file_and_set_up_the_buffer_then_return; 1342 1343 get_dest_4_terpri: entry; /* special for terpri which has one less arg */ 1344 1345 stack = addrel(stack_ptr, -2); 1346 nargs = stack -> fixedb; 1347 stack = addrel(stack, nargs); 1348 if nargs = 0 then /* simulate extra arg */ 1349 do; 1350 nargs = -2; 1351 stack_ptr = addr(stack -> temp(3)); 1352 end; 1353 else do; 1354 nargs = -4; 1355 stack -> temp(2) = stack -> temp(1); /* arg given, make look like 2nd */ 1356 end; 1357 go to join2; 1358 1359 get_dest_non_lsubr: entry; 1360 1361 stack = stack_ptr; 1362 printing = "1"b; 1363 stack_ptr = addr(stack -> temp(4)); 1364 go to joint; 1365 1366 get_dest_subr: entry; 1367 1368 stack = addrel(stack_ptr, -2); /* for subr 1 entry points */ 1369 joint: 1370 flatsw = "0"b; 1371 if addr(ctrlR)->based_ptr -> atom.value ^= nil then 1372 do; 1373 stack -> temp(2) = addr(outfiles)->based_ptr -> atom.value; 1374 if stack -> temp_type(2) then do; 1375 dest1 = "0"b; 1376 destl = "0"b; 1377 end; 1378 else do; 1379 destl = "1"b; 1380 dest1 = "0"b; 1381 end; 1382 end; 1383 else dest1, destl = "0"b; 1384 1385 if (dest1 | destl) = ""b 1386 then send_to_files = "0"b; 1387 else send_to_files = "1"b; 1388 1389 send_to_tty = "1"b; /* check ^w dynamically so user can 1390* turn off long output after it starts. */ 1391 1392 check_for_tty_as_file_and_set_up_the_buffer_then_return: 1393 1394 if send_to_files 1395 then if dest1 1396 then if stack -> temp(2) = nil then go to not_really_to_files; 1397 else if stack -> temp(2) = t_atom then go to not_really_to_files; 1398 else; 1399 else if destl 1400 then if stack -> temp_type(2) then go to not_really_to_files; /* empty list */ 1401 else if stack -> temp_ptr(2) -> cons.car = nil | 1402 stack -> temp_ptr(2) -> cons.car = t_atom 1403 then if stack -> temp_ptr(2) -> cons.cdr = nil 1404 then go to not_really_to_files; 1405 1406 go to really_to_files; 1407 1408 not_really_to_files: 1409 explicit_tty = "1"b; 1410 send_to_files = "0"b; /* this hackery makes abbreviation work better */ 1411 send_to_tty = "1"b; 1412 1413 really_to_files: 1414 call set_up_buffer; 1415 end get_dest; 1416 1417 1418 /* here is the routine that sets up all the cruft in the unmarked pdl */ 1419 1420 set_up_buffer: proc; 1421 1422 unm, bufp = unmkd_ptr; 1423 bufmaxl = bufminl; 1424 unmkd_ptr = addrel(bufp, divide(bufmaxl,4,18,0)+1); /* protect buffer */ 1425 buffer = ""; 1426 tstack = addr(stack -> temp(3)); 1427 stack_ptr = addr(tstack -> temp(4)); 1428 end; 1429 1430 1431 1432 end print; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1126.0 lisp_print_.pl1 >udd>sm>ds>w>ml>lisp_print_.pl1 157 1 03/27/82 0537.0 lisp_bignum_fmt.incl.pl1 >ldd>incl>lisp_bignum_fmt.incl.pl1 158 2 03/27/82 0537.0 lisp_bignum_io_data.incl.pl1 >ldd>incl>lisp_bignum_io_data.incl.pl1 159 3 03/27/82 0537.0 lisp_ptr_fmt.incl.pl1 >ldd>incl>lisp_ptr_fmt.incl.pl1 160 4 07/06/83 1211.5 lisp_name_codes.incl.pl1 >ldd>incl>lisp_name_codes.incl.pl1 161 5 03/27/82 0537.0 lisp_stack_fmt.incl.pl1 >ldd>incl>lisp_stack_fmt.incl.pl1 162 6 03/27/82 0537.0 lisp_common_vars.incl.pl1 >ldd>incl>lisp_common_vars.incl.pl1 163 7 03/27/82 0537.0 lisp_readtable.incl.pl1 >ldd>incl>lisp_readtable.incl.pl1 164 8 03/27/82 0537.1 lisp_array_fmt.incl.pl1 >ldd>incl>lisp_array_fmt.incl.pl1 170 9 03/27/82 0537.0 lisp_nums.incl.pl1 >ldd>incl>lisp_nums.incl.pl1 171 10 03/27/82 0537.0 lisp_cons_fmt.incl.pl1 >ldd>incl>lisp_cons_fmt.incl.pl1 172 11 03/27/82 0537.1 lisp_atom_fmt.incl.pl1 >ldd>incl>lisp_atom_fmt.incl.pl1 173 12 03/27/82 0536.9 lisp_string_fmt.incl.pl1 >ldd>incl>lisp_string_fmt.incl.pl1 174 13 03/27/82 0537.0 lisp_io.incl.pl1 >ldd>incl>lisp_io.incl.pl1 13-5 14 03/27/82 0537.0 lisp_iochan.incl.pl1 >ldd>incl>lisp_iochan.incl.pl1 13-45 15 03/27/82 0537.0 lisp_control_chars.incl.pl1 >ldd>incl>lisp_control_chars.incl.pl1 175 16 03/27/82 0537.0 lisp_error_codes.incl.pl1 >ldd>incl>lisp_error_codes.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Array36 constant bit(36) initial dcl 3-17 ref 337 408 Atsym36 constant bit(36) initial dcl 3-17 ref 405 Bigfix36 constant bit(36) initial dcl 3-17 ref 404 Ch1 000126 automatic char(1) dcl 29 set ref 737* 739 740* 869* 870 905 911 918* 919 925 969* 970 981* 987* 1106* 1109 1110 1114 1123 1140 Ch1_syntax 000130 automatic bit(27) dcl 29 set ref 870* 889 892 892 894 898 Ch2 000127 automatic char(1) dcl 29 set ref 874* 875 Ch2_syntax 000131 automatic bit(27) dcl 29 set ref 871* 875* 889 894 896 898 900 Cons constant bit(9) initial packed unaligned dcl 3-17 ref 796 1005 1266 1333 Dead_array constant fixed bin(17,0) initial dcl 8-20 ref 736 DigitSet 000145 constant char(36) initial packed unaligned dcl 145 ref 572 658 745 767 778 948 File36 constant bit(36) initial dcl 3-17 ref 407 1045 1056 1157 1258 1271 Nelemt 000317 automatic fixed bin(18,0) dcl 1021 set ref 1040* 1072 1080 1100* 1100 1161* 1161 1169 1192* 1192 Readtable_array constant fixed bin(17,0) initial dcl 8-20 ref 348 String36 constant bit(36) initial dcl 3-17 ref 406 a_lisp_datum based structure level 1 dcl 137 abbrev_on_files 000114 automatic bit(1) dcl 29 set ref 268* 295* 314* 327* 362* 376 1061 1062 abbreved_out_flag 000111 automatic bit(1) dcl 29 set ref 268* 295* 314* 327* 361* 428 438* 455 463* 472 515* 1058 1061 abbreviate_on_files 435 based bit(1) level 2 dcl 7-11 ref 362 abbreviate_on_flat 436 based bit(1) level 2 dcl 7-11 ref 363 abbreving_flag 000110 automatic bit(1) dcl 29 set ref 268* 295* 314* 327* 361* 430* 435* 457* 462* 1062 addr builtin function dcl 126 ref 320 337 337 348 362 362 363 363 432 448 449 459 484 530 550 590 593 630 630 630 630 667 675 796 800 802 870 870 875 875 919 919 972 973 983 983 992 995 1034 1089 1089 1196 1301 1305 1351 1363 1371 1373 1426 1427 addrel builtin function dcl 126 ref 248 262 282 301 417 419 466 476 501 546 556 581 600 684 752 806 820 835 854 882 937 1048 1265 1309 1320 1322 1345 1347 1368 1424 amount 000321 automatic fixed bin(18,0) dcl 1021 set ref 1173* 1175 1180 1180* 1181 1181 1183 1184 1185 arg_str 000204 automatic structure level 1 dcl 701 set ref 713* array based pointer level 2 dcl 145 ref 567 567 568 573 array_atom defined fixed bin(71,0) dcl 6-6 ref 1303 array_data based structure level 1 dcl 8-31 array_data_ptr 2 based pointer level 2 dcl 8-8 ref 362 363 630 630 741 791 870 875 919 983 1089 array_info based structure level 1 dcl 8-8 array_type 000220 automatic fixed bin(17,0) dcl 724 set ref 732* 733 734 735 736 array_type_name 000003 constant varying char(12) initial array dcl 724 ref 735 atom based structure level 1 dcl 11-5 atom_ptrs based structure level 1 dcl 11-5 backspace constant char(1) initial packed unaligned dcl 97 ref 1109 bad_arg_correctable constant fixed bin(17,0) initial dcl 16-8 ref 283 bad_base constant fixed bin(17,0) initial dcl 16-8 ref 601 bad_output_dest constant fixed bin(17,0) initial dcl 16-8 ref 1049 badreadtable constant fixed bin(17,0) initial dcl 16-8 ref 1310 base defined fixed bin(71,0) dcl 13-17 set ref 590 593 based_ptr based pointer dcl 3-16 ref 337 348 362 362 363 363 590 593 630 630 630 630 667 675 870 870 875 875 919 919 983 1034 1089 1089 1305 1371 1373 begin_with_nl 000102 automatic bit(1) dcl 29 set ref 183* 195* 208* 220* 393 524 bigradix 000037 constant fixed bin(35,0) initial array dcl 2-13 ref 548 binary builtin function dcl 126 ref 571 571 657 870 875 919 948 bit36 000200 automatic bit(36) dcl 145 set ref 635* 636 640 642 644 646 648 650 bndigs based fixed bin(35,0) array dcl 145 ref 567 567 568 573 bnprintargs based structure level 1 dcl 145 set ref 546 bounds based fixed bin(35,0) array level 3 dcl 8-31 ref 741 buffer based varying char(262143) dcl 107 set ref 275* 304* 317* 329* 395* 443* 481* 491* 496* 525* 560* 562* 563* 578 580 583* 583 611* 616* 620* 663* 663 667* 667 672* 672 728* 735* 735 739* 739 749 751 754* 754 761* 761 771* 771 773* 773 782* 782 788* 788 808* 809* 809 822* 825* 832 834 837* 837 844* 844 852 853 856* 856 884* 905* 909* 911* 922* 922 925* 925 935 941* 948* 948 963 967 969 1040 1083 1097 1106 1159 1181 1425* bufmaxl 000160 automatic fixed bin(18,0) dcl 107 set ref 298 300* 301 418* 506* 506 555* 578 580* 581 683* 749 751* 752 803 805* 806 817 819* 820 832 834* 835 852 853* 854 879 881* 882 935 936* 936 1423* 1424 bufminl constant fixed bin(18,0) initial dcl 107 ref 418 419 555 556 683 684 1423 bufp 1 000204 automatic pointer level 2 in structure "arg_str" packed packed unaligned dcl 701 in procedure "print" set ref 712* bufp 000154 automatic pointer dcl 107 in procedure "print" set ref 275 301 304 317 329 395 417* 419 422 431 432* 434* 443 458 459* 461* 481 491 496 505* 525 554* 556 560 562 563 578 580 581 583 583 611 616 620 663 663 667 667 672 672 682* 684 712 728 735 735 739 739 749 751 752 754 754 761 761 771 771 773 773 782 782 788 788 806 808 809 809 820 822 825 832 834 835 837 837 844 844 852 853 854 856 856 882 884 905 909 911 922 922 925 925 935 941 948 948 963 967 969 1040 1083 1097 1106 1159 1181 1422* 1424 1425 car based pointer level 2 in structure "cons_ptrs" dcl 10-5 in procedure "print" ref 1271 car based bit(36) level 2 in structure "cons_types36" dcl 10-22 in procedure "print" ref 1271 car based fixed bin(71,0) level 2 in structure "cons" dcl 10-5 in procedure "print" ref 446 1006 1269 1270 1401 1401 carriage_return constant char(1) initial packed unaligned dcl 97 ref 1140 cdr 2 based fixed bin(71,0) level 2 dcl 10-5 ref 447 1007 1275 1401 char_obj based fixed bin(71,0) dcl 976 set ref 985 986* 987* 989 char_objects 1776 based fixed bin(71,0) array level 2 dcl 976 set ref 983 charmode 15(07) based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1283 charobjp 000266 automatic pointer dcl 976 set ref 983* 985 986 987 989 charpos 13 based fixed bin(17,0) level 2 dcl 14-13 set ref 1081 1144* 1219* check_prinlength 000116 automatic bit(1) dcl 29 set ref 356* 358* 380* 452 514 check_prinlevel 000115 automatic bit(1) dcl 29 set ref 353* 355* 380* 425 513 code 000121 automatic fixed bin(17,0) dcl 29 set ref 571* 572 657* 658 1176* 1177 1228* 1229 1291* cons based structure level 1 dcl 10-5 cons_ptrs based structure level 1 dcl 10-5 cons_types36 based structure level 1 dcl 10-22 cruft 000134 automatic fixed bin(71,0) dcl 29 set ref 1176* 1228* ctrlR defined fixed bin(71,0) dcl 15-11 set ref 1371 ctrlW defined fixed bin(71,0) dcl 15-14 set ref 1034 curlength 000141 automatic fixed bin(35,0) dcl 84 set ref 421 423* 451* 451 452 508* 514 curlevel 000140 automatic fixed bin(35,0) dcl 84 set ref 360* 424* 424 425 509* 509 513 dest1 000103 automatic bit(1) dcl 29 set ref 1012 1255 1335* 1338* 1375* 1380* 1383* 1385 1392 destl 000104 automatic bit(1) dcl 29 set ref 1003 1263 1334* 1339* 1376* 1379* 1383* 1385 1399 digit constant bit(27) initial packed unaligned dcl 7-27 ref 898 digsperwd 000102 constant fixed bin(17,0) initial array dcl 2-13 ref 545 divide builtin function dcl 126 ref 300 301 419 556 570 580 581 655 684 744 751 752 766 777 805 806 819 820 834 835 853 854 881 882 1111 1424 dope_vector based structure array level 2 dcl 8-31 dot_dot_dot_buffer 000012 internal static varying char(4) initial dcl 29 set ref 459 dpw 000201 automatic fixed bin(17,0) dcl 145 set ref 545* 569 577 errcode based fixed bin(17,0) array dcl 29 set ref 283* 284* 601* 1049* 1310* explicit_tty 000105 automatic bit(1) dcl 29 set ref 1034 1323* 1408* explodensw 000117 automatic bit(1) dcl 29 set ref 238* 244* 971 extra_nl_done 15(08) based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1221* fixedb 1 based fixed bin(17,0) level 2 dcl 9-4 set ref 272 273 275 351 352 390* 593 616 619* 619 628 635 638* 642* 646* 650* 655 657 660* 673* 963* 963 973* 1321 1346 fixnum_fmt based structure level 1 dcl 9-4 fixnum_type constant bit(36) initial dcl 9-4 ref 270 353 356 389 402 590 972 flag_reset_mask constant bit(36) initial dcl 14-13 ref 1070 1217 flags 15 based structure level 2 packed packed unaligned dcl 14-13 set ref 1067 1070* 1070 1214 1217* 1217 1289 flatsw 000120 automatic bit(1) dcl 29 set ref 197* 224* 247* 260* 386 532 963 1369* floatb 1 based float bin(27) level 2 dcl 9-4 ref 711 flonum 000204 automatic float bin(27) level 2 dcl 701 set ref 711* flonum_fmt based structure level 1 dcl 9-4 flonum_type constant bit(36) initial dcl 9-4 ref 403 fn_tyo constant fixed bin(17,0) initial dcl 4-9 ref 284 format_effectors 000156 constant char(5) initial packed unaligned dcl 97 ref 1083 function 16 based fixed bin(71,0) level 2 dcl 14-13 ref 1131 1197 hbound builtin function dcl 126 ref 567 573 hpos 000312 automatic fixed bin(17,0) dcl 1021 set ref 1081* 1086* 1086 1089 1089 1109 1109* 1109 1111* 1111 1115* 1124* 1140* 1144 i 000123 automatic fixed bin(17,0) dcl 29 in procedure "print" set ref 569* 572* 577* 578 580 583 654* 658* 663 738* 741* 766* 767 768 777* 778 779 827* 830 831 837 838* 838 845* 845 913* 913* 918* 947* 948* 967* 969* i 000314 automatic fixed bin(18,0) dcl 1021 in procedure "send_buffer_to_tty" set ref 1083* 1084 1084* 1085 1086 1087 1088 1089 idx 000125 automatic fixed bin(17,0) dcl 29 set ref 570* 571 573 575 655* 656 659 660 743* 745* 748* 749 751 754 754 765* 767* 771 771 776* 778* 782 782 970* 973 981 983 986 image_mode 15(10) based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1089 index builtin function dcl 126 ref 830 interactive 15(04) based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1131 1285 invoke_endpagefn 000311 automatic bit(1) packed unaligned dcl 1021 in procedure "send_buffer_to_tty" set ref 1073* 1134* 1150 1190 1193* invoke_endpagefn 000330 automatic bit(1) initial packed unaligned dcl 1209 in procedure "send_out_newline" set ref 1209* 1223* 1233 io_buffer based char(262143) dcl 29 set ref 1181* 1231* iochan based structure level 1 dcl 14-13 ioindex based fixed bin(24,0) level 2 dcl 14-13 set ref 1173 1181 1185* 1185 1227 1231 1232* 1232 1285 iolength 1 based fixed bin(24,0) level 2 dcl 14-13 ref 1173 1227 ioptr 2 based pointer level 2 dcl 14-13 ref 1181 1231 itsmod 0(30) based bit(6) level 2 packed packed unaligned dcl 3-17 ref 410 488 j 000124 automatic fixed bin(17,0) dcl 29 set ref 567* 568 573* 744* 745 746 763* 766 767 768* 769 775* 777 778 779* 780 830* 831 831* 832 834 837 838 839 lbound builtin function dcl 126 ref 567 left_arrow 000177 automatic fixed bin(17,0) dcl 145 set ref 585* 627* 637* 641* 645* 649* 671 673 674* left_paren constant char(1) initial packed unaligned dcl 29 ref 443 length builtin function dcl 126 ref 298 300 578 580 749 751 831 832 834 852 853 935 963 967 1040 linel 14 based fixed bin(17,0) level 2 dcl 14-13 ref 1089 1089 linenum 33 based fixed bin(17,0) level 2 dcl 14-13 set ref 1118* 1118 1119 1126* 1222* 1222 1223 lisp_$apply 000030 constant entry external dcl 29 ref 1201 lisp_bignum based structure level 1 dcl 1-3 lisp_bignums_$bnprint 000044 constant entry external dcl 145 ref 549 lisp_error_ 000024 constant entry external dcl 29 ref 286 602 1050 1311 lisp_flonum_conversion_ 000100 constant entry external dcl 689 ref 713 lisp_get_atom_ 000026 constant entry external dcl 29 ref 981 986 987 lisp_io_control_$end_of_block 000014 constant entry external dcl 29 ref 1176 1228 1291 lisp_io_control_$fix_not_ok_iochan 000016 constant entry external dcl 29 ref 1067 1214 1289 lisp_io_fns_$namestring 000020 constant entry external dcl 29 ref 801 lisp_list_utils_$nreverse 000042 constant entry external dcl 126 ref 532 lisp_property_fns_$get 000032 constant entry external dcl 29 ref 1304 lisp_ptr based structure level 1 dcl 3-17 lisp_ptr_type based bit(36) dcl 3-17 ref 337 lisp_special_fns_$cons 000040 constant entry external dcl 126 ref 993 1200 lisp_static_vars_$array_atom 000056 external static fixed bin(71,0) dcl 6-6 ref 1303 1303 lisp_static_vars_$base 000066 external static fixed bin(71,0) dcl 13-17 ref 590 590 593 593 lisp_static_vars_$ctrlR 000074 external static fixed bin(71,0) dcl 15-11 ref 1371 1371 lisp_static_vars_$ctrlW 000076 external static fixed bin(71,0) dcl 15-14 ref 1034 1034 lisp_static_vars_$nil 000060 external static fixed bin(71,0) dcl 6-6 ref 322 322 392 392 478 478 667 667 675 675 985 985 1034 1034 1036 1036 1043 1043 1131 1131 1199 1199 1256 1256 1269 1269 1371 1371 1392 1392 1401 1401 1401 1401 lisp_static_vars_$obarray 000054 external static fixed bin(71,0) dcl 6-6 ref 983 983 lisp_static_vars_$outfiles 000022 external static fixed bin(71,0) dcl 29 ref 1373 1373 lisp_static_vars_$prinlength 000036 external static pointer dcl 84 ref 352 356 lisp_static_vars_$prinlevel 000034 external static pointer dcl 84 ref 351 353 lisp_static_vars_$read_print_nl_sync 000064 external static bit(36) packed unaligned dcl 13-17 set ref 1158 1158 1163* 1163 lisp_static_vars_$readtable 000072 external static fixed bin(71,0) dcl 13-17 ref 337 337 348 348 362 362 363 363 630 630 630 630 870 870 875 875 919 919 1089 1089 1302 1302 1305 1305 lisp_static_vars_$stack_ptr 000046 external static pointer dcl 6-6 set ref 248 248 262 262 307* 307 320* 320 332* 332 449* 449 484* 484 530* 530 550* 550 800* 800 802* 802 992* 992 995* 995 1196* 1196 1264 1264 1265* 1265 1276* 1276 1297 1297 1301* 1301 1320 1320 1345 1345 1351* 1351 1361 1361 1363* 1363 1368 1368 1427* 1427 lisp_static_vars_$stnopoint 000070 external static fixed bin(71,0) dcl 13-17 ref 667 667 675 675 lisp_static_vars_$t_atom 000050 external static fixed bin(71,0) dcl 6-6 ref 534 534 1044 1044 1257 1257 1270 1270 1397 1397 1401 1401 lisp_static_vars_$tty_output_chan 000062 external static pointer dcl 6-6 ref 1043 1044 1251 1251 1256 1256 1257 1257 1269 1269 1270 1270 lisp_static_vars_$unmkd_ptr 000052 external static pointer dcl 6-6 set ref 280 280 282* 282 301* 301 308* 308 321* 321 333* 333 419* 419 531* 531 546* 546 554 554 556* 556 581* 581 599 599 600* 600 684* 684 752* 752 806* 806 820* 820 835* 835 854* 854 882* 882 937* 937 937 937 1047 1047 1048* 1048 1309* 1309 1422 1422 1424* 1424 lisp_string based structure level 1 dcl 12-6 list_save based structure level 1 dcl 91 minus_2_times_ndims 7(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 8-8 ref 731 namelist 20 based fixed bin(71,0) level 2 dcl 14-13 set ref 796 799 nargs 000122 automatic fixed bin(17,0) dcl 29 set ref 1321* 1322 1324 1346* 1347 1348 1350* 1354* ndims based fixed bin(17,0) level 2 packed packed unaligned dcl 8-8 ref 738 741 nelemt 000315 automatic fixed bin(18,0) dcl 1021 in procedure "send_buffer_to_tty" set ref 1080* 1082 1083 1084 1088* 1088 1108* 1108 1135* 1151* 1169* 1170 1172 1180 1180 1184* 1184 nelemt 000132 automatic fixed bin(17,0) dcl 29 in procedure "print" set ref 826* 828 839* 839 843 846* 846 newline 005156 constant char(1) initial packed unaligned dcl 29 ref 317 329 395 1114 1159 1231 newpage constant char(1) initial packed unaligned dcl 97 ref 1123 nil defined fixed bin(71,0) dcl 6-6 ref 322 392 478 667 675 985 1034 1036 1043 1131 1199 1256 1269 1371 1392 1401 1401 nlsync 15(06) based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1117* 1220* 1285 not_ok_to_write constant bit(36) initial packed unaligned dcl 13-9 ref 1067 1214 1289 numbuff 000166 automatic char(1) array packed unaligned dcl 126 set ref 572* 583 658* 663 745* 754 767* 771 778* 782 obarray defined fixed bin(71,0) dcl 6-6 set ref 983 obarray_structure based structure level 1 dcl 976 octal_byte based bit(3) array level 2 packed packed unaligned dcl 137 ref 948 outfiles defined fixed bin(71,0) dcl 29 set ref 1373 outp 000342 automatic pointer dcl 1244 in procedure "flush_buffers" set ref 1251* 1256* 1257* 1258* 1269* 1270* 1271* 1283 1283 1285 1285 1285 1285 1289 1289* 1291* outp 000306 automatic pointer dcl 1021 in procedure "send_buffer_to_tty" set ref 1043* 1044* 1045* 1067 1067* 1070 1070 1081 1089 1089 1089 1117 1118 1118 1119 1119 1119 1126 1127 1127 1131 1131 1144 1173 1173 1176* 1181 1181 1185 1185 1197 1214 1214* 1217 1217 1219 1220 1221 1222 1222 1223 1223 1223 1227 1227 1228* 1231 1231 1232 1232 overlay_on_lisp_datum based structure level 1 dcl 137 pagel 32 based fixed bin(17,0) level 2 dcl 14-13 ref 1119 1119 1223 1223 pagenum 34 based fixed bin(17,0) level 2 dcl 14-13 set ref 1127* 1127 pdl_ptr_types36 based structure array level 1 dcl 5-7 plus_minus constant bit(27) initial packed unaligned dcl 7-27 ref 894 pname 5 based char level 2 dcl 11-5 ref 869 874 884 918 pnamel 4 based fixed bin(17,0) level 2 dcl 11-5 ref 865 869 871 874 879 881 884 913 918 position 000313 automatic fixed bin(18,0) dcl 1021 set ref 1078* 1083 1087* 1087 1106 1107* 1107 1135 1151 1234* prinlength 000137 automatic fixed bin(35,0) dcl 84 set ref 352* 452 514 prinlevel 000136 automatic fixed bin(35,0) dcl 84 set ref 351* 425 513 printing 000100 automatic bit(1) dcl 29 set ref 196* 222* 246* 261* 274* 316* 363 386 520 532 958 1362* push_down_list_ptr_types based structure array level 1 dcl 5-7 quote 005154 constant char(1) initial packed unaligned dcl 29 ref 825 830 844 844 856 rad 3 based fixed bin(35,0) level 2 dcl 145 set ref 548* radix 000163 automatic fixed bin(17,0) dcl 126 set ref 545 548 562 570 571 593* 595 596 620 628 655 656 667 675* read_print_nl_sync defined bit(36) packed unaligned dcl 13-17 set ref 1158 1163* read_table based structure level 1 dcl 7-11 readtable defined fixed bin(71,0) dcl 13-17 set ref 337 348 362 363 630 630 870 875 919 1089 1302 1305 reti 000162 automatic fixed bin(17,0) dcl 126 set ref 382* 420 450* 483* 507* 516 685 717 786 811 863 865 886 930 951 right_paren constant char(1) initial packed unaligned dcl 29 ref 496 same_line 000310 automatic bit(1) packed unaligned dcl 1021 set ref 1077* 1089 1095* 1116* 1125* saved_bufp 000156 automatic pointer dcl 107 set ref 431* 434 458* 461 saved_curlength 1 based fixed bin(35,0) level 2 dcl 91 set ref 421* 508 saved_nelemt 000320 automatic fixed bin(18,0) dcl 1021 set ref 1170* 1191 1192 saved_reti based fixed bin(17,0) level 2 dcl 91 set ref 420* 507 search builtin function dcl 126 ref 1083 seg 15 based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1283 send_to_files 000107 automatic bit(1) dcl 29 set ref 375 960 1329* 1385* 1387* 1392 1410* send_to_tty 000106 automatic bit(1) dcl 29 set ref 959 1249 1328* 1389* 1411* sharp_sign constant char(1) initial packed unaligned dcl 29 ref 728 808 941 sharp_sign_buffer 000010 internal static varying char(1) initial dcl 29 set ref 432 shift_scale constant bit(27) initial packed unaligned dcl 7-27 ref 898 sign based bit(18) level 2 packed packed unaligned dcl 1-3 ref 560 single_char_object constant bit(27) initial packed unaligned dcl 7-27 ref 889 size builtin function dcl 126 in procedure "print" ref 546 size 2 based fixed bin(17,0) level 2 in structure "bnprintargs" dcl 145 in procedure "print" ref 567 573 slash_if_first constant bit(27) initial packed unaligned dcl 7-27 ref 892 slash_if_not_first constant bit(27) initial packed unaligned dcl 7-27 ref 892 919 slash_suppressors constant bit(27) initial packed unaligned dcl 166 ref 896 900 slashing 000101 automatic bit(1) dcl 29 set ref 183* 188* 193* 208* 213* 218* 232* 237* 245* 254* 259* 813 878 someone_gets_abbreved 000112 automatic bit(1) dcl 29 set ref 366* 370* 374* 380 someone_gets_unabbreved 000113 automatic bit(1) dcl 29 set ref 367* 371* 375* 376* 377* 436 464 473 space 005155 constant char(1) initial packed unaligned dcl 29 ref 491 525 1097 stack 000142 automatic pointer dcl 107 set ref 248* 262* 270 272 273 275 285 287 307 320 322 332 384 389 390 392 530 534 963 963 968 994 1004 1013 1256 1257 1258 1258 1266 1291 1297* 1301 1302 1303 1305 1320* 1321 1322* 1322 1333 1345* 1346 1347* 1347 1351 1355 1355 1361* 1363 1368* 1373 1374 1392 1397 1399 1401 1401 1401 1426 stack_ptr defined pointer dcl 6-6 set ref 248 262 307* 320* 332* 449* 484* 530* 550* 800* 802* 992* 995* 1196* 1264 1265* 1276* 1297 1301* 1320 1345 1351* 1361 1363* 1368 1427* starting_index 000316 automatic fixed bin(18,0) dcl 1021 set ref 1041* 1078 1097 1099* 1099 1135 1159 1160* 1160 1181 1183* 1183 1191* 1191 1234 status_terpri 432 based bit(1) level 2 dcl 7-11 ref 1089 status_underline 433 based bit(1) level 2 dcl 7-11 ref 630 stnopoint defined fixed bin(71,0) dcl 13-17 set ref 667 675 string builtin function dcl 126 in procedure "print" set ref 583 663 754 771 782 1067 1070* 1070 1214 1217* 1217 1289 string 1 based char level 2 in structure "lisp_string" dcl 12-6 in procedure "print" ref 809 822 830 831 837 string_length based fixed bin(17,0) level 2 dcl 12-6 ref 803 805 809 817 819 822 826 830 831 837 string_to_be_typed_out parameter char dcl 293 ref 291 298 300 304 substr builtin function dcl 126 set ref 411 572 583 636 640 644 648 658 663 745 754 767 771 778 782 830 831 837 869 874 911* 918 948 969 1083 1097 1106 1159 1181* 1181 1231* syntax 22 based bit(27) array level 2 dcl 7-11 ref 630 870 875 919 t_atom defined fixed bin(71,0) dcl 6-6 ref 534 1044 1257 1270 1397 1401 tab constant char(1) initial packed unaligned dcl 97 ref 1110 temp based fixed bin(71,0) array dcl 5-7 set ref 285* 285 287* 287 320 322* 384* 384 392* 446* 447* 448 449 478 484 530 534* 547* 547 550 799* 800 802 968* 968 972 973 981* 989* 992 994* 994 995 1004* 1004 1006* 1007* 1013* 1013 1036* 1043 1044 1196 1197* 1198* 1198 1199* 1256 1257 1266* 1266* 1291* 1301 1302* 1303* 1305 1351 1355* 1355 1363 1373* 1392 1397 1426 1427 temp_ptr based pointer array dcl 5-7 ref 446 447 560 731 732 738 741 741 760 791 796 799 803 805 809 817 819 822 826 830 831 837 865 869 871 874 879 881 884 913 918 1006 1007 1045 1258 1269 1270 1271 1271 1275 1401 1401 1401 temp_type 0(21) based bit(9) array level 2 packed packed unaligned dcl 5-7 ref 409 479 1005 1266 1333 1374 1399 temp_type36 based bit(36) array level 2 dcl 5-7 ref 399 1045 1056 1157 1258 tempd 000164 automatic fixed bin(40,0) dcl 126 set ref 656* 657 741* 744 745 746* 747 the_array_pointer 000146 automatic pointer dcl 107 set ref 760* 763 775 791* tstack 000340 automatic pointer dcl 1244 in procedure "flush_buffers" set ref 1264* 1265 1266 1266 1269 1270 1271 1271 1275 1276 tstack 000144 automatic pointer dcl 107 in procedure "print" set ref 285 287 384 399 409 410 411 446 446 447 447 448* 448 449 466* 466 476* 476 478 479 484 488 547 547 550 560 616 619 619 628 635 638 642 646 650 655 657 660 673 711 731 732 738 741 741 760 791 796 799 799 800 802 803 805 809 817 819 822 826 830 831 837 865 869 871 874 879 881 884 913 918 948 968 972 973 981 989 992 994 995 1004 1005 1006 1006 1007 1007 1013 1036 1043 1044 1045 1045 1056 1157 1196 1197 1198 1198 1199 1426* 1427 tty_output_chan defined pointer dcl 6-6 ref 1251 1256 1257 1269 1270 type 7 based fixed bin(17,0) level 2 in structure "array_info" packed packed unaligned dcl 8-8 in procedure "print" ref 348 732 type 0(21) based bit(9) level 2 in structure "lisp_ptr" packed packed unaligned dcl 3-17 in procedure "print" ref 796 type_field 000161 automatic bit(36) dcl 126 set ref 399* 402 403 404 405 406 407 408 type_info based bit(36) level 2 dcl 9-4 set ref 270 353 356 389* 590 972* unm 000150 automatic pointer dcl 107 set ref 280* 282 283 284 308 321 333 417 420 421 422* 501* 501 505 507 508 531 546 546 548 567 567 567 568 573 573 682 1309 1310 1422* unmkd_ptr defined pointer dcl 6-6 set ref 280 282* 301* 308* 321* 333* 419* 531* 546* 554 556* 581* 599 600* 684* 752* 806* 820* 835* 854* 882* 937* 937 1047 1048* 1309* 1422 1424* unmp 000152 automatic pointer dcl 107 set ref 599* 600 601 1047* 1048 1049 unspec builtin function dcl 126 set ref 635 642* 646* 650* 870 875 919 value based pointer level 2 in structure "atom_ptrs" dcl 11-5 in procedure "print" ref 348 983 value based fixed bin(71,0) level 2 in structure "atom" dcl 11-5 in procedure "print" set ref 337 362 363 630 630 667 675 870 875 919 1034 1089 1305* 1371 1373 wd 000202 automatic fixed bin(35,0) dcl 145 set ref 568* 570 571 575* word2 1 based bit(36) level 2 dcl 137 ref 411 write 15(02) based bit(1) level 3 packed packed unaligned dcl 14-13 set ref 1285 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Array internal static bit(9) initial packed unaligned dcl 3-17 Atomic internal static bit(9) initial packed unaligned dcl 3-17 Atomic36 internal static bit(36) initial dcl 3-17 Atsym internal static bit(9) initial packed unaligned dcl 3-17 Bigfix internal static bit(9) initial packed unaligned dcl 3-17 Bignum internal static bit(9) initial packed unaligned dcl 3-17 Bignum36 internal static bit(36) initial dcl 3-17 Cons36 internal static bit(36) initial dcl 3-17 File internal static bit(9) initial packed unaligned dcl 3-17 Fixed internal static bit(9) initial packed unaligned dcl 3-17 Fixed36 internal static bit(36) initial dcl 3-17 Fixnum_array internal static fixed bin(17,0) initial dcl 8-20 Float internal static bit(9) initial packed unaligned dcl 3-17 Float36 internal static bit(36) initial dcl 3-17 Flonum_array internal static fixed bin(17,0) initial dcl 8-20 NotConsOrAtsym36 internal static bit(36) initial dcl 3-17 Numeric internal static bit(9) initial packed unaligned dcl 3-17 Numeric36 internal static bit(36) initial dcl 3-17 Obarray_array internal static fixed bin(17,0) initial dcl 8-20 S_expr_array internal static fixed bin(17,0) initial dcl 8-20 String internal static bit(9) initial packed unaligned dcl 3-17 Subr internal static bit(9) initial packed unaligned dcl 3-17 Subr36 internal static bit(36) initial dcl 3-17 SubrNumeric36 internal static bit(36) initial dcl 3-17 System_Subr internal static bit(9) initial packed unaligned dcl 3-17 System_Subr36 internal static bit(36) initial dcl 3-17 Un_gc_array internal static fixed bin(17,0) initial dcl 8-20 Uncollectable internal static bit(9) initial packed unaligned dcl 3-17 Undefined internal static bit(72) initial packed unaligned dcl 3-17 ZERO internal static fixed bin(17,0) initial dcl 8-37 alpha internal static bit(27) initial packed unaligned dcl 7-27 argument_must_be_array internal static fixed bin(17,0) initial dcl 16-8 array_bound_error internal static fixed bin(17,0) initial dcl 16-8 array_too_big internal static fixed bin(17,0) initial dcl 16-8 atan_0_0_err internal static fixed bin(17,0) initial dcl 16-8 atom_double_words based structure level 1 dcl 11-5 bad_argument internal static fixed bin(17,0) initial dcl 16-8 bad_array_subscript internal static fixed bin(17,0) initial dcl 16-8 bad_bv internal static fixed bin(17,0) initial dcl 16-8 bad_do_format internal static fixed bin(17,0) initial dcl 16-8 bad_entry_name internal static fixed bin(17,0) initial dcl 16-8 bad_f_fcn internal static fixed bin(17,0) initial dcl 16-8 bad_function internal static fixed bin(17,0) initial dcl 16-8 bad_ibase internal static fixed bin(17,0) initial dcl 16-8 bad_input_source internal static fixed bin(17,0) initial dcl 16-8 bad_prog_op internal static fixed bin(17,0) initial dcl 16-8 badmacro internal static fixed bin(17,0) initial dcl 16-8 badobarray internal static fixed bin(17,0) initial dcl 16-8 badreadlist internal static fixed bin(17,0) initial dcl 16-8 before builtin function dcl 126 binding_block based structure level 1 dcl 5-7 binding_top defined pointer dcl 6-6 bindings based structure array level 1 dcl 5-7 bit12 internal static bit(27) initial packed unaligned dcl 7-27 blank internal static bit(27) initial packed unaligned dcl 7-27 cant_filepos internal static fixed bin(17,0) initial dcl 16-8 cant_subscript_readtable internal static fixed bin(17,0) initial dcl 16-8 car_cdr_error internal static fixed bin(17,0) initial dcl 16-8 catch_frame defined pointer dcl 6-6 char builtin function dcl 126 collate builtin function dcl 126 cons_types based structure level 1 dcl 10-5 consptr automatic pointer dcl 10-5 ctrlD defined fixed bin(71,0) dcl 15-5 ctrlQ defined fixed bin(71,0) dcl 15-8 dead_array_reference internal static fixed bin(17,0) initial dcl 16-8 decimal_point internal static bit(27) initial packed unaligned dcl 7-27 division_by_zero internal static fixed bin(17,0) initial dcl 16-8 dot internal static char(1) initial packed unaligned dcl 29 dot_dot_dot internal static char(3) initial packed unaligned dcl 29 doterror internal static fixed bin(17,0) initial dcl 16-8 dotted_pair_dot internal static bit(27) initial packed unaligned dcl 7-27 eof_in_object internal static fixed bin(17,0) initial dcl 16-8 err_frame defined pointer dcl 6-6 err_recp defined pointer dcl 6-6 eval_frame defined pointer dcl 6-6 extd_alpha internal static bit(27) initial packed unaligned dcl 7-27 file_is_closed internal static fixed bin(17,0) initial dcl 16-8 file_sys_fun_err internal static fixed bin(17,0) initial dcl 16-8 file_system_error internal static fixed bin(17,0) initial dcl 16-8 filepos_oob internal static fixed bin(17,0) initial dcl 16-8 flonum_too_big internal static fixed bin(17,0) initial dcl 16-8 fn_CtoI internal static fixed bin(17,0) initial dcl 4-9 fn_ItoC internal static fixed bin(17,0) initial dcl 4-9 fn_abs internal static fixed bin(17,0) initial dcl 4-9 fn_add1 internal static fixed bin(17,0) initial dcl 4-9 fn_add1_fix internal static fixed bin(17,0) initial dcl 4-9 fn_add1_flo internal static fixed bin(17,0) initial dcl 4-9 fn_alarmclock internal static fixed bin(17,0) initial dcl 4-9 fn_allfiles internal static fixed bin(17,0) initial dcl 4-9 fn_alphalessp internal static fixed bin(17,0) initial dcl 4-9 fn_apply internal static fixed bin(17,0) initial dcl 4-9 fn_arg internal static fixed bin(17,0) initial dcl 4-9 fn_args internal static fixed bin(17,0) initial dcl 4-9 fn_array internal static fixed bin(17,0) initial dcl 4-9 fn_arraydims internal static fixed bin(17,0) initial dcl 4-9 fn_ascii internal static fixed bin(17,0) initial dcl 4-9 fn_atan internal static fixed bin(17,0) initial dcl 4-9 fn_baktrace internal static fixed bin(17,0) initial dcl 4-9 fn_bltarray internal static fixed bin(17,0) initial dcl 4-9 fn_boole internal static fixed bin(17,0) initial dcl 4-9 fn_boundp internal static fixed bin(17,0) initial dcl 4-9 fn_catch internal static fixed bin(17,0) initial dcl 4-9 fn_catenate internal static fixed bin(17,0) initial dcl 4-9 fn_charpos internal static fixed bin(17,0) initial dcl 4-9 fn_chrct internal static fixed bin(17,0) initial dcl 4-9 fn_clear_input internal static fixed bin(17,0) initial dcl 4-9 fn_cline internal static fixed bin(17,0) initial dcl 4-9 fn_close internal static fixed bin(17,0) initial dcl 4-9 fn_cos internal static fixed bin(17,0) initial dcl 4-9 fn_cursorpos internal static fixed bin(17,0) initial dcl 4-9 fn_defaultf internal static fixed bin(17,0) initial dcl 4-9 fn_definedp internal static fixed bin(17,0) initial dcl 4-9 fn_defsubr internal static fixed bin(17,0) initial dcl 4-9 fn_defun internal static fixed bin(17,0) initial dcl 4-9 fn_delete internal static fixed bin(17,0) initial dcl 4-9 fn_deletef internal static fixed bin(17,0) initial dcl 4-9 fn_delq internal static fixed bin(17,0) initial dcl 4-9 fn_diff_fix internal static fixed bin(17,0) initial dcl 4-9 fn_diff_flo internal static fixed bin(17,0) initial dcl 4-9 fn_difference internal static fixed bin(17,0) initial dcl 4-9 fn_displace internal static fixed bin(17,0) initial dcl 4-9 fn_do internal static fixed bin(17,0) initial dcl 4-9 fn_dumparrays internal static fixed bin(17,0) initial dcl 4-9 fn_endpagefn internal static fixed bin(17,0) initial dcl 4-9 fn_eoffn internal static fixed bin(17,0) initial dcl 4-9 fn_eql internal static fixed bin(17,0) initial dcl 4-9 fn_errframe internal static fixed bin(17,0) initial dcl 4-9 fn_errprint internal static fixed bin(17,0) initial dcl 4-9 fn_errset internal static fixed bin(17,0) initial dcl 4-9 fn_eval internal static fixed bin(17,0) initial dcl 4-9 fn_eval_when internal static fixed bin(17,0) initial dcl 4-9 fn_evalframe internal static fixed bin(17,0) initial dcl 4-9 fn_exp internal static fixed bin(17,0) initial dcl 4-9 fn_expt internal static fixed bin(17,0) initial dcl 4-9 fn_expt_fix internal static fixed bin(17,0) initial dcl 4-9 fn_expt_flo internal static fixed bin(17,0) initial dcl 4-9 fn_filepos internal static fixed bin(17,0) initial dcl 4-9 fn_fillarray internal static fixed bin(17,0) initial dcl 4-9 fn_fix internal static fixed bin(17,0) initial dcl 4-9 fn_float internal static fixed bin(17,0) initial dcl 4-9 fn_force_output internal static fixed bin(17,0) initial dcl 4-9 fn_freturn internal static fixed bin(17,0) initial dcl 4-9 fn_fsc internal static fixed bin(17,0) initial dcl 4-9 fn_gcd internal static fixed bin(17,0) initial dcl 4-9 fn_gensym internal static fixed bin(17,0) initial dcl 4-9 fn_get internal static fixed bin(17,0) initial dcl 4-9 fn_get_pname internal static fixed bin(17,0) initial dcl 4-9 fn_getchar internal static fixed bin(17,0) initial dcl 4-9 fn_getl internal static fixed bin(17,0) initial dcl 4-9 fn_greaterp internal static fixed bin(17,0) initial dcl 4-9 fn_gt internal static fixed bin(17,0) initial dcl 4-9 fn_haipart internal static fixed bin(17,0) initial dcl 4-9 fn_haulong internal static fixed bin(17,0) initial dcl 4-9 fn_ifix internal static fixed bin(17,0) initial dcl 4-9 fn_in internal static fixed bin(17,0) initial dcl 4-9 fn_includef internal static fixed bin(17,0) initial dcl 4-9 fn_index internal static fixed bin(17,0) initial dcl 4-9 fn_inpush internal static fixed bin(17,0) initial dcl 4-9 fn_isqrt internal static fixed bin(17,0) initial dcl 4-9 fn_lessp internal static fixed bin(17,0) initial dcl 4-9 fn_linel internal static fixed bin(17,0) initial dcl 4-9 fn_linenum internal static fixed bin(17,0) initial dcl 4-9 fn_listarray internal static fixed bin(17,0) initial dcl 4-9 fn_listify internal static fixed bin(17,0) initial dcl 4-9 fn_loadarrays internal static fixed bin(17,0) initial dcl 4-9 fn_log internal static fixed bin(17,0) initial dcl 4-9 fn_ls internal static fixed bin(17,0) initial dcl 4-9 fn_lsh internal static fixed bin(17,0) initial dcl 4-9 fn_make_atom internal static fixed bin(17,0) initial dcl 4-9 fn_makunbound internal static fixed bin(17,0) initial dcl 4-9 fn_mapatoms internal static fixed bin(17,0) initial dcl 4-9 fn_max internal static fixed bin(17,0) initial dcl 4-9 fn_mergef internal static fixed bin(17,0) initial dcl 4-9 fn_min internal static fixed bin(17,0) initial dcl 4-9 fn_minus internal static fixed bin(17,0) initial dcl 4-9 fn_minusp internal static fixed bin(17,0) initial dcl 4-9 fn_namelist internal static fixed bin(17,0) initial dcl 4-9 fn_names internal static fixed bin(17,0) initial dcl 4-9 fn_namestring internal static fixed bin(17,0) initial dcl 4-9 fn_nointerrupt internal static fixed bin(17,0) initial dcl 4-9 fn_nth internal static fixed bin(17,0) initial dcl 4-9 fn_nthcdr internal static fixed bin(17,0) initial dcl 4-9 fn_oddp internal static fixed bin(17,0) initial dcl 4-9 fn_open internal static fixed bin(17,0) initial dcl 4-9 fn_opena internal static fixed bin(17,0) initial dcl 4-9 fn_openi internal static fixed bin(17,0) initial dcl 4-9 fn_openo internal static fixed bin(17,0) initial dcl 4-9 fn_out internal static fixed bin(17,0) initial dcl 4-9 fn_pagel internal static fixed bin(17,0) initial dcl 4-9 fn_pagenum internal static fixed bin(17,0) initial dcl 4-9 fn_plus internal static fixed bin(17,0) initial dcl 4-9 fn_plus_fix internal static fixed bin(17,0) initial dcl 4-9 fn_plus_flo internal static fixed bin(17,0) initial dcl 4-9 fn_plusp internal static fixed bin(17,0) initial dcl 4-9 fn_prin1 internal static fixed bin(17,0) initial dcl 4-9 fn_princ internal static fixed bin(17,0) initial dcl 4-9 fn_print internal static fixed bin(17,0) initial dcl 4-9 fn_prog internal static fixed bin(17,0) initial dcl 4-9 fn_progv internal static fixed bin(17,0) initial dcl 4-9 fn_putprop internal static fixed bin(17,0) initial dcl 4-9 fn_quot_fix internal static fixed bin(17,0) initial dcl 4-9 fn_quot_flo internal static fixed bin(17,0) initial dcl 4-9 fn_quotient internal static fixed bin(17,0) initial dcl 4-9 fn_random internal static fixed bin(17,0) initial dcl 4-9 fn_read internal static fixed bin(17,0) initial dcl 4-9 fn_read_from_string internal static fixed bin(17,0) initial dcl 4-9 fn_readch internal static fixed bin(17,0) initial dcl 4-9 fn_readstring internal static fixed bin(17,0) initial dcl 4-9 fn_remainder internal static fixed bin(17,0) initial dcl 4-9 fn_remprop internal static fixed bin(17,0) initial dcl 4-9 fn_rename internal static fixed bin(17,0) initial dcl 4-9 fn_rot internal static fixed bin(17,0) initial dcl 4-9 fn_rplaca internal static fixed bin(17,0) initial dcl 4-9 fn_samepnamep internal static fixed bin(17,0) initial dcl 4-9 fn_save internal static fixed bin(17,0) initial dcl 4-9 fn_set internal static fixed bin(17,0) initial dcl 4-9 fn_setarg internal static fixed bin(17,0) initial dcl 4-9 fn_setq internal static fixed bin(17,0) initial dcl 4-9 fn_setsyntax internal static fixed bin(17,0) initial dcl 4-9 fn_shortnamestring internal static fixed bin(17,0) initial dcl 4-9 fn_signp internal static fixed bin(17,0) initial dcl 4-9 fn_sin internal static fixed bin(17,0) initial dcl 4-9 fn_sleep internal static fixed bin(17,0) initial dcl 4-9 fn_sort internal static fixed bin(17,0) initial dcl 4-9 fn_sortcar internal static fixed bin(17,0) initial dcl 4-9 fn_sqrt internal static fixed bin(17,0) initial dcl 4-9 fn_sstatus internal static fixed bin(17,0) initial dcl 4-9 fn_star_array internal static fixed bin(17,0) initial dcl 4-9 fn_star_rearray internal static fixed bin(17,0) initial dcl 4-9 fn_star_sstatus internal static fixed bin(17,0) initial dcl 4-9 fn_star_status internal static fixed bin(17,0) initial dcl 4-9 fn_status internal static fixed bin(17,0) initial dcl 4-9 fn_store internal static fixed bin(17,0) initial dcl 4-9 fn_stringlength internal static fixed bin(17,0) initial dcl 4-9 fn_sub1 internal static fixed bin(17,0) initial dcl 4-9 fn_sub1_fix internal static fixed bin(17,0) initial dcl 4-9 fn_sub1_flo internal static fixed bin(17,0) initial dcl 4-9 fn_substr internal static fixed bin(17,0) initial dcl 4-9 fn_sxhash internal static fixed bin(17,0) initial dcl 4-9 fn_sysp internal static fixed bin(17,0) initial dcl 4-9 fn_throw internal static fixed bin(17,0) initial dcl 4-9 fn_times internal static fixed bin(17,0) initial dcl 4-9 fn_times_fix internal static fixed bin(17,0) initial dcl 4-9 fn_times_flo internal static fixed bin(17,0) initial dcl 4-9 fn_truename internal static fixed bin(17,0) initial dcl 4-9 fn_tyi internal static fixed bin(17,0) initial dcl 4-9 fn_tyipeek internal static fixed bin(17,0) initial dcl 4-9 fn_unwind_protect internal static fixed bin(17,0) initial dcl 4-9 fn_zerop internal static fixed bin(17,0) initial dcl 4-9 forcefeed internal static bit(27) initial packed unaligned dcl 7-27 ibase defined fixed bin(71,0) dcl 13-17 illobj internal static fixed bin(17,0) initial dcl 16-8 include_file_error internal static fixed bin(17,0) initial dcl 16-8 io_wrong_direction internal static fixed bin(17,0) initial dcl 16-8 len automatic fixed bin(17,0) dcl 29 lisp_alloc_ 000000 constant entry external dcl 126 lisp_static_vars_$binding_top external static pointer dcl 6-6 lisp_static_vars_$catch_frame external static pointer dcl 6-6 lisp_static_vars_$ctrlD external static fixed bin(71,0) dcl 15-5 lisp_static_vars_$ctrlQ external static fixed bin(71,0) dcl 15-8 lisp_static_vars_$err_frame external static pointer dcl 6-6 lisp_static_vars_$err_recp external static pointer dcl 6-6 lisp_static_vars_$eval_frame external static pointer dcl 6-6 lisp_static_vars_$ibase external static fixed bin(71,0) dcl 13-17 lisp_static_vars_$iochan_list external static pointer dcl 6-6 lisp_static_vars_$lisp_static_vars_ external static structure level 1 unaligned dcl 6-6 lisp_static_vars_$plus_status external static fixed bin(71,0) dcl 13-17 lisp_static_vars_$prog_frame external static pointer dcl 6-6 lisp_static_vars_$quote_atom external static fixed bin(71,0) dcl 13-17 lisp_static_vars_$s_atom external static fixed bin(71,0) dcl 13-17 lisp_static_vars_$star_rset external static fixed bin(71,0) dcl 6-45 lisp_static_vars_$status_gctwa external static fixed bin(71,0) dcl 13-17 lisp_static_vars_$top_level external static label variable dcl 6-6 lisp_static_vars_$tty_atom external static fixed bin(71,0) dcl 13-17 lisp_static_vars_$tty_input_chan external static pointer dcl 6-6 lisp_static_vars_$unwp_frame external static pointer dcl 6-6 lisp_static_vars_$user_intr_array external static fixed bin(71,0) array dcl 6-45 lparn internal static bit(27) initial packed unaligned dcl 7-27 macro internal static bit(27) initial packed unaligned dcl 7-27 mismatch_super_parens internal static fixed bin(17,0) initial dcl 16-8 mod builtin function dcl 126 nihil_ex_nihile internal static fixed bin(17,0) initial dcl 16-8 nil_ptr based pointer dcl 6-6 no_left_super_paren internal static fixed bin(17,0) initial dcl 16-8 no_lexpr internal static fixed bin(17,0) initial dcl 16-8 nonfixedarg internal static fixed bin(17,0) initial dcl 16-8 not_alpha_array internal static fixed bin(17,0) initial dcl 16-8 not_an_array internal static fixed bin(17,0) initial dcl 16-8 not_ok_to_read internal static bit(36) initial packed unaligned dcl 13-9 not_ok_to_read_fixnum internal static bit(36) initial packed unaligned dcl 13-11 not_ok_to_write_fixnum internal static bit(36) initial packed unaligned dcl 13-11 not_pdl_ptr internal static fixed bin(17,0) initial dcl 16-8 not_same_type internal static fixed bin(17,0) initial dcl 16-8 null builtin function dcl 126 num_macs internal static fixed bin(17,0) initial dcl 7-4 overflow_err internal static fixed bin(17,0) initial dcl 16-8 parenmissing internal static fixed bin(17,0) initial dcl 16-8 plus_status defined fixed bin(71,0) dcl 13-17 prog_frame defined pointer dcl 6-6 quote_atom defined fixed bin(71,0) dcl 13-17 quoterror internal static fixed bin(17,0) initial dcl 16-8 read_table_dim_vector internal static fixed bin(17,0) initial array dcl 7-7 reopen_inconsistent internal static fixed bin(17,0) initial dcl 16-8 rparn internal static bit(27) initial packed unaligned dcl 7-27 rubout internal static bit(27) initial packed unaligned dcl 7-27 s_atom defined fixed bin(71,0) dcl 13-17 shortreadlist internal static fixed bin(17,0) initial dcl 16-8 slash_output internal static bit(27) initial packed unaligned dcl 7-27 slashifier internal static bit(27) initial packed unaligned dcl 7-27 special internal static bit(27) initial packed unaligned dcl 7-27 special_array_type internal static fixed bin(17,0) initial dcl 16-8 splice internal static bit(27) initial packed unaligned dcl 7-27 stack_loss_error internal static fixed bin(17,0) initial dcl 16-8 star_rset defined fixed bin(71,0) dcl 6-45 stars_left_in_name internal static fixed bin(17,0) initial dcl 16-8 status_gctwa defined fixed bin(71,0) dcl 13-17 store_function_misused internal static fixed bin(17,0) initial dcl 16-8 store_not_allowed internal static fixed bin(17,0) initial dcl 16-8 string_quote_exp internal static bit(27) initial packed unaligned dcl 7-27 t_atom_ptr based pointer dcl 6-6 throw_to_no_catch internal static fixed bin(17,0) initial dcl 16-8 too_few_args internal static fixed bin(17,0) initial dcl 16-8 too_many_args internal static fixed bin(17,0) initial dcl 16-8 tty_atom defined fixed bin(71,0) dcl 13-17 tty_input_chan defined pointer dcl 6-6 unable_to_float internal static fixed bin(17,0) initial dcl 16-8 undefined_atom internal static fixed bin(17,0) initial dcl 16-8 undefined_function internal static fixed bin(17,0) initial dcl 16-8 undefined_subr internal static fixed bin(17,0) initial dcl 16-8 underflow_fault internal static fixed bin(17,0) initial dcl 16-8 unseen_go_tag internal static fixed bin(17,0) initial dcl 16-8 unwp_frame defined pointer dcl 6-6 user_intr_array defined fixed bin(71,0) array dcl 6-45 vertical_motion internal static bit(27) initial packed unaligned dcl 7-27 wrong_no_args internal static fixed bin(17,0) initial dcl 16-8 zerodivide_fault internal static fixed bin(17,0) initial dcl 16-8 NAMES DECLARED BY EXPLICIT CONTEXT. bad_radix 003231 constant label dcl 599 ref 590 595 596 bad_readtable 003160 constant label dcl 1297 ref 337 348 bad_tyo 000424 constant label dcl 280 set ref 270 272 273 check_for_tty_as_file_and_set_up_the_buffer_then_return 004662 constant label dcl 1392 ref 1341 check_hpos 003704 constant label dcl 1089 ref 1112 compute_amount 004104 constant label dcl 1173 ref 1178 compute_motion 003643 constant label dcl 1078 ref 1102 done_bfx 001454 constant label dcl 578 ref 573 done_num 001701 constant label dcl 663 ref 659 dont_slash_first_char 003024 constant label dcl 905 ref 891 892 894 896 900 endloop_0001 002261 constant label dcl 771 set ref 769 endloop_0002 002337 constant label dcl 782 ref 780 ensure_room_in_buffer 003246 constant entry internal dcl 933 ref 921 924 exit 001271 constant label dcl 530 ref 278 exitloop 004044 constant label dcl 1144 ref 1136 explode 000272 constant entry external dcl 230 explode1 000324 constant label dcl 246 ref 240 explodec 000303 constant entry external dcl 235 explodecom 000311 constant label dcl 238 ref 233 exploden 000314 constant entry external dcl 242 flatc 000347 constant entry external dcl 257 flatcom 000355 constant label dcl 260 ref 255 flatsize 000336 constant entry external dcl 252 flush2 004436 constant entry internal dcl 1280 ref 1252 1261 1274 flush3 004454 constant label dcl 1285 ref 1283 flush_buffers 004316 constant entry internal dcl 1242 ref 277 306 319 331 528 1194 format_array_exitloop 002153 constant label dcl 749 ref 747 format_array_pointer 002022 constant label dcl 728 ref 408 format_array_pointer_address 002232 constant label dcl 763 ref 792 format_big 001313 constant label dcl 538 ref 404 format_external_array_pointer_differently 002362 constant label dcl 788 ref 731 format_file_object 002377 constant label dcl 796 ref 407 format_fixed 001523 constant label dcl 611 ref 402 format_float 002003 constant label dcl 689 ref 403 format_random 003120 constant label dcl 941 ref 409 410 411 733 734 796 format_string 002466 constant label dcl 813 ref 406 format_symbol 002677 constant label dcl 865 ref 405 get_dest 004521 constant entry internal dcl 1318 ref 225 269 get_dest_4_terpri 004556 constant entry internal dcl 1343 ref 315 get_dest_non_lsubr 004603 constant entry internal dcl 1359 ref 296 328 get_dest_subr 004615 constant entry internal dcl 1366 ref 198 get_radix 003213 constant entry internal dcl 588 ref 538 614 join2 004533 constant label dcl 1323 ref 1357 joint 004623 constant label dcl 1369 ref 1324 1364 keep_on_abbreving 001254 constant label dcl 516 ref 513 514 list_loop 001072 constant label dcl 446 ref 493 move_to_new_page 004017 constant label dcl 1126 ref 1119 1235 ng1 004355 constant label dcl 1262 ref 1258 ng2 004425 constant label dcl 1275 ref 1271 non_nil_end 001163 constant label dcl 481 ref 488 not_really_to_files 004717 constant label dcl 1408 ref 1392 1397 1399 1401 pnum 001647 constant label dcl 654 ref 676 point 001720 constant label dcl 667 ref 586 prin1 000204 constant entry external dcl 186 prin1_ 000244 constant entry external dcl 211 prin1_com 000223 constant label dcl 195 ref 189 prin1_com_ 000263 constant label dcl 220 ref 214 prin_com 000224 constant label dcl 196 ref 184 prin_com_ 000264 constant label dcl 222 ref 209 princ 000215 constant entry external dcl 191 princ_ 000255 constant entry external dcl 216 print 000172 constant entry external dcl 6 print_ 000232 constant entry external dcl 206 print_common 000620 constant label dcl 337 ref 199 226 250 264 print_loop 000757 constant label dcl 399 ref 472 473 485 print_ret 000000 constant label array(0:2) dcl 476 ref 478 516 685 717 786 811 863 865 886 930 951 really_to_files 004723 constant label dcl 1413 ref 1406 rest_of_list_suppressed 001221 constant label dcl 501 ref 436 467 retry 003523 constant label dcl 1043 in procedure "send_buffer_to_tty" ref 1051 1203 retry 003214 constant label dcl 590 in procedure "get_radix" ref 603 scan_pname 003043 constant label dcl 913 ref 907 send_buffer_to_a_file 003516 constant entry internal dcl 1038 ref 1008 1014 send_buffer_to_files 003445 constant entry internal dcl 1001 ref 960 send_buffer_to_tty 003500 constant entry internal dcl 1019 ref 959 send_out_newline 004211 constant entry internal dcl 1207 ref 1096 send_the_buffer 003262 constant entry internal dcl 956 ref 276 305 318 330 396 433 444 460 482 492 499 526 681 715 785 810 861 885 928 950 send_to_device 004100 constant label dcl 1170 ref 1152 set_up_buffer 004725 constant entry internal dcl 1420 ref 249 263 1413 slash_first_char 003033 constant label dcl 909 ref 889 892 897 898 898 901 terpri 000536 constant entry external dcl 312 tyo 000370 constant entry external dcl 266 tyo_restart 000401 constant label dcl 270 ref 288 type_nl 000572 constant entry external dcl 325 type_string 000455 constant entry external dcl 291 underline_hackery 001565 constant label dcl 630 ref 628 NAMES DECLARED BY CONTEXT OR IMPLICATION. baseno builtin function ref 763 bool builtin function ref 1062 byte builtin function ref 275 fixed builtin function ref 763 775 rank builtin function ref 970 rel builtin function ref 775 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5632 5734 5170 5642 Length 6566 5170 102 615 442 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME print 300 external procedure is an external procedure. get_radix internal procedure shares stack frame of external procedure print. ensure_room_in_buffer internal procedure shares stack frame of external procedure print. send_the_buffer internal procedure shares stack frame of external procedure print. send_buffer_to_files internal procedure shares stack frame of external procedure print. send_buffer_to_tty internal procedure shares stack frame of external procedure print. send_out_newline internal procedure shares stack frame of external procedure print. flush_buffers internal procedure shares stack frame of external procedure print. flush2 internal procedure shares stack frame of external procedure print. get_dest internal procedure shares stack frame of external procedure print. set_up_buffer internal procedure shares stack frame of external procedure print. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 sharp_sign_buffer print 000012 dot_dot_dot_buffer print STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME print 000100 printing print 000101 slashing print 000102 begin_with_nl print 000103 dest1 print 000104 destl print 000105 explicit_tty print 000106 send_to_tty print 000107 send_to_files print 000110 abbreving_flag print 000111 abbreved_out_flag print 000112 someone_gets_abbreved print 000113 someone_gets_unabbreved print 000114 abbrev_on_files print 000115 check_prinlevel print 000116 check_prinlength print 000117 explodensw print 000120 flatsw print 000121 code print 000122 nargs print 000123 i print 000124 j print 000125 idx print 000126 Ch1 print 000127 Ch2 print 000130 Ch1_syntax print 000131 Ch2_syntax print 000132 nelemt print 000134 cruft print 000136 prinlevel print 000137 prinlength print 000140 curlevel print 000141 curlength print 000142 stack print 000144 tstack print 000146 the_array_pointer print 000150 unm print 000152 unmp print 000154 bufp print 000156 saved_bufp print 000160 bufmaxl print 000161 type_field print 000162 reti print 000163 radix print 000164 tempd print 000166 numbuff print 000177 left_arrow print 000200 bit36 print 000201 dpw print 000202 wd print 000204 arg_str print 000220 array_type print 000266 charobjp send_the_buffer 000306 outp send_buffer_to_tty 000310 same_line send_buffer_to_tty 000311 invoke_endpagefn send_buffer_to_tty 000312 hpos send_buffer_to_tty 000313 position send_buffer_to_tty 000314 i send_buffer_to_tty 000315 nelemt send_buffer_to_tty 000316 starting_index send_buffer_to_tty 000317 Nelemt send_buffer_to_tty 000320 saved_nelemt send_buffer_to_tty 000321 amount send_buffer_to_tty 000330 invoke_endpagefn send_out_newline 000340 tstack flush_buffers 000342 outp flush_buffers THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry ext_entry_desc divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. lisp_$apply lisp_bignums_$bnprint lisp_error_ lisp_flonum_conversion_ lisp_get_atom_ lisp_io_control_$end_of_block lisp_io_control_$fix_not_ok_iochan lisp_io_fns_$namestring lisp_list_utils_$nreverse lisp_property_fns_$get lisp_special_fns_$cons THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. lisp_static_vars_$array_atom lisp_static_vars_$base lisp_static_vars_$ctrlR lisp_static_vars_$ctrlW lisp_static_vars_$nil lisp_static_vars_$obarray lisp_static_vars_$outfiles lisp_static_vars_$prinlength lisp_static_vars_$prinlevel lisp_static_vars_$read_print_nl_sync lisp_static_vars_$readtable lisp_static_vars_$stack_ptr lisp_static_vars_$stnopoint lisp_static_vars_$t_atom lisp_static_vars_$tty_output_chan lisp_static_vars_$unmkd_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000171 183 000177 184 000202 186 000203 188 000211 189 000213 191 000214 193 000222 195 000223 196 000224 197 000226 198 000227 199 000230 206 000231 208 000237 209 000242 211 000243 213 000251 214 000253 216 000254 218 000262 220 000263 222 000264 224 000266 225 000267 226 000270 230 000271 232 000277 233 000301 235 000302 237 000310 238 000311 240 000312 242 000313 244 000321 245 000323 246 000324 247 000325 248 000326 249 000333 250 000334 252 000335 254 000343 255 000345 257 000346 259 000354 260 000355 261 000357 262 000360 263 000365 264 000366 266 000367 268 000375 269 000400 270 000401 272 000404 273 000410 274 000412 275 000414 276 000421 277 000422 278 000423 280 000424 282 000430 283 000433 284 000435 285 000437 286 000442 287 000446 288 000451 291 000452 295 000470 296 000473 298 000474 300 000477 301 000504 304 000512 305 000525 306 000526 307 000527 308 000532 309 000534 312 000535 314 000543 315 000546 316 000547 317 000551 318 000556 319 000557 320 000560 321 000564 322 000566 323 000570 325 000571 327 000577 328 000602 329 000603 330 000610 331 000611 332 000612 333 000615 334 000617 337 000620 348 000627 351 000635 352 000641 353 000645 355 000653 356 000654 358 000662 360 000663 361 000664 362 000666 363 000672 366 000700 367 000702 368 000703 370 000704 371 000705 372 000707 374 000710 375 000712 376 000716 377 000722 380 000724 382 000730 384 000731 386 000733 389 000737 390 000741 391 000743 392 000744 393 000747 395 000751 396 000756 399 000757 402 000761 403 000763 404 000765 405 000767 406 000771 407 000773 408 000775 409 000777 410 001002 411 001006 417 001012 418 001015 419 001017 420 001025 421 001027 422 001032 423 001033 424 001034 425 001040 428 001045 430 001047 431 001051 432 001052 433 001054 434 001055 435 001057 436 001060 438 001062 443 001064 444 001071 446 001072 447 001076 448 001101 449 001103 450 001106 451 001110 452 001114 455 001121 457 001123 458 001125 459 001127 460 001131 461 001132 462 001134 463 001135 464 001137 466 001141 467 001144 472 001145 473 001147 476 001151 478 001154 479 001160 481 001163 482 001170 483 001171 484 001173 485 001177 488 001200 491 001204 492 001211 493 001212 496 001213 499 001220 501 001221 505 001224 506 001225 507 001227 508 001231 509 001233 513 001241 514 001246 515 001253 516 001254 520 001256 524 001260 525 001262 526 001267 528 001270 530 001271 531 001275 532 001277 533 001307 534 001310 535 001312 538 001313 545 001314 546 001317 547 001323 548 001326 549 001331 550 001335 554 001341 555 001344 556 001346 560 001353 562 001364 563 001371 567 001375 568 001403 569 001407 570 001417 571 001422 572 001432 573 001436 575 001444 576 001446 577 001451 578 001454 580 001463 581 001471 583 001477 584 001516 585 001521 586 001522 611 001523 614 001524 616 001525 619 001536 620 001540 627 001550 628 001551 630 001556 635 001575 636 001577 637 001602 638 001604 639 001606 640 001607 641 001612 642 001614 643 001621 644 001622 645 001625 646 001627 647 001634 648 001635 649 001640 650 001642 654 001647 655 001652 656 001656 657 001662 658 001667 659 001673 660 001675 661 001676 663 001701 667 001720 671 001740 672 001742 673 001752 674 001755 675 001756 676 001765 681 001766 682 001767 683 001771 684 001773 685 002001 711 002003 712 002006 713 002010 715 002017 717 002020 728 002022 731 002027 732 002035 733 002040 734 002041 735 002043 736 002060 737 002063 738 002065 739 002075 740 002105 741 002107 743 002123 744 002126 745 002133 746 002144 747 002147 748 002150 749 002153 751 002162 752 002167 754 002175 755 002215 760 002217 761 002222 763 002232 765 002236 766 002240 767 002243 768 002253 769 002255 770 002256 771 002261 773 002301 775 002310 776 002313 777 002316 778 002321 779 002331 780 002333 781 002334 782 002337 785 002357 786 002360 788 002362 791 002374 792 002376 796 002377 799 002404 800 002406 801 002412 802 002416 803 002422 805 002427 806 002435 808 002442 809 002447 810 002463 811 002464 813 002466 817 002470 819 002474 820 002501 822 002507 823 002522 825 002523 826 002530 827 002533 828 002534 830 002536 831 002553 832 002557 834 002565 835 002572 837 002600 838 002615 839 002617 843 002621 844 002623 845 002640 846 002641 848 002643 852 002644 853 002651 854 002656 856 002664 861 002674 863 002675 865 002677 869 002705 870 002710 871 002721 874 002726 875 002732 878 002736 879 002740 881 002743 882 002750 884 002755 885 002770 886 002771 889 002773 891 003000 892 003001 894 003005 896 003011 897 003013 898 003014 900 003021 901 003023 905 003024 907 003032 909 003033 911 003040 913 003043 918 003053 919 003057 921 003071 922 003072 924 003102 925 003103 926 003113 928 003115 930 003116 941 003120 947 003125 948 003133 949 003153 950 003155 951 003156 1297 003160 1301 003163 1302 003165 1303 003167 1304 003171 1305 003175 1309 003201 1310 003204 1311 003206 1432 003212 588 003213 590 003214 593 003221 595 003224 596 003226 597 003230 599 003231 600 003234 601 003237 602 003241 603 003245 933 003246 935 003247 936 003252 937 003254 939 003261 956 003262 958 003263 959 003265 960 003270 961 003273 963 003274 967 003302 968 003311 969 003314 970 003322 971 003325 972 003327 973 003331 974 003332 981 003333 983 003353 985 003363 986 003366 987 003405 989 003421 992 003424 993 003430 994 003434 995 003437 996 003442 999 003444 1001 003445 1003 003446 1004 003450 1005 003454 1006 003460 1007 003462 1008 003465 1009 003466 1010 003467 1012 003470 1013 003472 1014 003476 1016 003477 1019 003500 1034 003501 1036 003511 1038 003515 1040 003517 1041 003521 1043 003523 1044 003534 1045 003542 1047 003550 1048 003553 1049 003556 1050 003560 1051 003564 1056 003565 1058 003570 1059 003573 1061 003574 1062 003601 1067 003605 1070 003632 1072 003635 1073 003640 1077 003641 1078 003643 1080 003645 1081 003647 1082 003652 1083 003654 1084 003670 1085 003674 1086 003676 1087 003700 1088 003701 1089 003704 1095 003731 1096 003732 1097 003733 1099 003741 1100 003742 1102 003744 1104 003745 1106 003746 1107 003752 1108 003753 1109 003755 1109 003765 1110 003766 1111 003770 1112 003775 1114 003776 1115 004000 1116 004001 1117 004002 1118 004005 1119 004006 1122 004012 1123 004013 1124 004015 1125 004016 1126 004017 1127 004021 1131 004022 1134 004031 1135 004033 1136 004036 1138 004037 1140 004040 1142 004043 1144 004044 1150 004047 1151 004051 1152 004054 1157 004055 1158 004061 1159 004064 1160 004072 1161 004073 1163 004075 1169 004076 1170 004100 1172 004101 1173 004104 1175 004110 1176 004111 1177 004124 1178 004130 1180 004131 1181 004135 1183 004144 1184 004145 1185 004147 1186 004151 1190 004152 1191 004154 1192 004156 1193 004160 1194 004161 1196 004162 1197 004166 1198 004172 1199 004174 1200 004176 1201 004202 1203 004207 1240 004210 1207 004211 1209 004212 1214 004213 1217 004240 1219 004243 1220 004244 1221 004246 1222 004250 1223 004251 1227 004257 1228 004262 1229 004275 1231 004301 1232 004307 1233 004310 1234 004312 1235 004314 1237 004315 1242 004316 1249 004317 1251 004321 1252 004325 1255 004326 1256 004330 1257 004341 1258 004347 1261 004354 1262 004355 1263 004356 1264 004360 1265 004364 1266 004367 1269 004377 1270 004410 1271 004416 1274 004424 1275 004425 1276 004432 1295 004435 1280 004436 1283 004437 1285 004446 1289 004461 1291 004505 1293 004520 1318 004521 1320 004522 1321 004527 1322 004531 1323 004533 1324 004534 1328 004537 1329 004540 1333 004542 1334 004546 1335 004550 1336 004551 1338 004552 1339 004554 1341 004555 1343 004556 1345 004557 1346 004564 1347 004566 1348 004570 1350 004571 1351 004573 1352 004575 1354 004576 1355 004600 1357 004602 1359 004603 1361 004604 1362 004610 1363 004612 1364 004614 1366 004615 1368 004616 1369 004623 1371 004624 1373 004631 1374 004635 1375 004640 1376 004641 1377 004642 1379 004643 1380 004645 1382 004646 1383 004647 1385 004651 1387 004656 1389 004660 1392 004662 1397 004673 1398 004675 1399 004676 1401 004704 1406 004716 1408 004717 1410 004721 1411 004722 1413 004723 1415 004724 1420 004725 1422 004726 1423 004733 1424 004735 1425 004742 1426 004743 1427 004746 1428 004750 ----------------------------------------------------------- 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