Compilation listing of file >2.1spec>online>mib083074>runoff_mr5.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0704.7 mst Fri. Compiled by BCPL version 3.4, August 1973. Compiler updated at 09/25/73 0959.1 mst Tue. Options applied: source xref alist optimize 6180. 1 // ROFF for Multics 2 // 3 // Last modified on 05/30/74 at 18:45:20 by R F Mabee. 4 // 5 // This file contains the following routines for processing 6 // headers, footers, etc.: 7 // 8 // Readhead Read a header into a vector. 9 // Gethead Allocate a new vector and call Readhead. 10 // Sethead Set a header or a footer from control line. 11 // Freeheads Free up one set of headers or footers. 12 // Title Print a header or a footer. 13 // All are declared external. 14 15 // Copyright (c) 1974 by Massachusetts Institute of Technology and Honeywell Information Systems, Inc. 16 17 // General permission is granted to copy and use this program, but not to sell it, provided that the above 18 // copyright statement is given. Contact Information Processing Services, MIT, for further information. 19 // Please contact R F Mabee at MIT for information on this program and versions for other machines. 20 21 get "runoff_head" 1 // External, global, and manifest declarations for RUNOFF on Multics. 2 // Last modified on 06/21/73 at 23:30:13 by R F Mabee. 3 4 // Copyright (c) 1973 by the author, Robert F. Mabee. 5 // This program may be reproduced or modified only with explicit written 6 // permission of the author. Permission is hereby extended to those 7 // persons responsible for operating the Multics system to make such 8 // copies as are normally required to ensure the integrity of the Multics 9 // file system. Permission is also hereby extended to those persons 10 // responsible for maintaining the Multics program libraries to make such 11 // copies as are normally required for online installations. 12 13 external // BCPL library routines used by RUNOFF. 14 $( Packstring = "bcpl_machine_code_$Packstring" 15 Unpackstring = "bcpl_machine_code_$Unpackstring" 16 Writech = "bcpl_machine_code_$Writech" 17 WriteS = "bcpl_stream_io_$WriteS" 18 WriteN = "bcpl_stream_io_$WriteN" 19 ConvertNtoS = "bcpl_conversions_$ConvertNtoS" 20 Newvec = "bcpl_filesys_lib_$Newvec" 21 Freevec = "bcpl_filesys_lib_$Freevec" 22 MinI = "bcpl_arithmetic_$MinI" 23 MaxI = "bcpl_arithmetic_$MaxI" 24 FormDate = "bcpl_conversions_$FormDate" 25 $) 26 27 28 external 29 { 30 31 // All routines that form RUNOFF are listed below, even those that are 32 // not external. This listing is thus a table of contents of RUNOFF. 33 34 // Adjust = "runoff_mr3$Adjust" // Print a line, with right-adjustment. 35 Blank = "runoff_mr4$Blank" // Print n blanks. 36 Break = "runoff_mr3$Break" // Break text, printing buffers. 37 // Center = "runoff_mr3$Center" // Print the current line, centered. 38 Check_ref = "runoff_mr9$Check_ref" // Handle reference to symbol in control line. 39 // Cleanup = "runoff_driver$Cleanup" // Close files, etc. Invoked by unwinder. 40 ConsoleReadline = "runoff_mr0$ConsoleReadline" // Accept next line from user_input. 41 Control = "runoff_mr2$Control" // Process a control line. 42 // DimAttach = "runoff_dim$runoff_attach" // IOSIM attach entry point. 43 // DimChangemode = "runoff_dim$runoff_changemode" // Change internal modes. 44 // DimDetach = "runoff_dim$runoff_detach" // Disconnect runoff DIM. 45 // DimOrder = "runoff_dim$runoff_order" // Execute runoff command line for dim. 46 // DimWrite = "runoff_dim$DimWrite" // Process chunk of text as runoff input. 47 Eject = "runoff_mr3$Eject" // Eject paper, printing footer. 48 // Equation = "runoff_mr3$Equation" // Print an equation. 49 ExecuteCommand = "runoff_mr0$ExecuteCommand" // Pass control line to command processor. 50 FillTrTable = "runoff_mr1$FillTrTable" // Set up a conversion table. 51 FindInput = "runoff_driver$FindInput" // Open new input stream for given name. 52 // FixTab = "runoff_mr0$FixTab" // Calculate tab position and insert blanks. 53 Foot_begin = "runoff_mr6$Foot_begin" // Start processing footnote 54 Foot_end = "runoff_mr6$Foot_end" // Finish processing footnote. 55 Freeheads = "runoff_mr5$Freeheads" // Release a set of headers or footers. 56 // GetArg = "runoff_driver$GetArg" // Arg fetching routine for Option. 57 Gethead = "runoff_mr5$Gethead" // Package header up in new vector. 58 // GetModeArg = "runoff_dim$GetArgMode" // Arg fetching routine for Option for DIM. 59 GetString = "runoff_mr8$GetString" // Read and store string expression. 60 // GetSymbol = "runoff_mr9$GetSymbol" // Find value and type of named symbol. 61 InitializeSymbolTree = "runoff_mr9$InitializeSymbolTree" // Load up symbol table at start-up. 62 InsertFile = "runoff_mr4$InsertFile" // Process .if line. 63 // MakeN = "runoff_mr8$MakeN" // Convert string to character constant (number). 64 Need = "runoff_mr4$Need" // Eject if not enough lines remain. 65 NeedSS = "runoff_mr4$NeedSS" // Need regardless of double-spacing. 66 Newline = "runoff_mr4$Newline" // Print n newline characters. 67 // Number = "runoff_mr2$Number" // Scan a number from a control line. 68 Nx_close = "runoff_mr0$Nx_close" // Close current input stream. 69 Nx_open = "runoff_mr0$Nx_open" // Open a new stacked input stream. 70 Nx_reset = "runoff_mr0$Nx_reset" // Set read pointer back to beginning of current file. 71 // OldModes = "runoff_dim$OldModes" // Create return mode string for changemode (dim). 72 // PrintErrorFile = "runoff_driver$PrintErrorFile" // Dump buffered error messages on console. 73 PrinterIndent = "runoff_mr4$PrinterIndent" // Indent an extra twenty spaces for printer. 74 PrintFootnotes = "runoff_mr6$PrintFootnotes" // To output the accumulated footnotes. 75 Readline = "runoff_mr0$Readline" // Read a line of input. 76 Readhead = "runoff_mr5$Readhead" // Read header into vector provided. 77 ReadExp = "runoff_mr8$ReadExp" // Evaluate an expression. 78 ReadName = "runoff_mr4$ReadName" // Scan name from control line, pack in vector. 79 ReadNumber = "runoff_mr8$ReadNumber" // Convert number from control line. 80 ReadParam = "runoff_mr8$ReadParam" // Evaluate a parameter expression. 81 ReadString = "runoff_mr8$ReadString" // Read a string. 82 Report = "runoff_mr0$Report" // Report an error in usage, etc. 83 Roff = "runoff_mr1$Roff" // The main program for RUNOFF. 84 RoffProcess = "runoff_mr0$RoffProcess" // Called for each input file. 85 // runoff_module = "runoff_$runoff_module_" // Outer module transfer vector for dim. 86 // RunoffCommand = "runoff_driver$runoff" // Command interface. 87 // Save = "runoff_dim$Save" // Store global vector in SDB for dim. 88 SetCharsw = "runoff_mr0$SetCharsw" // Turn chars feature on or off. 89 // SetCtable = "runoff_mr9$SetCtable" // Update translation table from .sr command. 90 SetDevice = "runoff_mr1$SetDevice" // Change tables for a new device. 91 Sethead = "runoff_mr5$Sethead" // Set up header or footer. 92 SetLinesLeft = "runoff_mr4$SetLinesLeft" // Repeat calculation of LinesLeft. 93 // SetModes = "runoff_dim$SetModes" // Mode changing subroutine for DIM. 94 SetPaging = "runoff_mr1$SetPaging" // Turn no pagination feature on or off. 95 SetSwitches = "runoff_mr1$SetSwitches" // Initialize most of runoff. 96 // SetSymbol = "runoff_mr9$SetSymbol" // Assign new value and type to named symbol. 97 // Set_param = "runoff_mr2$Set_param" // Update variable, absolute or relatve. 98 Set_ref = "runoff_mr9$Set_ref" // Define or update symbol. 99 // Skip = "runoff_mr8$Skip" // Skip over blanks in control line. 100 Skiptolabel = "runoff_mr4$Skiptolabel" // For .gb and .gf. 101 Spacing = "runoff_mr3$Spacing" // Process vertical spacing. 102 // StNum = "runoff_dim$StNum" // Store number into mode string for OldModes. 103 // Store = "runoff_mr7$Store" // Save character until line is complete (for "chars"). 104 StoreArabic = "runoff_mr4$StoreArabic" // Convert number to string. 105 // StoreCtable = "runoff_mr9$StoreCtable" // Convert translation table to string form. 106 StoreDate = "runoff_mr4$StoreDate" // Store current date in vector. 107 StoreRoman = "runoff_mr4$StoreRoman" // Store number as roman numeral. 108 StoreString = "runoff_mr0$StoreString" // Make copy of string in free storage. 109 // StSwitch = "runoff_dim$StSwitch" // Store switch mode into mode string. 110 // SubscriptString = "runoff_mr8$SubscriptString" // Evaluate substring expression. 111 Text = "runoff_mr3$Text" // Process 1 line of input text. 112 Title = "runoff_mr5$Title" // Print a header or a footer. 113 // Tree_search = "runoff_mr9$Tree_search" // Look named symbol up in symbol table. 114 // TryToHyphenate = "runoff_mr3$TryToHyphenate" // Last word won't fit on line, break it if possible. 115 Typeout = "runoff_mr0$Typeout" // Type rest of input line on console. 116 // Unsave = "runoff_dim$Unsave" // Restore globals from SDB for dim. 117 UpdateSymbol = "runoff_mr9$UpdateSymbol" // Set named symbol to value from control line. 118 Use_ref = "runoff_mr9$Use_ref" // Insert symbol value in place of symbol 119 Wait = "runoff_mr0$Wait" // Wait for an interaction from the console. 120 Width = "runoff_mr3$Width" // Return width of a character. 121 WrCh = "runoff_mr7$WrCh" // "Chars" routine 122 WrChInit = "runoff_mr7$WrChInit" // Initialize "chars" routine 123 WriteChar = "runoff_mr4$WriteChar" // Write a character of output. 124 // Wrline = "runoff_ms7$Wrline" // Write stored line into chars file. 125 126 } 127 128 global // Scalars, switches, common vectors, etc. ... 129 { 130 Ad : 100 // Adjust 131 Again : 101 // Input line in Rawchar must be reprocessed. 132 Ce : 102 // Number of lines to center. 133 Char : 103 // Buffer for output characters. 134 CharsTable : 104 // Table of special characters for .chars output. 135 Charsw : 105 // Indication of unprintable characters. 136 ChStream : 106 // Output stream for "chars" option output 137 Conv : 107 // Character conversion. 138 139 Device : 110 // Type of device output is to be formatted for. 140 DeviceTable : 111 // Conversions for this device. 141 Ef : 112 // Even foot 142 Eh : 113 // Even head. 143 Eq : 114 // Equation line counter. 144 Eqcnt : 115 // Equation reference counter 145 ErrorfilePointer : 116 // Pointer to the temporary error file if any. 146 Errorstream : 117 // Output stream for diagnostics. 147 148 ErrorTempID : 120 // ID number for temporary error message segment. 149 ExpError : 121 // Indicates badly formed expression. 150 ExtraMargin : 122 // Indent entire text this many spaces. 151 Fc : 123 // No. of characters in Footbuf 152 Fd : 124 // Remember if text is double spaced 153 Fi : 125 // Fill switch. 154 FileName : 126 // Name of first input file. 155 Filesw : 127 // True if output is going to a file. 156 157 Findent : 130 // Indenting in use before entering footnote. 158 Fl : 131 // No. of lines in FootList 159 Flp : 132 // Print line although page appears full 160 Foot : 133 // Footnote counter 161 Footbuf : 134 // Buffer to hold current footnote. 162 FootList : 135 // Working pointer into list of footnote lines. 163 FootListBase : 136 // Base of footnote list. 164 FootRef : 137 // Footnote reference string in footnote body. 165 166 Fp : 140 // First page to print. 167 Fr : 141 // Footnote counter reset switch 168 From : 142 // -from argument. 169 Ft : 143 // Footnote processing switch 170 Fth : 144 // Vector for user-defined demarcation line 171 Fundent : 145 // Undenting in use before entering footnote. 172 Hyphenating : 146 // True if an attempt to break a word should be made. 173 In : 147 // Indent to here. 174 175 InputFileName : 150 // Name of current input file. 176 InputLines : 151 // Current line number in current source file. 177 InputStack : 152 // Stack of saved input streams. 178 JumpLine : 153 // Line number of .gb or .gf command during skip. 179 LinesLeft : 154 // Number of usable text lines left on this page. 180 LIno : 155 // Number of literal lines following. 181 Ll : 156 // Line length. 182 Lp : 157 // Last page to print. 183 184 Ma1 : 160 // Space above header. 185 Ma2 : 161 // Space below header. 186 Ma3 : 162 // Space above foot. 187 Ma4 : 163 // Space below foot. 188 Ms : 164 // Spacing between lines (ss = 1, ds = 2, etc.) 189 MultiplePagecount : 165 // Form feeds between pages to printer. 190 Nc : 166 // Number of characters in Char. 191 NestingDepth : 167 // Index into stack of input files. 192 193 Nl : 170 // Last used line number. 194 NNp : 171 // Next page number. 195 NoControl : 172 // True if control lines are to be ignored. 196 NoFill : 173 // True if fill mode is always off. 197 NoFtNo : 174 // True to suppress number on next footnote reference. 198 NoPaging : 175 // True if no pagination is desired. 199 Np : 176 // Current page number. 200 Nr : 177 // Number of characters in Rawchar. 201 202 Nrx : 180 // Count through input buffer. 203 OddPage : 181 // True if current page number is odd. 204 Of : 182 // Odd foot. 205 Oh : 183 // Odd head. 206 Output : 184 // Runoff's main text output stream. 207 PadLeft : 185 // True if padding is to start from left of line. 208 Parameter : 186 // Initial value of built-in symbol. 209 Passes : 187 // Number of passes left to make. 210 211 Pi : 190 // Space needed for a picture. 212 Pl : 191 // Paper length. 213 Print : 192 // Whether or not to print. 214 Printersw : 193 // Output is intended for online printer. 215 PrintLineNumbers : 194 // True if source line numbers are to be printed in output. 216 Rawchar : 195 // Buffer for input line. 217 Roman : 196 // Roman numeral pagination. 218 SavedCc : 197 // Temporary used by WriteChar. 219 220 Selsw : 200 // for selectric ball option 221 Spec_char : 201 // For symbol references. 222 Start : 202 // -start argument. 223 Stopsw : 203 // Stop between pages of output. 224 Temp : 204 // Vector to hold unprinted character 225 Tempc : 205 // No. of characters in Temp 226 TextRef : 206 // Footnote reference string in main text. 227 TimeNow : 207 // Clock reading when runoff is entered. 228 229 To : 210 // -to argument. 230 TrTable : 211 // Translation table for .tr. 231 TreeRoot : 212 // Base of symbol tree. 232 Un : 213 // Undent to here. 233 Waitsw : 214 // From -wait option. 234 235 // 300 to 309 are reserved for runoff_driver. 236 // 310 to 319 are reserved for runoff_dim. 237 // 320 to 329 are reserved for runoff_mr0. 238 // 330 to 339 are reserved for runoff_mr7. 239 } 240 241 manifest 242 { 243 ByteBits = 9 // Bits per character, as packed by compiler. 244 Skip = $8177 // A character that will be ignored on output. 245 Maxline = 400 // Buffer lengths for input and output 246 Maxheads = 20 // No of header or footer lines. 247 MaxDepth = 90 // Nesting times 3 for .if. 248 249 LL_ = 65 // Default line length. 250 PL_ = 66 // Default page length -- 11 inches, 6 lines/in. 251 MA1_ = 4 // Default top margin above header 252 MA2_ = 2 // Default top margin below header 253 MA3_ = 2 // Default bottom margin above footer 254 MA4_ = 4 // Default bottom margin below footer 255 } 21 // Declarations for ROFF. 22 23 24 let Readhead (Head) = valof // Read in head or foot. 25 $( let l = Nr - Nrx 26 for i = 1 to l do Head!(i + 2) := Rawchar!(i + Nrx - 1) 27 Head!0, Head!1, Head!2 := Ll, In, l // Save line length and indenting by definition. 28 resultis Head 29 $) 30 31 and Gethead () = Nrx = Nr -* 0, Readhead (Newvec (Nr - Nrx + 2)) 32 33 and Sethead (EOhf) be 34 $( let OldNrx = Nrx 35 test Nrx = Nr 36 then Freeheads (EOhf) 37 or $( let Fline = 0 38 test '0' le Rawchar!Nrx le '9' 39 then $( Fline := ReadNumber (10) 40 unless 0 < Fline le Maxheads do 41 $( Report ("Bad header number") 42 Fline := 1 43 $) 44 unless EOhf!Fline = 0 do Freevec (EOhf!Fline) 45 EOhf!Fline := 0 46 $) 47 or $( Fline := 1 48 Freeheads (EOhf) 49 $) 50 if Nrx < Nr do EOhf!Fline := Gethead () 51 $) 52 let h = 0 53 for i = 1 to Maxheads unless EOhf!i = 0 do h := h + 1 54 EOhf!0 := h 55 Nrx := OldNrx 56 $) 57 and Freeheads (EhOf) be 58 $( for i = 1 to Maxheads unless EhOf!i = 0 do 59 $( Freevec (EhOf!i) 60 EhOf!i := 0 61 $) 62 EhOf!0 := 0 63 $) 64 65 and Title (Head) be 66 $( if Head = 0 return 67 unless Print logor Ft goto Out 68 let w = vec Maxline 69 let Ll, In, l = Head!0, Head!1, Head!2 70 for i = 1 to l do 71 $( w!i := Head!(i + 2) 72 if w!i = Spec_char do 73 $( l := Use_ref (Head + 2, w, l) 74 break 75 $) 76 $) 77 let Delim, Count = w!1, 0 78 for i = 1 to 4 do 79 $( l := l + 1 80 w!l := Delim 81 $) 82 let Start, Lengths = vec 3, vec 3 83 for i = 1 to l do if w!i = Delim do 84 $( Lengths!Count := i - Start!Count - 1 85 Count := Count + 1 86 Start!Count := i 87 if Count ge 4 break 88 $) 89 90 if Lengths!3 = 0 & Lengths!2 = 0 & Lengths!1 = 0 goto Out 91 let Widths, Gaps = vec 3, vec 3 92 for i = 1 to 3 do 93 $( let p, k, c = w + Start!i, Lengths!i, 0 94 for j = 1 to k do c := c + Width (p!j) 95 Widths!i := c 96 $) 97 98 Gaps!1 := In 99 test Lengths!2 = 0 100 then Gaps!2, Gaps!3 := 0, Ll - Widths!3 - Widths!1 - In 101 or $( Gaps!2 := MaxI (0, (Ll - In - Widths!2) / 2 - Widths!1) 102 Gaps!3 := Ll - Widths!3 - Widths!2 - Gaps!2 - Widths!1 - In 103 $) 104 105 if Lengths!3 = 0 do Gaps!3 := 0 106 107 PrinterIndent () 108 for i = 1 to 3 do 109 $( Blank (Gaps!i) 110 let p = w + Start!i 111 for j = 1 to Lengths!i do WriteChar (p!j) 112 $) 113 114 Out: Newline (1) 115 $) CAE time 3.3, 111 source lines per second. cross reference table Ad runoff_head: 130 Again runoff_head: 131 Blank runoff_head: 35, runoff_mr5: 109 Break runoff_head: 36 ByteBits runoff_head: 243 c runoff_mr5: 93, 94, 94, 95 Ce runoff_head: 132 Char runoff_head: 133 CharsTable runoff_head: 134 Charsw runoff_head: 135 Check_ref runoff_head: 38 ChStream runoff_head: 136 ConsoleReadline runoff_head: 40 Control runoff_head: 41 Conv runoff_head: 137 ConvertNtoS runoff_head: 19 Count runoff_mr5: 77, 84, 84, 85, 85, 86, 87 Delim runoff_mr5: 77, 80, 83 Device runoff_head: 139 DeviceTable runoff_head: 140 Ef runoff_head: 141 Eh runoff_head: 142 EhOf runoff_mr5: 57, 58, 59, 60, 62 Eject runoff_head: 47 EOhf runoff_mr5: 33, 36, 44, 44, 45, 48, 50, 53, 54 Eq runoff_head: 143 Eqcnt runoff_head: 144 ErrorfilePointer runoff_head: 145 Errorstream runoff_head: 146 ErrorTempID runoff_head: 148 ExecuteCommand runoff_head: 49 ExpError runoff_head: 149 ExtraMargin runoff_head: 150 Fc runoff_head: 151 Fd runoff_head: 152 Fi runoff_head: 153 FileName runoff_head: 154 Filesw runoff_head: 155 FillTrTable runoff_head: 50 Findent runoff_head: 157 FindInput runoff_head: 51 Fl runoff_head: 158 Fline runoff_mr5: 37, 39, 40, 42, 44, 44, 45, 47, 50 Flp runoff_head: 159 Foot runoff_head: 160 Footbuf runoff_head: 161 FootList runoff_head: 162 FootListBase runoff_head: 163 FootRef runoff_head: 164 Foot_begin runoff_head: 53 Foot_end runoff_head: 54 FormDate runoff_head: 24 Fp runoff_head: 166 Fr runoff_head: 167 Freeheads runoff_head: 55, runoff_mr5: 36, 48, 57 Freevec runoff_head: 21, runoff_mr5: 44, 59 From runoff_head: 168 Ft runoff_head: 169, runoff_mr5: 67 Fth runoff_head: 170 Fundent runoff_head: 171 Gaps runoff_mr5: 91, 98, 100, 100, 101, 102, 102, 105, 109 Gethead runoff_head: 57, runoff_mr5: 31, 50 GetString runoff_head: 59 h runoff_mr5: 52, 53, 53, 54 Head runoff_mr5: 24, 26, 27, 27, 27, 28, 65, 66, 69, 69, 69, 71, 73 Hyphenating runoff_head: 172 i runoff_mr5: 26, 26, 26, 53, 53, 58, 58, 59, 60, 70, 71, 71, 72, 78, 83, 83, 84, 86, 92, 93, 93, 95, 108, 109, 110, 111 In runoff_head: 173, runoff_mr5: 27, 69, 98, 100, 101, 102 InitializeSymbolTree runoff_head: 61 InputFileName runoff_head: 175 InputLines runoff_head: 176 InputStack runoff_head: 177 InsertFile runoff_head: 62 j runoff_mr5: 94, 94, 111, 111 JumpLine runoff_head: 178 k runoff_mr5: 93, 94 l runoff_mr5: 25, 26, 27, 69, 70, 73, 73, 79, 79, 80, 83 Lengths runoff_mr5: 82, 84, 90, 90, 90, 93, 99, 105, 111 LinesLeft runoff_head: 179 LIno runoff_head: 180 Ll runoff_head: 181, runoff_mr5: 27, 69, 100, 101, 102 LL_ runoff_head: 249 Lp runoff_head: 182 Ma1 runoff_head: 184 MA1_ runoff_head: 251 Ma2 runoff_head: 185 MA2_ runoff_head: 252 Ma3 runoff_head: 186 MA3_ runoff_head: 253 Ma4 runoff_head: 187 MA4_ runoff_head: 254 MaxDepth runoff_head: 247 Maxheads runoff_head: 246, runoff_mr5: 40, 53, 58 MaxI runoff_head: 23, runoff_mr5: 101 Maxline runoff_head: 245, runoff_mr5: 68 MinI runoff_head: 22 Ms runoff_head: 188 MultiplePagecount runoff_head: 189 Nc runoff_head: 190 Need runoff_head: 64 NeedSS runoff_head: 65 NestingDepth runoff_head: 191 Newline runoff_head: 66, runoff_mr5: 114 Newvec runoff_head: 20, runoff_mr5: 31 Nl runoff_head: 193 NNp runoff_head: 194 NoControl runoff_head: 195 NoFill runoff_head: 196 NoFtNo runoff_head: 197 NoPaging runoff_head: 198 Np runoff_head: 199 Nr runoff_head: 200, runoff_mr5: 25, 31, 31, 35, 50 Nrx runoff_head: 202, runoff_mr5: 25, 26, 31, 31, 34, 35, 38, 50, 55 Nx_close runoff_head: 68 Nx_open runoff_head: 69 Nx_reset runoff_head: 70 OddPage runoff_head: 203 Of runoff_head: 204 Oh runoff_head: 205 OldNrx runoff_mr5: 34, 55 Out runoff_mr5: 67, 90, 114 Output runoff_head: 206 p runoff_mr5: 93, 94, 110, 111 Packstring runoff_head: 14 PadLeft runoff_head: 207 Parameter runoff_head: 208 Passes runoff_head: 209 Pi runoff_head: 211 Pl runoff_head: 212 PL_ runoff_head: 250 Print runoff_head: 213, runoff_mr5: 67 PrinterIndent runoff_head: 73, runoff_mr5: 107 Printersw runoff_head: 214 PrintFootnotes runoff_head: 74 PrintLineNumbers runoff_head: 215 Rawchar runoff_head: 216, runoff_mr5: 26, 38 ReadExp runoff_head: 77 Readhead runoff_head: 76, runoff_mr5: 24, 31 Readline runoff_head: 75 ReadName runoff_head: 78 ReadNumber runoff_head: 79, runoff_mr5: 39 ReadParam runoff_head: 80 ReadString runoff_head: 81 Report runoff_head: 82, runoff_mr5: 41 Roff runoff_head: 83 RoffProcess runoff_head: 84 Roman runoff_head: 217 SavedCc runoff_head: 218 Selsw runoff_head: 220 SetCharsw runoff_head: 88 SetDevice runoff_head: 90 Sethead runoff_head: 91, runoff_mr5: 33 SetLinesLeft runoff_head: 92 SetPaging runoff_head: 94 SetSwitches runoff_head: 95 Set_ref runoff_head: 98 Skip runoff_head: 244 Skiptolabel runoff_head: 100 Spacing runoff_head: 101 Spec_char runoff_head: 221, runoff_mr5: 72 Start runoff_head: 222, runoff_mr5: 82, 84, 86, 93, 110 Stopsw runoff_head: 223 StoreArabic runoff_head: 104 StoreDate runoff_head: 106 StoreRoman runoff_head: 107 StoreString runoff_head: 108 Temp runoff_head: 224 Tempc runoff_head: 225 Text runoff_head: 111 TextRef runoff_head: 226 TimeNow runoff_head: 227 Title runoff_head: 112, runoff_mr5: 65 To runoff_head: 229 TreeRoot runoff_head: 231 TrTable runoff_head: 230 Typeout runoff_head: 115 Un runoff_head: 232 Unpackstring runoff_head: 15 UpdateSymbol runoff_head: 117 Use_ref runoff_head: 118, runoff_mr5: 73 w runoff_mr5: 68, 71, 72, 73, 77, 80, 83, 93, 110 Wait runoff_head: 119 Waitsw runoff_head: 233 Width runoff_head: 120, runoff_mr5: 94 Widths runoff_mr5: 91, 95, 100, 100, 101, 101, 102, 102, 102 WrCh runoff_head: 121 WrChInit runoff_head: 122 Writech runoff_head: 16 WriteChar runoff_head: 123, runoff_mr5: 111 WriteN runoff_head: 18 WriteS runoff_head: 17 Trans time 0.9, 738 object words per second. " Begin text of Sethead aa 000000 000007 123145 zero 7,42597 " Sethead aa 000001 164150 145141 zero 59496,51809 aa 000002 144000 000000 zero 51200 L3: aa 000003 000000 213000 33 epaq 0 " set lp to linkage section aa 000004 700026 764161 lprplp sb|22,*au aa 000005 200000 021100 adlx1 bp|0 " BCPL save aa 000006 700000 542111 sprpbp sb|0,x1 aa 000007 700001 544111 sprplp sb|1,x1 aa 000010 700422 620111 eax0 sb|274,x1 aa 000011 777760 360003 anx0 -16,du aa 000012 700025 740100 stx0 sb|21 " end of save sequence aa 000013 600264 236100 34 ldq sp|180 " Nrx aa 000014 700003 756111 stq sb|3,x1 " OldNrx aa 000015 600264 236100 35 ldq sp|180 " Nrx aa 000016 600261 116100 cmpq sp|177 " Nr aa 000017 000006 601004 tnz L9 aa 000020 700002 235111 36 lda sb|2,x1 " EOhf aa 000021 700012 755111 sta sb|10,x1 aa 000022 000525 272004 tsbbp L4+2 " Freeheads aa 000023 000010 000001 zero 8,1 aa 000024 000070 710004 tra L10 L9: aa 000025 700004 450111 37 stz sb|4,x1 " Fline aa 000026 600264 722100 38 lxl2 sp|180 " Nrx aa 000027 600303 760100 lprpap sp|195 " Rawchar aa 000030 000000 235112 lda ap|0,x2 aa 000031 700005 755111 sta sb|5,x1 aa 000032 000060 235007 lda 48,dl " '0' aa 000033 700005 115111 cmpa sb|5,x1 aa 000034 000042 605404 tpnz L11 aa 000035 700005 236111 ldq sb|5,x1 aa 000036 000071 116007 cmpq 57,dl " '9' aa 000037 000037 605404 tpnz L11 aa 000040 000012 235007 39 lda 10,dl " 10 aa 000041 700012 755111 sta sb|10,x1 4a 000042 400034 272120 tsbbp lp|L13,* " ReadNumber aa 000043 000010 000001 zero 8,1 aa 000044 700004 756111 stq sb|4,x1 " Fline aa 000045 700004 234111 40 szn sb|4,x1 " Fline aa 000046 000004 604404 tmoz L15 aa 000047 700004 236111 ldq sb|4,x1 " Fline aa 000050 000024 116007 cmpq 20,dl " Maxheads aa 000051 000007 604404 tmoz L14 L15: aa 000052 000070 352004 41 eapbp L16 " "Bad header number" aa 000053 700012 542111 sprpbp sb|10,x1 4a 000054 400032 272120 tsbbp lp|L17,* " Report aa 000055 000010 000001 zero 8,1 aa 000056 000001 235007 42 lda 1,dl " 1 aa 000057 700004 755111 sta sb|4,x1 " Fline L14: aa 000060 700004 723111 44 lxl3 sb|4,x1 " Fline aa 000061 700002 762111 lprpbp sb|2,x1 " EOhf aa 000062 200000 234113 szn bp|0,x3 aa 000063 000007 600004 tze L18 aa 000064 700004 724111 lxl4 sb|4,x1 " Fline aa 000065 700002 761111 lprpab sb|2,x1 " EOhf aa 000066 100000 235114 lda ab|0,x4 aa 000067 700012 755111 sta sb|10,x1 4a 000070 400030 272120 tsbbp lp|L19,* " Freevec aa 000071 000010 000001 zero 8,1 L18: aa 000072 700004 725111 45 lxl5 sb|4,x1 " Fline aa 000073 700002 763111 lprpbb sb|2,x1 " EOhf aa 000074 300000 450115 stz bb|0,x5 aa 000075 000007 710004 tra L12 L11: aa 000076 000001 235007 47 lda 1,dl " 1 aa 000077 700004 755111 sta sb|4,x1 " Fline aa 000100 700002 235111 48 lda sb|2,x1 " EOhf aa 000101 700012 755111 sta sb|10,x1 aa 000102 000445 272004 tsbbp L4+2 " Freeheads aa 000103 000010 000001 zero 8,1 L12: aa 000104 600264 235100 50 lda sp|180 " Nrx aa 000105 600261 115100 cmpa sp|177 " Nr aa 000106 000006 605004 tpl L20 aa 000107 000505 272004 tsbbp L2+2 " Gethead aa 000110 000010 000000 zero 8 aa 000111 700004 726111 lxl6 sb|4,x1 " Fline aa 000112 700002 765111 lprplb sb|2,x1 " EOhf aa 000113 500000 756116 stq lb|0,x6 L20: L10: aa 000114 700004 450111 52 stz sb|4,x1 " h aa 000115 000001 236007 53 ldq 1,dl " 1 aa 000116 700005 756111 stq sb|5,x1 " i aa 000117 000007 710004 tra L21 L22: aa 000120 700005 722111 lxl2 sb|5,x1 " i aa 000121 700002 760111 lprpap sb|2,x1 " EOhf aa 000122 000000 234112 szn ap|0,x2 aa 000123 000002 600004 tze L23 aa 000124 700004 054111 aos sb|4,x1 " h L23: aa 000125 700005 054111 aos sb|5,x1 " i L21: aa 000126 700005 236111 ldq sb|5,x1 " i aa 000127 000024 116007 cmpq 20,dl " Maxheads aa 000130 777770 604404 tmoz L22 aa 000131 700004 235111 54 lda sb|4,x1 " h aa 000132 700002 762111 lprpbp sb|2,x1 " EOhf aa 000133 200000 755100 sta bp|0 aa 000134 700003 235111 55 lda sb|3,x1 " OldNrx aa 000135 600264 755100 sta sp|180 " Nrx L8: aa 000136 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000137 200000 121100 sblx1 bp|0 aa 000140 700001 764111 lprplp sb|1,x1 aa 000141 200001 710100 tra bp|1 " end of return sequence " Literal pool L16: aa 000142 000021 102141 zero 17,33889 " "Bad header number" aa 000143 144040 150145 zero 51232,53349 aa 000144 141144 145162 zero 49764,51826 aa 000145 040156 165155 zero 16494,60013 aa 000146 142145 162000 zero 50277,58368 " Begin text of Title aa 000147 000005 124151 zero 5,43113 " Title aa 000150 164154 145000 zero 59500,51712 L5: aa 000151 000000 213000 65 epaq 0 " set lp to linkage section aa 000152 700026 764161 lprplp sb|22,*au aa 000153 200000 021100 adlx1 bp|0 " BCPL save aa 000154 700000 542111 sprpbp sb|0,x1 aa 000155 700001 544111 sprplp sb|1,x1 aa 000156 700714 620111 eax0 sb|460,x1 aa 000157 777760 360003 anx0 -16,du aa 000160 700025 740100 stx0 sb|21 " end of save sequence aa 000161 700002 234111 66 szn sb|2,x1 " Head aa 000162 000354 600004 tze L27 aa 000163 600300 234100 67 szn sp|192 " Print aa 000164 000003 601004 tnz L28 aa 000165 600217 234100 szn sp|143 " Ft aa 000166 000344 600004 tze L24 L28: aa 000167 700004 351511 68 eapab sb|4,x1 " a vector aa 000170 700003 541111 sprpab sb|3,x1 " w aa 000171 700002 761111 69 lprpab sb|2,x1 " Head aa 000172 100001 235100 lda ab|1 aa 000173 700627 755111 sta sb|407,x1 " In aa 000174 700002 763111 lprpbb sb|2,x1 " Head aa 000175 300000 235100 lda bb|0 aa 000176 700625 755111 sta sb|405,x1 " Ll aa 000177 700002 765111 lprplb sb|2,x1 " Head aa 000200 500002 235100 lda lb|2 aa 000201 700626 755111 sta sb|406,x1 " l aa 000202 000001 235007 70 lda 1,dl " 1 aa 000203 700630 755111 sta sb|408,x1 " i aa 000204 700626 235111 lda sb|406,x1 " l aa 000205 700631 755111 sta sb|409,x1 aa 000206 000031 710004 tra L29 L30: aa 000207 700630 235111 71 lda sb|408,x1 " i aa 000210 000002 075007 ada 2,dl " 2 aa 000211 700002 760111 lprpap sb|2,x1 " Head aa 000212 000000 236105 ldq ap|0,al aa 000213 700630 723111 lxl3 sb|408,x1 " i aa 000214 700003 762111 lprpbp sb|3,x1 " w aa 000215 200000 756113 stq bp|0,x3 aa 000216 700630 724111 72 lxl4 sb|408,x1 " i aa 000217 700003 761111 lprpab sb|3,x1 " w aa 000220 100000 236114 ldq ab|0,x4 aa 000221 600311 116100 cmpq sp|201 " Spec_char aa 000222 000014 601004 tnz L31 aa 000223 700002 235111 73 lda sb|2,x1 " Head aa 000224 000002 075007 ada 2,dl " 2 aa 000225 700672 755111 sta sb|442,x1 aa 000226 700003 235111 lda sb|3,x1 " w aa 000227 700673 755111 sta sb|443,x1 aa 000230 700626 235111 lda sb|406,x1 " l aa 000231 700674 755111 sta sb|444,x1 4a 000232 400026 272120 tsbbp lp|L32,* " Use_ref aa 000233 000670 000003 zero 440,3 aa 000234 700626 756111 stq sb|406,x1 " l aa 000235 000005 710004 74 tra L33 L31: aa 000236 700630 054111 aos sb|408,x1 " i L29: aa 000237 700630 236111 ldq sb|408,x1 " i aa 000240 700631 116111 cmpq sb|409,x1 aa 000241 777746 604404 tmoz L30 L33: aa 000242 700630 450111 77 stz sb|408,x1 " Count aa 000243 700003 763111 lprpbb sb|3,x1 " w aa 000244 300001 235100 lda bb|1 aa 000245 700631 755111 sta sb|409,x1 " Delim aa 000246 000001 235007 78 lda 1,dl " 1 aa 000247 700632 755111 sta sb|410,x1 " i aa 000250 000007 710004 tra L34 L35: aa 000251 700626 054111 79 aos sb|406,x1 " l aa 000252 700631 235111 80 lda sb|409,x1 " Delim aa 000253 700626 725111 lxl5 sb|406,x1 " l aa 000254 700003 765111 lprplb sb|3,x1 " w aa 000255 500000 755115 sta lb|0,x5 aa 000256 700632 054111 aos sb|410,x1 " i L34: aa 000257 700632 235111 lda sb|410,x1 " i aa 000260 000004 115007 cmpa 4,dl " 4 aa 000261 777770 604404 tmoz L35 aa 000262 700634 350111 82 eapap sb|412,x1 " a vector aa 000263 700632 540111 sprpap sb|410,x1 " Start aa 000264 700640 350111 eapap sb|416,x1 " a vector aa 000265 700633 540111 sprpap sb|411,x1 " Lengths aa 000266 000001 236007 83 ldq 1,dl " 1 aa 000267 700644 756111 stq sb|420,x1 " i aa 000270 700626 236111 ldq sb|406,x1 " l aa 000271 700645 756111 stq sb|421,x1 aa 000272 000027 710004 tra L36 L37: aa 000273 700644 726111 lxl6 sb|420,x1 " i aa 000274 700003 760111 lprpap sb|3,x1 " w aa 000275 000000 236116 ldq ap|0,x6 aa 000276 700631 116111 cmpq sb|409,x1 " Delim aa 000277 000021 601004 tnz L38 aa 000300 700644 235111 84 lda sb|420,x1 " i aa 000301 700630 722111 lxl2 sb|408,x1 " Count aa 000302 700632 762111 lprpbp sb|410,x1 " Start aa 000303 200000 175112 sba bp|0,x2 aa 000304 000001 175007 sba 1,dl " 1 aa 000305 700630 723111 lxl3 sb|408,x1 " Count aa 000306 700633 761111 lprpab sb|411,x1 " Lengths aa 000307 100000 755113 sta ab|0,x3 aa 000310 700630 054111 85 aos sb|408,x1 " Count aa 000311 700644 235111 86 lda sb|420,x1 " i aa 000312 700630 724111 lxl4 sb|408,x1 " Count aa 000313 700632 763111 lprpbb sb|410,x1 " Start aa 000314 300000 755114 sta bb|0,x4 aa 000315 700630 235111 87 lda sb|408,x1 " Count aa 000316 000004 115007 cmpa 4,dl " 4 aa 000317 000005 605004 tpl L39 L38: aa 000320 700644 054111 aos sb|420,x1 " i L36: aa 000321 700644 236111 ldq sb|420,x1 " i aa 000322 700645 116111 cmpq sb|421,x1 aa 000323 777750 604404 tmoz L37 L39: aa 000324 700633 765111 90 lprplb sb|411,x1 " Lengths aa 000325 500003 234100 szn lb|3 aa 000326 000007 601004 tnz L40 aa 000327 700633 760111 lprpap sb|411,x1 " Lengths aa 000330 000002 234100 szn ap|2 aa 000331 000004 601004 tnz L40 aa 000332 700633 762111 lprpbp sb|411,x1 " Lengths aa 000333 200001 234100 szn bp|1 aa 000334 000176 600004 tze L24 L40: aa 000335 700646 351511 91 eapab sb|422,x1 " a vector aa 000336 700645 541111 sprpab sb|421,x1 " Widths aa 000337 700652 351511 eapab sb|426,x1 " a vector aa 000340 700644 541111 sprpab sb|420,x1 " Gaps aa 000341 000001 235007 92 lda 1,dl " 1 aa 000342 700656 755111 sta sb|430,x1 " i aa 000343 000040 710004 tra L41 L42: aa 000344 700003 235111 93 lda sb|3,x1 " w aa 000345 700656 725111 lxl5 sb|430,x1 " i aa 000346 700632 761111 lprpab sb|410,x1 " Start aa 000347 100000 075115 ada ab|0,x5 aa 000350 700660 755111 sta sb|432,x1 " p aa 000351 700656 726111 lxl6 sb|430,x1 " i aa 000352 700633 763111 lprpbb sb|411,x1 " Lengths aa 000353 300000 235116 lda bb|0,x6 aa 000354 700661 755111 sta sb|433,x1 " k aa 000355 700657 450111 stz sb|431,x1 " c aa 000356 000001 235007 94 lda 1,dl " 1 aa 000357 700662 755111 sta sb|434,x1 " j aa 000360 700661 235111 lda sb|433,x1 " k aa 000361 700663 755111 sta sb|435,x1 aa 000362 000011 710004 tra L43 L44: aa 000363 700662 722111 lxl2 sb|434,x1 " j aa 000364 700660 765111 lprplb sb|432,x1 " p aa 000365 500000 235112 lda lb|0,x2 aa 000366 700672 755111 sta sb|442,x1 4a 000367 400024 272120 tsbbp lp|L45,* " Width aa 000370 000670 000001 zero 440,1 aa 000371 700657 056111 asq sb|431,x1 " c aa 000372 700662 054111 aos sb|434,x1 " j L43: aa 000373 700662 236111 ldq sb|434,x1 " j aa 000374 700663 116111 cmpq sb|435,x1 aa 000375 777766 604404 tmoz L44 aa 000376 700657 235111 95 lda sb|431,x1 " c aa 000377 700656 723111 lxl3 sb|430,x1 " i aa 000400 700645 760111 lprpap sb|421,x1 " Widths aa 000401 000000 755113 sta ap|0,x3 aa 000402 700656 054111 aos sb|430,x1 " i L41: aa 000403 700656 235111 lda sb|430,x1 " i aa 000404 000003 115007 cmpa 3,dl " 3 aa 000405 777737 604404 tmoz L42 aa 000406 700627 236111 98 ldq sb|407,x1 " In aa 000407 700644 762111 lprpbp sb|420,x1 " Gaps aa 000410 200001 756100 stq bp|1 aa 000411 700633 761111 99 lprpab sb|411,x1 " Lengths aa 000412 100002 234100 szn ab|2 aa 000413 000014 601004 tnz L46 aa 000414 700644 763111 100 lprpbb sb|420,x1 " Gaps aa 000415 300002 450100 stz bb|2 aa 000416 700625 236111 ldq sb|405,x1 " Ll aa 000417 700645 765111 lprplb sb|421,x1 " Widths aa 000420 500003 176100 sbq lb|3 aa 000421 700645 760111 lprpap sb|421,x1 " Widths aa 000422 000001 176100 sbq ap|1 aa 000423 700627 176111 sbq sb|407,x1 " In aa 000424 700644 762111 lprpbp sb|420,x1 " Gaps aa 000425 200003 756100 stq bp|3 aa 000426 000032 710004 tra L47 L46: aa 000427 700672 450111 101 stz sb|442,x1 aa 000430 700625 236111 ldq sb|405,x1 " Ll aa 000431 700627 176111 sbq sb|407,x1 " In aa 000432 700645 761111 lprpab sb|421,x1 " Widths aa 000433 100002 176100 sbq ab|2 aa 000434 000002 506007 div 2,dl " 2 aa 000435 700645 763111 lprpbb sb|421,x1 " Widths aa 000436 300001 176100 sbq bb|1 aa 000437 700673 756111 stq sb|443,x1 4a 000440 400022 272120 tsbbp lp|L48,* " MaxI aa 000441 000670 000002 zero 440,2 aa 000442 700644 765111 lprplb sb|420,x1 " Gaps aa 000443 500002 756100 stq lb|2 aa 000444 700625 236111 102 ldq sb|405,x1 " Ll aa 000445 700645 760111 lprpap sb|421,x1 " Widths aa 000446 000003 176100 sbq ap|3 aa 000447 700645 762111 lprpbp sb|421,x1 " Widths aa 000450 200002 176100 sbq bp|2 aa 000451 700644 761111 lprpab sb|420,x1 " Gaps aa 000452 100002 176100 sbq ab|2 aa 000453 700645 763111 lprpbb sb|421,x1 " Widths aa 000454 300001 176100 sbq bb|1 aa 000455 700627 176111 sbq sb|407,x1 " In aa 000456 700644 765111 lprplb sb|420,x1 " Gaps aa 000457 500003 756100 stq lb|3 L47: aa 000460 700633 760111 105 lprpap sb|411,x1 " Lengths aa 000461 000003 234100 szn ap|3 aa 000462 000003 601004 tnz L49 aa 000463 700644 762111 lprpbp sb|420,x1 " Gaps aa 000464 200003 450100 stz bp|3 L49: 4a 000465 400020 272120 107 tsbbp lp|L50,* " PrinterIndent aa 000466 000670 000000 zero 440 aa 000467 000001 236007 108 ldq 1,dl " 1 aa 000470 700656 756111 stq sb|430,x1 " i aa 000471 000036 710004 tra L51 L52: aa 000472 700656 724111 109 lxl4 sb|430,x1 " i aa 000473 700644 761111 lprpab sb|420,x1 " Gaps aa 000474 100000 236114 ldq ab|0,x4 aa 000475 700672 756111 stq sb|442,x1 4a 000476 400016 272120 tsbbp lp|L53,* " Blank aa 000477 000670 000001 zero 440,1 aa 000500 700003 236111 110 ldq sb|3,x1 " w aa 000501 700656 725111 lxl5 sb|430,x1 " i aa 000502 700632 763111 lprpbb sb|410,x1 " Start aa 000503 300000 076115 adq bb|0,x5 aa 000504 700657 756111 stq sb|431,x1 " p aa 000505 000001 236007 111 ldq 1,dl " 1 aa 000506 700660 756111 stq sb|432,x1 " j aa 000507 700656 726111 lxl6 sb|430,x1 " i aa 000510 700633 765111 lprplb sb|411,x1 " Lengths aa 000511 500000 236116 ldq lb|0,x6 aa 000512 700661 756111 stq sb|433,x1 aa 000513 000010 710004 tra L54 L55: aa 000514 700660 722111 lxl2 sb|432,x1 " j aa 000515 700657 760111 lprpap sb|431,x1 " p aa 000516 000000 236112 ldq ap|0,x2 aa 000517 700672 756111 stq sb|442,x1 4a 000520 400014 272120 tsbbp lp|L56,* " WriteChar aa 000521 000670 000001 zero 440,1 aa 000522 700660 054111 aos sb|432,x1 " j L54: aa 000523 700660 236111 ldq sb|432,x1 " j aa 000524 700661 116111 cmpq sb|433,x1 aa 000525 777767 604404 tmoz L55 aa 000526 700656 054111 aos sb|430,x1 " i L51: aa 000527 700656 235111 lda sb|430,x1 " i aa 000530 000003 115007 cmpa 3,dl " 3 aa 000531 777741 604404 tmoz L52 L24: aa 000532 000001 236007 114 ldq 1,dl " 1 aa 000533 700672 756111 stq sb|442,x1 4a 000534 400012 272120 tsbbp lp|L57,* " Newline aa 000535 000670 000001 zero 440,1 L27: aa 000536 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000537 200000 121100 sblx1 bp|0 aa 000540 700001 764111 lprplp sb|1,x1 aa 000541 200001 710100 tra bp|1 " end of return sequence " Begin text of Freeheads aa 000542 000011 106162 zero 9,35954 " Freeheads aa 000543 145145 150145 zero 51813,53349 aa 000544 141144 163000 zero 49764,58880 L4: aa 000545 000000 213000 57 epaq 0 " set lp to linkage section aa 000546 700026 764161 lprplp sb|22,*au aa 000547 200000 021100 adlx1 bp|0 " BCPL save aa 000550 700000 542111 sprpbp sb|0,x1 aa 000551 700001 544111 sprplp sb|1,x1 aa 000552 700422 620111 eax0 sb|274,x1 aa 000553 777760 360003 anx0 -16,du aa 000554 700025 740100 stx0 sb|21 " end of save sequence aa 000555 000001 236007 58 ldq 1,dl " 1 aa 000556 700003 756111 stq sb|3,x1 " i aa 000557 000017 710004 tra L61 L62: aa 000560 700003 723111 lxl3 sb|3,x1 " i aa 000561 700002 762111 lprpbp sb|2,x1 " EhOf aa 000562 200000 234113 szn bp|0,x3 aa 000563 000012 600004 tze L63 aa 000564 700003 724111 59 lxl4 sb|3,x1 " i aa 000565 700002 761111 lprpab sb|2,x1 " EhOf aa 000566 100000 236114 ldq ab|0,x4 aa 000567 700010 756111 stq sb|8,x1 4a 000570 400030 272120 tsbbp lp|L19,* " Freevec aa 000571 000006 000001 zero 6,1 aa 000572 700003 725111 60 lxl5 sb|3,x1 " i aa 000573 700002 763111 lprpbb sb|2,x1 " EhOf aa 000574 300000 450115 stz bb|0,x5 L63: aa 000575 700003 054111 aos sb|3,x1 " i L61: aa 000576 700003 236111 ldq sb|3,x1 " i aa 000577 000024 116007 cmpq 20,dl " Maxheads aa 000600 777760 604404 tmoz L62 aa 000601 700002 765111 62 lprplb sb|2,x1 " EhOf aa 000602 500000 450100 stz lb|0 L60: aa 000603 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000604 200000 121100 sblx1 bp|0 aa 000605 700001 764111 lprplp sb|1,x1 aa 000606 200001 710100 tra bp|1 " end of return sequence " Begin text of Gethead aa 000607 000007 107145 zero 7,36453 " Gethead aa 000610 164150 145141 zero 59496,51809 aa 000611 144000 000000 zero 51200 L2: aa 000612 000000 213000 31 epaq 0 " set lp to linkage section aa 000613 700026 764161 lprplp sb|22,*au aa 000614 200000 021100 adlx1 bp|0 " BCPL save aa 000615 700000 542111 sprpbp sb|0,x1 aa 000616 700001 544111 sprplp sb|1,x1 aa 000617 700422 620111 eax0 sb|274,x1 aa 000620 777760 360003 anx0 -16,du aa 000621 700025 740100 stx0 sb|21 " end of save sequence aa 000622 600264 235100 lda sp|180 " Nrx aa 000623 600261 115100 cmpa sp|177 " Nr aa 000624 000003 601004 tnz L66 aa 000625 000000 236007 ldq 0,dl " 0 aa 000626 000014 710004 tra L67 L66: aa 000627 600261 235100 lda sp|177 " Nr aa 000630 600264 175100 sba sp|180 " Nrx aa 000631 000002 075007 ada 2,dl " 2 aa 000632 700014 755111 sta sb|12,x1 4a 000633 400010 272120 tsbbp lp|L68,* " Newvec aa 000634 000012 000001 zero 10,1 aa 000635 700005 756111 stq sb|5,x1 aa 000636 700005 236111 ldq sb|5,x1 aa 000637 700014 756111 stq sb|12,x1 aa 000640 000016 272004 tsbbp L1+2 " Readhead aa 000641 000012 000001 zero 10,1 L67: aa 000642 700005 756111 stq sb|5,x1 aa 000643 700005 236111 ldq sb|5,x1 aa 000644 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000645 200000 121100 sblx1 bp|0 aa 000646 700001 764111 lprplp sb|1,x1 aa 000647 200001 710100 tra bp|1 " end of return sequence " Begin text of Readhead aa 000650 000010 122145 zero 8,42085 " Readhead aa 000651 141144 150145 zero 49764,53349 aa 000652 141144 000000 zero 49764 aa 000653 700002 756111 24 stq sb|2,x1 " temporary L1: aa 000654 000000 213000 epaq 0 " set lp to linkage section aa 000655 700026 764161 lprplp sb|22,*au aa 000656 200000 021100 adlx1 bp|0 " BCPL save aa 000657 700000 542111 sprpbp sb|0,x1 aa 000660 700001 544111 sprplp sb|1,x1 aa 000661 700417 620111 eax0 sb|271,x1 aa 000662 777760 360003 anx0 -16,du aa 000663 700025 740100 stx0 sb|21 " end of save sequence aa 000664 600261 236100 25 ldq sp|177 " Nr aa 000665 600264 176100 sbq sp|180 " Nrx aa 000666 700004 756111 stq sb|4,x1 " l aa 000667 000001 236007 26 ldq 1,dl " 1 aa 000670 700005 756111 stq sb|5,x1 " i aa 000671 700004 236111 ldq sb|4,x1 " l aa 000672 700006 756111 stq sb|6,x1 aa 000673 000015 710004 tra L72 L73: aa 000674 700005 236111 ldq sb|5,x1 " i aa 000675 000002 076007 adq 2,dl " 2 aa 000676 700005 235111 lda sb|5,x1 " i aa 000677 600264 075100 ada sp|180 " Nrx aa 000700 000001 175007 sba 1,dl " 1 aa 000701 700010 756111 stq sb|8,x1 " temporary aa 000702 600303 760100 lprpap sp|195 " Rawchar aa 000703 000000 236105 ldq ap|0,al aa 000704 700010 726111 lxl6 sb|8,x1 aa 000705 700002 762111 lprpbp sb|2,x1 " Head aa 000706 200000 756116 stq bp|0,x6 aa 000707 700005 054111 aos sb|5,x1 " i L72: aa 000710 700005 236111 ldq sb|5,x1 " i aa 000711 700006 116111 cmpq sb|6,x1 aa 000712 777762 604404 tmoz L73 aa 000713 600234 235100 27 lda sp|156 " Ll aa 000714 700002 761111 lprpab sb|2,x1 " Head aa 000715 100000 755100 sta ab|0 aa 000716 700004 235111 lda sb|4,x1 " l aa 000717 700002 763111 lprpbb sb|2,x1 " Head aa 000720 300002 755100 sta bb|2 aa 000721 600223 235100 lda sp|147 " In aa 000722 700002 765111 lprplb sb|2,x1 " Head aa 000723 500001 755100 sta lb|1 aa 000724 700002 235111 28 lda sb|2,x1 " Head L71: aa 000725 700004 755111 sta sb|4,x1 aa 000726 700004 235111 lda sb|4,x1 aa 000727 000044 777000 llr 36 " exchange A and Q aa 000730 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000731 200000 121100 sblx1 bp|0 aa 000732 700001 764111 lprplp sb|1,x1 aa 000733 200001 710100 tra bp|1 " end of return sequence " Definition section part one - external entry points 5a 000000 000026 000000 " pointer to first definition aa 000001 000000 600000 " flags: new format, ignore header aa 000002 000000 000000 " list terminator aa 000003 012162 165156 " "runoff_mr5" aa 000004 157146 146137 aa 000005 155162 065000 aa 000006 005124 151164 " "Title" aa 000007 154145 000000 aa 000010 011106 162145 " "Freeheads" aa 000011 145150 145141 aa 000012 144163 000000 aa 000013 007123 145164 " "Sethead" aa 000014 150145 141144 aa 000015 007107 145164 " "Gethead" aa 000016 150145 141144 aa 000017 010122 145141 " "Readhead" aa 000020 144150 145141 aa 000021 144000 000000 aa 000022 014163 171155 " "symbol_table" aa 000023 142157 154137 aa 000024 164141 142154 aa 000025 145000 000000 " Segname definition for runoff_mr5 55 000026 000031 000002 " forward, backward threads 5a 000027 000002 400003 " value defined, class flags 55 000030 000003 000031 " name pointer, first entry def " Definition for Title 55 000031 000034 000026 " forward, backward threads 0a 000032 000151 500000 " value defined, class flags 55 000033 000006 000026 " name pointer, segname def pointer " Definition for Freeheads 55 000034 000037 000031 " forward, backward threads 0a 000035 000545 500000 " value defined, class flags 55 000036 000010 000026 " name pointer, segname def pointer " Definition for Sethead 55 000037 000042 000034 " forward, backward threads 0a 000040 000003 500000 " value defined, class flags 55 000041 000013 000026 " name pointer, segname def pointer " Definition for Gethead 55 000042 000045 000037 " forward, backward threads 0a 000043 000612 500000 " value defined, class flags 55 000044 000015 000026 " name pointer, segname def pointer " Definition for Readhead 55 000045 000050 000042 " forward, backward threads 0a 000046 000654 500000 " value defined, class flags 55 000047 000017 000026 " name pointer, segname def pointer " Definition for symbol_table 55 000050 000002 000045 " forward, backward threads 6a 000051 000000 400002 " value defined, class flags 55 000052 000022 000026 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000053 021142 143160 " "bcpl_filesys_lib_" aa 000054 154137 146151 aa 000055 154145 163171 aa 000056 163137 154151 aa 000057 142137 000000 aa 000060 006116 145167 " "Newvec" aa 000061 166145 143000 5a 000062 000063 000000 aa 000063 000004 000000 55 000064 000053 000060 aa 000065 012162 165156 " "runoff_mr4" aa 000066 157146 146137 aa 000067 155162 064000 aa 000070 007116 145167 " "Newline" aa 000071 154151 156145 5a 000072 000073 000000 aa 000073 000004 000000 55 000074 000065 000070 aa 000075 011127 162151 " "WriteChar" aa 000076 164145 103150 aa 000077 141162 000000 5a 000100 000101 000000 aa 000101 000004 000000 55 000102 000065 000075 aa 000103 005102 154141 " "Blank" aa 000104 156153 000000 5a 000105 000106 000000 aa 000106 000004 000000 55 000107 000065 000103 aa 000110 015120 162151 " "PrinterIndent" aa 000111 156164 145162 aa 000112 111156 144145 aa 000113 156164 000000 5a 000114 000115 000000 aa 000115 000004 000000 55 000116 000065 000110 aa 000117 020142 143160 " "bcpl_arithmetic_" aa 000120 154137 141162 aa 000121 151164 150155 aa 000122 145164 151143 aa 000123 137000 000000 aa 000124 004115 141170 " "MaxI" aa 000125 111000 000000 5a 000126 000127 000000 aa 000127 000004 000000 55 000130 000117 000124 aa 000131 012162 165156 " "runoff_mr3" aa 000132 157146 146137 aa 000133 155162 063000 aa 000134 005127 151144 " "Width" aa 000135 164150 000000 5a 000136 000137 000000 aa 000137 000004 000000 55 000140 000131 000134 aa 000141 012162 165156 " "runoff_mr9" aa 000142 157146 146137 aa 000143 155162 071000 aa 000144 007125 163145 " "Use_ref" aa 000145 137162 145146 5a 000146 000147 000000 aa 000147 000004 000000 55 000150 000141 000144 aa 000151 007106 162145 " "Freevec" aa 000152 145166 145143 5a 000153 000154 000000 aa 000154 000004 000000 55 000155 000053 000151 aa 000156 012162 165156 " "runoff_mr0" aa 000157 157146 146137 aa 000160 155162 060000 aa 000161 006122 145160 " "Report" aa 000162 157162 164000 5a 000163 000164 000000 aa 000164 000004 000000 55 000165 000156 000161 aa 000166 012162 165156 " "runoff_mr8" aa 000167 157146 146137 aa 000170 155162 070000 aa 000171 012122 145141 " "ReadNumber" aa 000172 144116 165155 aa 000173 142145 162000 5a 000174 000175 000000 aa 000175 000004 000000 55 000176 000166 000171 aa 000177 000000 000000 " padding " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 000734 000000 " address of defs aa 000002 000000 000000 aa 000003 000000 000000 aa 000004 000000 000000 aa 000005 000000 000000 2a 000006 000010 000036 " offset to links, total length aa 000007 000000 000036 " obsolete length " External link pairs L68: 3a 000010 777770 000046 " "bcpl_filesys_lib_$Newvec" 5a 000011 000062 000000 L57: 3a 000012 777766 000046 " "runoff_mr4$Newline" 5a 000013 000072 000000 L56: 3a 000014 777764 000046 " "runoff_mr4$WriteChar" 5a 000015 000100 000000 L53: 3a 000016 777762 000046 " "runoff_mr4$Blank" 5a 000017 000105 000000 L50: 3a 000020 777760 000046 " "runoff_mr4$PrinterIndent" 5a 000021 000114 000000 L48: 3a 000022 777756 000046 " "bcpl_arithmetic_$MaxI" 5a 000023 000126 000000 L45: 3a 000024 777754 000046 " "runoff_mr3$Width" 5a 000025 000136 000000 L32: 3a 000026 777752 000046 " "runoff_mr9$Use_ref" 5a 000027 000146 000000 L19: 3a 000030 777750 000046 " "bcpl_filesys_lib_$Freevec" 5a 000031 000153 000000 L17: 3a 000032 777746 000046 " "runoff_mr0$Report" 5a 000033 000163 000000 L13: 3a 000034 777744 000046 " "runoff_mr8$ReadNumber" 5a 000035 000174 000000 " Symbol section header aa 000000 000000 000001 " version number of header structure aa 000001 163171 155142 " "symbtree" aa 000002 164162 145145 aa 000003 000000 000003 " compiler version number aa 000004 000000 101170 " date/time compiler modified aa 000005 533311 032072 " 09/25/73 0959.1 mst Tue aa 000006 000000 102333 " time of this compilation aa 000007 442224 146766 " 01/24/75 0704.7 mst Fri aa 000010 142143 160154 " "bcpl " aa 000011 040040 040040 aa 000012 000036 000035 " compiler version name - pointer, length aa 000013 000046 000024 " user id - pointer, length aa 000014 000053 000043 " comment string - pointer, length aa 000015 000002 000002 " text and linkage boundaries aa 000016 000024 000000 " source map, symbol tree root 7a 000017 000000 000110 " section header pointer, block size aa 000020 000000 000110 " next block pointer, rel_text aa 000021 000000 000122 " rel_def, rel_link aa 000022 000131 000110 " rel_symbol, default truncate aa 000023 000024 000000 " optional truncate, unused aa 000024 000000 000001 " source files map: version number aa 000025 000000 000002 " number of files aa 000026 000064 000051 " runoff_mr5 aa 000027 023333 611453 " last modified on aa 000030 000000 102333 " 01/24/75 0647.2 mst Fri aa 000031 432367 200000 aa 000032 000077 000042 " runoff_head aa 000033 021607 541104 " last modified on aa 000034 000000 101621 " 05/06/74 1743.2 mst Mon aa 000035 352532 200000 aa 000036 102103 120114 " "BCPL version 3.4, August 1973" aa 000037 040166 145162 aa 000040 163151 157156 aa 000041 040063 056064 aa 000042 054040 101165 aa 000043 147165 163164 aa 000044 040061 071067 aa 000045 063040 040040 aa 000046 115141 162164 " "Martinson.SysMaint.a" aa 000047 151156 163157 aa 000050 156056 123171 aa 000051 163115 141151 aa 000052 156164 056141 aa 000053 163157 165162 " "source xref alist optimize 6180" aa 000054 143145 040040 aa 000055 170162 145146 aa 000056 040040 141154 aa 000057 151163 164040 aa 000060 040157 160164 aa 000061 151155 151172 aa 000062 145040 040066 aa 000063 061070 060040 aa 000064 076062 056061 " ">2.1spec>online>mib083074>runoff_mr5.bcpl" aa 000065 163160 145143 aa 000066 076157 156154 aa 000067 151156 145076 aa 000070 155151 142060 aa 000071 070063 060067 aa 000072 064076 162165 aa 000073 156157 146146 aa 000074 137155 162065 aa 000075 056142 143160 aa 000076 154040 040040 aa 000077 076154 144144 " ">ldd>include>runoff_head.incl.bcpl" aa 000100 076151 156143 aa 000101 154165 144145 aa 000102 076162 165156 aa 000103 157146 146137 aa 000104 150145 141144 aa 000105 056151 156143 aa 000106 154056 142143 aa 000107 160154 040040 " Relocation information " text section relocation bits aa 000110 000000 000002 " version number of rel-bits structure aa 000111 000000 000377 " length in bits aa 000112 741045 170047 aa 000113 236013 647430 aa 000114 351705 632360 aa 000115 506474 051517 aa 000116 004323 602164 aa 000117 740275 170157 aa 000120 236042 647420 aa 000121 100000 000000 l " inkage relocation bits aa 000122 000000 000002 " version number of rel-bits structure aa 000123 000000 000234 " length in bits aa 000124 100002 204652 aa 000125 465246 524652 aa 000126 465246 524652 aa 000127 465246 524652 aa 000130 465200 000000 s " ymbol relocation bits aa 000131 000000 000002 " version number of rel-bits structure aa 000132 000000 000043 " length in bits aa 000133 740365 770342 " Object map aa 001326 000000 000001 " version number of object_map structure aa 001327 157142 152137 " "obj_map " aa 001330 155141 160040 aa 001331 000000 000734 " text offset, length aa 001332 000734 000177 " def offset, length aa 001333 001134 000036 " link offset, length aa 001334 001172 000134 " symbol offset, length aa 001335 000000 000000 " break map offset, length aa 001336 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 001337 001326 000000 " object map pointer, unused ----------------------------------------------------------- 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