Compilation listing of file >2.1spec>online>mib083074>runoff_mr7.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0705.0 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:47 by R F Mabee. 4 // 5 // This file contains the routines needed to create the ".chars" file 6 // that contains lines unprintable with the device being used: 7 // 8 // WrChInit Initializes things-called from mr1. 9 // WrCh Called from Write to process a character. 10 // Wrline Write a complete line. 11 // Store Store a character. 12 // The first two are external, the others not. 13 14 // Copyright (c) 1974 by Massachusetts Institute of Technology and Honeywell Information Systems, Inc. 15 16 // General permission is granted to copy and use this program, but not to sell it, provided that the above 17 // copyright statement is given. Contact Information Processing Services, MIT, for further information. 18 // Please contact R F Mabee at MIT for information on this program and versions for other machines. 19 20 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 } 20 // Declarations for Mulrof. 21 22 23 global // The following are used by all of these routines: 24 { LineC : 330 // Line counter on page. 25 LineP : 331 // Character position on line. 26 FF : 332 // Unprintable character on line so far? 27 LPW : 333 // Last page number written on. 28 Buff : 334 // Buffer for the line. 29 Red : 335 // Was the last character stored red? 30 } 31 32 let WrChInit () be // Initialize the static quantities 33 { Buff := Newvec (Maxline) // Storage for the line 34 LPW := -1 35 LineC := 1 36 LineP := 0 37 FF := false 38 Red := false 39 40 for i = 0 to 127 do CharsTable!i := '*s' 41 let T1 = table '[', ']', '{', '}', '~', '`' 42 and T2 = table '<', '>', '(', ')', 't', '*'' 43 for i = 0 to 5 do CharsTable!(T1!i) := T2!i 44 } 45 and WrCh (c) be // Write out character c. 46 $( test CharsTable!c = '*s' 47 then $( if Red do 48 $( Store ('*k') 49 Red := false 50 $) 51 Store (c) 52 $) 53 or $( unless Red do 54 $( Store ('*d') 55 Red := true 56 $) 57 Store (CharsTable!c) 58 FF := true 59 $) 60 if c = '*n' do 61 $( if FF do Wrline () 62 LineP, FF, Red := 0, false, false 63 $) 64 $) 65 and Wrline () be 66 $( if Red do Store ('*k') 67 if LPW ne Np do // First line printed on this page. 68 $( WriteS (ChStream, "*n*n*nPage ") 69 WriteN (ChStream, Np) 70 WriteS (ChStream, "*n*n*n") 71 LPW := Np 72 $) 73 if Nl < 10 do Writech (ChStream, '*s') 74 WriteN (ChStream, Nl) 75 Writech (ChStream, '*t') 76 for i = 1 to LineP do Writech (ChStream, Buff[i]) 77 $) 78 and Store (c) be 79 $( LineP := LineP + 1 80 Buff[LineP] := c 81 $) CAE time 3.0, 109 source lines per second. cross reference table Ad runoff_head: 130 Again runoff_head: 131 Blank runoff_head: 35 Break runoff_head: 36 Buff runoff_mr7: 28, 33, 76, 80 ByteBits runoff_head: 243 c runoff_mr7: 45, 46, 51, 57, 60, 78, 80 Ce runoff_head: 132 Char runoff_head: 133 CharsTable runoff_head: 134, runoff_mr7: 40, 43, 46, 57 Charsw runoff_head: 135 Check_ref runoff_head: 38 ChStream runoff_head: 136, runoff_mr7: 68, 69, 70, 73, 74, 75, 76 ConsoleReadline runoff_head: 40 Control runoff_head: 41 Conv runoff_head: 137 ConvertNtoS runoff_head: 19 Device runoff_head: 139 DeviceTable runoff_head: 140 Ef runoff_head: 141 Eh runoff_head: 142 Eject runoff_head: 47 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 FF runoff_mr7: 26, 37, 58, 61, 62 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 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 Freevec runoff_head: 21 From runoff_head: 168 Ft runoff_head: 169 Fth runoff_head: 170 Fundent runoff_head: 171 Gethead runoff_head: 57 GetString runoff_head: 59 Hyphenating runoff_head: 172 i runoff_mr7: 40, 40, 43, 43, 43, 76, 76 In runoff_head: 173 InitializeSymbolTree runoff_head: 61 InputFileName runoff_head: 175 InputLines runoff_head: 176 InputStack runoff_head: 177 InsertFile runoff_head: 62 JumpLine runoff_head: 178 LineC runoff_mr7: 24, 35 LineP runoff_mr7: 25, 36, 62, 76, 79, 79, 80 LinesLeft runoff_head: 179 LIno runoff_head: 180 Ll runoff_head: 181 LL_ runoff_head: 249 Lp runoff_head: 182 LPW runoff_mr7: 27, 34, 67, 71 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 MaxI runoff_head: 23 Maxline runoff_head: 245, runoff_mr7: 33 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 Newvec runoff_head: 20, runoff_mr7: 33 Nl runoff_head: 193, runoff_mr7: 73, 74 NNp runoff_head: 194 NoControl runoff_head: 195 NoFill runoff_head: 196 NoFtNo runoff_head: 197 NoPaging runoff_head: 198 Np runoff_head: 199, runoff_mr7: 67, 69, 71 Nr runoff_head: 200 Nrx runoff_head: 202 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 Output runoff_head: 206 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 PrinterIndent runoff_head: 73 Printersw runoff_head: 214 PrintFootnotes runoff_head: 74 PrintLineNumbers runoff_head: 215 Rawchar runoff_head: 216 ReadExp runoff_head: 77 Readhead runoff_head: 76 Readline runoff_head: 75 ReadName runoff_head: 78 ReadNumber runoff_head: 79 ReadParam runoff_head: 80 ReadString runoff_head: 81 Red runoff_mr7: 29, 38, 47, 49, 53, 55, 62, 66 Report runoff_head: 82 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 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 Start runoff_head: 222 Stopsw runoff_head: 223 Store runoff_mr7: 48, 51, 54, 57, 66, 78 StoreArabic runoff_head: 104 StoreDate runoff_head: 106 StoreRoman runoff_head: 107 StoreString runoff_head: 108 T1 runoff_mr7: 41, 43 T2 runoff_mr7: 42, 43 Temp runoff_head: 224 Tempc runoff_head: 225 Text runoff_head: 111 TextRef runoff_head: 226 TimeNow runoff_head: 227 Title runoff_head: 112 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 Wait runoff_head: 119 Waitsw runoff_head: 233 Width runoff_head: 120 WrCh runoff_head: 121, runoff_mr7: 45 WrChInit runoff_head: 122, runoff_mr7: 32 Writech runoff_head: 16, runoff_mr7: 73, 75, 76 WriteChar runoff_head: 123 WriteN runoff_head: 18, runoff_mr7: 69, 74 WriteS runoff_head: 17, runoff_mr7: 68, 70 Wrline runoff_mr7: 61, 65 Trans time 0.5, 780 object words per second. " Begin text of Wrline aa 000000 000006 127162 zero 6,44658 " Wrline aa 000001 154151 156145 zero 55401,56421 L3: aa 000002 000000 213000 65 epaq 0 " set lp to linkage section aa 000003 700026 764161 lprplp sb|22,*au aa 000004 200000 021100 adlx1 bp|0 " BCPL save aa 000005 700000 542111 sprpbp sb|0,x1 aa 000006 700001 544111 sprplp sb|1,x1 aa 000007 700423 620111 eax0 sb|275,x1 aa 000010 777760 360003 anx0 -16,du aa 000011 700025 740100 stx0 sb|21 " end of save sequence aa 000012 600517 234100 66 szn sp|335 " Red aa 000013 000005 600004 tze L8 aa 000014 000017 236007 ldq 15,dl " '*k' aa 000015 700010 756111 stq sb|8,x1 aa 000016 000114 272004 tsbbp L4+2 " Store aa 000017 000006 000001 zero 6,1 L8: aa 000020 600515 236100 67 ldq sp|333 " LPW aa 000021 600260 116100 cmpq sp|176 " Np aa 000022 000025 600004 tze L9 aa 000023 600152 235100 68 lda sp|106 " ChStream aa 000024 700010 755111 sta sb|8,x1 aa 000025 000076 350004 eapap L10 " "*n*n*nPage " aa 000026 700011 540111 sprpap sb|9,x1 4a 000027 400016 272120 tsbbp lp|L11,* " WriteS aa 000030 000006 000002 zero 6,2 aa 000031 600152 235100 69 lda sp|106 " ChStream aa 000032 700010 755111 sta sb|8,x1 aa 000033 600260 235100 lda sp|176 " Np aa 000034 700011 755111 sta sb|9,x1 4a 000035 400014 272120 tsbbp lp|L12,* " WriteN aa 000036 000006 000002 zero 6,2 aa 000037 600152 235100 70 lda sp|106 " ChStream aa 000040 700010 755111 sta sb|8,x1 aa 000041 000060 350004 eapap L13 " "*n*n*n" aa 000042 700011 540111 sprpap sb|9,x1 4a 000043 400016 272120 tsbbp lp|L11,* " WriteS aa 000044 000006 000002 zero 6,2 aa 000045 600260 235100 71 lda sp|176 " Np aa 000046 600515 755100 sta sp|333 " LPW L9: aa 000047 600252 235100 73 lda sp|170 " Nl aa 000050 000012 115007 cmpa 10,dl " 10 aa 000051 000007 605004 tpl L14 aa 000052 600152 236100 ldq sp|106 " ChStream aa 000053 700010 756111 stq sb|8,x1 aa 000054 000040 236007 ldq 32,dl " '*s' aa 000055 700011 756111 stq sb|9,x1 4a 000056 400012 272120 tsbbp lp|L15,* " Writech aa 000057 000006 000002 zero 6,2 L14: aa 000060 600152 236100 74 ldq sp|106 " ChStream aa 000061 700010 756111 stq sb|8,x1 aa 000062 600252 236100 ldq sp|170 " Nl aa 000063 700011 756111 stq sb|9,x1 4a 000064 400014 272120 tsbbp lp|L12,* " WriteN aa 000065 000006 000002 zero 6,2 aa 000066 600152 236100 75 ldq sp|106 " ChStream aa 000067 700010 756111 stq sb|8,x1 aa 000070 000011 236007 ldq 9,dl " '*t' aa 000071 700011 756111 stq sb|9,x1 4a 000072 400012 272120 tsbbp lp|L15,* " Writech aa 000073 000006 000002 zero 6,2 aa 000074 000001 236007 76 ldq 1,dl " 1 aa 000075 700002 756111 stq sb|2,x1 " i aa 000076 600513 236100 ldq sp|331 " LineP aa 000077 700003 756111 stq sb|3,x1 aa 000100 000012 710004 tra L16 L17: aa 000101 600152 236100 ldq sp|106 " ChStream aa 000102 700010 756111 stq sb|8,x1 aa 000103 700002 722111 lxl2 sb|2,x1 " i aa 000104 600516 760100 lprpap sp|334 " Buff aa 000105 000000 236112 ldq ap|0,x2 aa 000106 700011 756111 stq sb|9,x1 4a 000107 400012 272120 tsbbp lp|L15,* " Writech aa 000110 000006 000002 zero 6,2 aa 000111 700002 054111 aos sb|2,x1 " i L16: aa 000112 700002 236111 ldq sb|2,x1 " i aa 000113 700003 116111 cmpq sb|3,x1 aa 000114 777765 604404 tmoz L17 L7: aa 000115 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000116 200000 121100 sblx1 bp|0 aa 000117 700001 764111 lprplp sb|1,x1 aa 000120 200001 710100 tra bp|1 " end of return sequence " Literal pool L13: aa 000121 000003 012012 zero 3,5130 " "*n*n*n" aa 000122 012000 000000 zero 5120 L10: aa 000123 000010 012012 zero 8,5130 " "*n*n*nPage " aa 000124 012120 141147 zero 5200,49767 aa 000125 145040 000000 zero 51744 " Begin text of Store aa 000126 000005 123164 zero 5,42612 " Store aa 000127 157162 145000 zero 56946,51712 L4: aa 000130 000000 213000 78 epaq 0 " set lp to linkage section aa 000131 700026 764161 lprplp sb|22,*au aa 000132 200000 021100 adlx1 bp|0 " BCPL save aa 000133 700000 542111 sprpbp sb|0,x1 aa 000134 700001 544111 sprplp sb|1,x1 aa 000135 700417 620111 eax0 sb|271,x1 aa 000136 777760 360003 anx0 -16,du aa 000137 700025 740100 stx0 sb|21 " end of save sequence aa 000140 600513 054100 79 aos sp|331 " LineP aa 000141 700002 235111 80 lda sb|2,x1 " c aa 000142 600513 723100 lxl3 sp|331 " LineP aa 000143 600516 762100 lprpbp sp|334 " Buff aa 000144 200000 755113 sta bp|0,x3 L20: aa 000145 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000146 200000 121100 sblx1 bp|0 aa 000147 700001 764111 lprplp sb|1,x1 aa 000150 200001 710100 tra bp|1 " end of return sequence " Begin text of WrCh aa 000151 000004 127162 zero 4,44658 " WrCh aa 000152 103150 000000 zero 34408 L2: aa 000153 000000 213000 45 epaq 0 " set lp to linkage section aa 000154 700026 764161 lprplp sb|22,*au aa 000155 200000 021100 adlx1 bp|0 " BCPL save aa 000156 700000 542111 sprpbp sb|0,x1 aa 000157 700001 544111 sprplp sb|1,x1 aa 000160 700422 620111 eax0 sb|274,x1 aa 000161 777760 360003 anx0 -16,du aa 000162 700025 740100 stx0 sb|21 " end of save sequence aa 000163 700002 724111 46 lxl4 sb|2,x1 " c aa 000164 600150 761100 lprpab sp|104 " CharsTable aa 000165 100000 235114 lda ab|0,x4 aa 000166 000040 115007 cmpa 32,dl " '*s' aa 000167 000015 601004 tnz L24 aa 000170 600517 234100 47 szn sp|335 " Red aa 000171 000006 600004 tze L26 aa 000172 000017 236007 48 ldq 15,dl " '*k' aa 000173 700006 756111 stq sb|6,x1 aa 000174 777736 272004 tsbbp L4+2 " Store aa 000175 000004 000001 zero 4,1 aa 000176 600517 450100 49 stz sp|335 " Red L26: aa 000177 700002 236111 51 ldq sb|2,x1 " c aa 000200 700006 756111 stq sb|6,x1 aa 000201 777731 272004 tsbbp L4+2 " Store aa 000202 000004 000001 zero 4,1 aa 000203 000021 710004 tra L25 L24: aa 000204 600517 234100 53 szn sp|335 " Red aa 000205 000007 601004 tnz L27 aa 000206 000016 236007 54 ldq 14,dl " '*d' aa 000207 700006 756111 stq sb|6,x1 aa 000210 777722 272004 tsbbp L4+2 " Store aa 000211 000004 000001 zero 4,1 aa 000212 000001 336007 55 lcq 1,dl " true aa 000213 600517 756100 stq sp|335 " Red L27: aa 000214 700002 725111 57 lxl5 sb|2,x1 " c aa 000215 600150 763100 lprpbb sp|104 " CharsTable aa 000216 300000 236115 ldq bb|0,x5 aa 000217 700006 756111 stq sb|6,x1 aa 000220 777712 272004 tsbbp L4+2 " Store aa 000221 000004 000001 zero 4,1 aa 000222 000001 336007 58 lcq 1,dl " true aa 000223 600514 756100 stq sp|332 " FF L25: aa 000224 700002 236111 60 ldq sb|2,x1 " c aa 000225 000012 116007 cmpq 10,dl " '*n' aa 000226 000010 601004 tnz L28 aa 000227 600514 234100 61 szn sp|332 " FF aa 000230 000003 600004 tze L29 aa 000231 777553 272004 tsbbp L3+2 " Wrline aa 000232 000004 000000 zero 4 L29: aa 000233 600517 450100 62 stz sp|335 " Red aa 000234 600513 450100 stz sp|331 " LineP aa 000235 600514 450100 stz sp|332 " FF L28: L23: aa 000236 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000237 200000 121100 sblx1 bp|0 aa 000240 700001 764111 lprplp sb|1,x1 aa 000241 200001 710100 tra bp|1 " end of return sequence " Begin text of WrChInit aa 000242 000010 127162 zero 8,44658 " WrChInit aa 000243 103150 111156 zero 34408,37486 aa 000244 151164 000000 zero 53876 L1: aa 000245 000000 213000 32 epaq 0 " set lp to linkage section aa 000246 700026 764161 lprplp sb|22,*au aa 000247 200000 021100 adlx1 bp|0 " BCPL save aa 000250 700000 542111 sprpbp sb|0,x1 aa 000251 700001 544111 sprplp sb|1,x1 aa 000252 700422 620111 eax0 sb|274,x1 aa 000253 777760 360003 anx0 -16,du aa 000254 700025 740100 stx0 sb|21 " end of save sequence aa 000255 000620 235007 33 lda 400,dl " Maxline aa 000256 700012 755111 sta sb|10,x1 4a 000257 400010 272120 tsbbp lp|L33,* " Newvec aa 000260 000010 000001 zero 8,1 aa 000261 600516 756100 stq sp|334 " Buff aa 000262 000001 336007 34 lcq 1,dl aa 000263 600515 756100 stq sp|333 " LPW aa 000264 000001 236007 35 ldq 1,dl " 1 aa 000265 600512 756100 stq sp|330 " LineC aa 000266 600513 450100 36 stz sp|331 " LineP aa 000267 600514 450100 37 stz sp|332 " FF aa 000270 600517 450100 38 stz sp|335 " Red aa 000271 700002 450111 40 stz sb|2,x1 " i aa 000272 000006 710004 tra L34 L35: aa 000273 000040 236007 ldq 32,dl " '*s' aa 000274 700002 726111 lxl6 sb|2,x1 " i aa 000275 600150 765100 lprplb sp|104 " CharsTable aa 000276 500000 756116 stq lb|0,x6 aa 000277 700002 054111 aos sb|2,x1 " i L34: aa 000300 700002 236111 ldq sb|2,x1 " i aa 000301 000177 116007 cmpq 127,dl " 127 aa 000302 777771 604404 tmoz L35 aa 000303 000035 350004 41 eapap L36 " a table aa 000304 700002 540111 sprpap sb|2,x1 " T1 aa 000305 000025 350004 42 eapap L37 " a table aa 000306 700003 540111 sprpap sb|3,x1 " T2 aa 000307 700004 450111 43 stz sb|4,x1 " i aa 000310 000012 710004 tra L38 L39: aa 000311 700004 722111 lxl2 sb|4,x1 " i aa 000312 700003 760111 lprpap sb|3,x1 " T2 aa 000313 000000 235112 lda ap|0,x2 aa 000314 700004 723111 lxl3 sb|4,x1 " i aa 000315 700002 762111 lprpbp sb|2,x1 " T1 aa 000316 200000 723113 lxl3 bp|0,x3 aa 000317 600150 761100 lprpab sp|104 " CharsTable aa 000320 100000 755113 sta ab|0,x3 aa 000321 700004 054111 aos sb|4,x1 " i L38: aa 000322 700004 235111 lda sb|4,x1 " i aa 000323 000005 115007 cmpa 5,dl " 5 aa 000324 777765 604404 tmoz L39 L32: aa 000325 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000326 200000 121100 sblx1 bp|0 aa 000327 700001 764111 lprplp sb|1,x1 aa 000330 200001 710100 tra bp|1 " end of return sequence " Literal pool aa 000331 000000 000000 zero 0 " padding L37: aa 000332 000000 000074 zero 0,60 " a table aa 000333 000000 000076 zero 0,62 aa 000334 000000 000050 zero 0,40 aa 000335 000000 000051 zero 0,41 aa 000336 000000 000164 zero 0,116 aa 000337 000000 000047 zero 0,39 L36: aa 000340 000000 000133 zero 0,91 " a table aa 000341 000000 000135 zero 0,93 aa 000342 000000 000173 zero 0,123 aa 000343 000000 000175 zero 0,125 aa 000344 000000 000176 zero 0,126 aa 000345 000000 000140 zero 0,96 " Definition section part one - external entry points 5a 000000 000017 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_mr7" aa 000004 157146 146137 aa 000005 155162 067000 aa 000006 004127 162103 " "WrCh" aa 000007 150000 000000 aa 000010 010127 162103 " "WrChInit" aa 000011 150111 156151 aa 000012 164000 000000 aa 000013 014163 171155 " "symbol_table" aa 000014 142157 154137 aa 000015 164141 142154 aa 000016 145000 000000 " Segname definition for runoff_mr7 55 000017 000022 000002 " forward, backward threads 5a 000020 000002 400003 " value defined, class flags 55 000021 000003 000022 " name pointer, first entry def " Definition for WrCh 55 000022 000025 000017 " forward, backward threads 0a 000023 000153 500000 " value defined, class flags 55 000024 000006 000017 " name pointer, segname def pointer " Definition for WrChInit 55 000025 000030 000022 " forward, backward threads 0a 000026 000245 500000 " value defined, class flags 55 000027 000010 000017 " name pointer, segname def pointer " Definition for symbol_table 55 000030 000002 000025 " forward, backward threads 6a 000031 000000 400002 " value defined, class flags 55 000032 000013 000017 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000033 021142 143160 " "bcpl_filesys_lib_" aa 000034 154137 146151 aa 000035 154145 163171 aa 000036 163137 154151 aa 000037 142137 000000 aa 000040 006116 145167 " "Newvec" aa 000041 166145 143000 5a 000042 000043 000000 aa 000043 000004 000000 55 000044 000033 000040 aa 000045 022142 143160 " "bcpl_machine_code_" aa 000046 154137 155141 aa 000047 143150 151156 aa 000050 145137 143157 aa 000051 144145 137000 aa 000052 007127 162151 " "Writech" aa 000053 164145 143150 5a 000054 000055 000000 aa 000055 000004 000000 55 000056 000045 000052 aa 000057 017142 143160 " "bcpl_stream_io_" aa 000060 154137 163164 aa 000061 162145 141155 aa 000062 137151 157137 aa 000063 006127 162151 " "WriteN" aa 000064 164145 116000 5a 000065 000066 000000 aa 000066 000004 000000 55 000067 000057 000063 aa 000070 006127 162151 " "WriteS" aa 000071 164145 123000 5a 000072 000073 000000 aa 000073 000004 000000 55 000074 000057 000070 aa 000075 000000 000000 " padding " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 000346 000000 " address of defs aa 000002 000000 000000 aa 000003 000000 000000 aa 000004 000000 000000 aa 000005 000000 000000 2a 000006 000010 000020 " offset to links, total length aa 000007 000000 000020 " obsolete length " External link pairs L33: 3a 000010 777770 000046 " "bcpl_filesys_lib_$Newvec" 5a 000011 000042 000000 L15: 3a 000012 777766 000046 " "bcpl_machine_code_$Writech" 5a 000013 000054 000000 L12: 3a 000014 777764 000046 " "bcpl_stream_io_$WriteN" 5a 000015 000065 000000 L11: 3a 000016 777762 000046 " "bcpl_stream_io_$WriteS" 5a 000017 000072 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 442316 052720 " 01/24/75 0705.0 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 000117 " rel_def, rel_link aa 000022 000123 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_mr7 aa 000027 023333 611455 " 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_mr7.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 162067 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 000237 " length in bits aa 000112 740565 000024 aa 000113 000123 601264 aa 000114 000120 000517 aa 000115 006323 614764 aa 000116 741550 000000 l " inkage relocation bits aa 000117 000000 000002 " version number of rel-bits structure aa 000120 000000 000110 " length in bits aa 000121 100002 204652 aa 000122 465246 524652 s " ymbol relocation bits aa 000123 000000 000002 " version number of rel-bits structure aa 000124 000000 000043 " length in bits aa 000125 740365 770342 " Object map aa 000612 000000 000001 " version number of object_map structure aa 000613 157142 152137 " "obj_map " aa 000614 155141 160040 aa 000615 000000 000346 " text offset, length aa 000616 000346 000075 " def offset, length aa 000617 000444 000020 " link offset, length aa 000620 000464 000126 " symbol offset, length aa 000621 000000 000000 " break map offset, length aa 000622 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 000623 000612 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