Compilation listing of file >2.1spec>online>mib083074>runoff_mr3.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0704.3 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 08/29/74 at 19:23:28 by R F Mabee. 4 // 5 // This file contains the following routines for printing text: 6 // Text process a line of text 7 // * Fill make a complete line if possible 8 // * TrytoHyphenate break word if possible 9 // * Adjust print a line, right-adjusted 10 // Width return the width of a character 11 // Break break text, emptying buffers 12 // Spacing prepare to upspace paper 13 // Eject finish printing a page 14 // * Center print a line, centered 15 // * Equation print an equation line 16 // Routines marked * are not external. 17 18 // Copyright (c) 1974 by Massachusetts Institute of Technology and Honeywell Information Systems, Inc. 19 20 // General permission is granted to copy and use this program, but not to sell it, provided that the above 21 // copyright statement is given. Contact Information Processing Services, MIT, for further information. 22 // Please contact R F Mabee at MIT for information on this program and versions for other machines. 23 24 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 } 24 // Declarations for ROFF. 25 26 external 27 $( HyphenateWord = "hyphenate_word_" $) 28 29 // Text is called after a line of text has been read into 30 // Rawchar[1] ... Rawchar[Nr] 31 // It arranges to print the text, as required. 32 33 let Text () be 34 { if Nr = 0 do { Break (); Spacing (); Newline (1); return } // Blank line produces break and blank output line. 35 if Rawchar[1] = '*s' do Break () // Line indented is automatic break. 36 if Eq > 0 do { Equation (); return } // Print an equation. 37 for i = 1 to Nr do Char[Nc + i] := Rawchar[i] // Move text to output buffer. 38 Nc := Nc + Nr 39 if Ce>0 do { Center (); return } // Center a line. 40 unless Fi do { Break (); return } // Fill. 41 42 // Nothing special is happening, so do the work. 43 44 Fill () // Loops while enough text to fill line. 45 46 // Not enough to fill line, prepare for next to be concatenated. 47 while Nc > 0 & Char!Nc = '*s' do Nc := Nc - 1 48 if Nc > 0 do 49 $( let x, y = Char!(Nc - 1), Char!Nc 50 if y = '.' | y = ':' | y = ';' | y = '!' | y = '?' 51 | (y = '"' | y = ')') & (x = '.' | x = '!' | x = '?') do 52 $( Nc := Nc + 1 // Two spaces after period, etc. 53 Char!Nc := '*s' 54 $) 55 Nc := Nc + 1 // And anyway one. 56 Char!Nc := '*s' 57 $) 58 } 59 60 and Fill () be // Routine to print out as much as will fit on one line. 61 $( if Nc < Ll - Un return // Not enough to possibly fill line. 62 63 let Ne = 0 // Elements (character positions) so far. 64 let Nc1, Ne1 = 0, 0 // Characters and elements at previous gap. 65 let Nco = 0 // Characters in undented part. 66 67 let Usable = Ll - Un // Remaining elements on line. 68 and Undent = In - Un // Elements at left exempt from adjusting. 69 70 Char!(Nc + 1) := '*s' 71 for i = 1 to Nc + 1 do 72 $( test Char!i = '*s' 73 then $( if Ne le Usable | Ne1 = 0 do Nc1, Ne1 := i, Ne 74 if Ne ge Usable do 75 $( unless Hyphenating & Ne > Usable break 76 let x = TryToHyphenate (Nc1, i, Usable - Ne1) 77 while Nc1 < x do 78 $( Ne1 := Ne1 + Width (Char!Nc1) 79 Nc1 := Nc1 + 1 80 $) 81 break 82 $) 83 while i le Nc do 84 $( Ne := Ne + 1 // Width ('*s') 85 unless Char!(i + 1) = '*s' break 86 i := i + 1 87 $) 88 $) 89 or Ne := Ne + Width (Char!i) 90 91 if Nco = 0 & Ne ge Undent do Nco := i + 1 92 $) 93 if Ne < Usable return 94 95 // Now print a line. 96 Spacing () 97 if Print | Ft do 98 $( PrinterIndent () 99 Blank (Un) // Leading blanks for indent. 100 test Ad & Ne1 < Usable 101 then test Undent = 0 102 then Adjust (1, Nc1 - 1, Usable - Ne1) 103 or $( PadLeft := false 104 if Nco = 0 | Nco > Nc1 do Nco := Nc1 105 for i = 1 to Nco - 1 do WriteChar (Char!i) 106 Adjust (Nco, Nc1 - 1, Usable - Ne1) 107 $) 108 or for i = 1 to Nc1 - 1 do WriteChar (Char!i) 109 $) 110 Newline (1) 111 112 // Now move unprinted stuff in Char to the left. 113 while Char!(Nc1 + 1) = '*s' & Nc1 < Nc do Nc1 := Nc1 + 1 114 Nc := Nc - Nc1 115 if Nc < 0 do Nc := 0 116 for i = 1 to Nc do Char!i := Char!(Nc1 + i) 117 Un := In 118 Fill () // Print more if possible. 119 $) 120 121 122 // This routine attempts to break a word across lines. 123 // It calls a user-supplied hyphenation procedure to determine 124 // where and whether the word can be broken. 125 // It moves text around in Char to insert a hyphen, 126 // and returns the offset to the new breaking place. 127 128 and TryToHyphenate (Begin, End, Space) = valof 129 $( while Char!Begin = '*s' & Begin le Nc do Begin, Space := Begin + 1, Space - 1 130 let Len = End - Begin 131 if Space < 3 | Len < 4 resultis 0 132 let v, w = vec Maxline, vec Maxline / 4 133 for i = 1 to Len do v!i := Char!(Begin + i - 1) 134 v!0 := Len 135 Packstring (v, w) 136 let h = 0 137 call HyphenateWord (w string, lv Space, lv h) 138 if h le 0 | h ge Len resultis 0 139 for i = Nc + 1 to Begin + h by -1 do Char!(i + 2) := Char!i 140 Char!(Begin + h), Char!(Begin + h + 1) := '-', '*s' 141 Nc := Nc + 2 142 resultis Begin + h + 1 143 $) 144 145 146 // This routine prints a line, with right-adjustment. It alternates 147 // between putting extra blanks on the right and on the left. 148 // It operates on the text between Begin and End in Char. 149 // Pad is the number of spaces which must be inserted into the line. 150 151 and Adjust (Begin, End, Pad) be 152 $( let Gaps = 0 153 // Find out how many gaps there are with which to stretch line. 154 for i = Begin to End if Char!i = '*s' do 155 $( if i > Begin do Gaps := Gaps + 1 156 while Char!(i + 1) = '*s' & i < End do i := i + 1 157 $) 158 let s, k = 0, -1 159 unless Gaps = 0 do 160 $( s := Pad / Gaps 161 k := Pad - s * Gaps 162 $) 163 164 for i = Begin to End do 165 { WriteChar ( Char[i] ) // Print next character. 166 if Char[i + 1] = '*s' & Char[i] ne '*s' & i < End do // We have just encountered a gap. 167 { Blank (s) // Most of the space required. 168 test PadLeft // Where to put the extra space? 169 then if k > 0 do { WriteChar ('*s'); k := k - 1 } 170 else test k < Gaps then k := k + 1 or WriteChar ('*s') 171 } 172 } 173 PadLeft := not PadLeft 174 $) 175 176 177 and Width (Char) = // How many print positions does Char take? 178 $8040 le Conv!Char le $8176 -* 1, // Most characters take 1. 179 Conv!Char = '*b' -* -1, // Backspace takes -1. 180 0 // Anything else takes 0. 181 182 183 // Break in the text, so print out anything already read. 184 185 and Break () be 186 { if Fi do Fill () 187 while Nc > 0 & Char!Nc = '*s' do Nc := Nc - 1 188 if Nc > 0 do 189 $( Spacing () // Do we need some upspacing? 190 if Print | Ft do 191 $( PrinterIndent () 192 Blank (Un) // Leading blanks, for indented lines. 193 for i = 1 to Nc do WriteChar ( Char[i] ) // Print the line. 194 $) 195 Newline (1) // and upspace. 196 Un := In // Back to the usual indenting. 197 $) 198 Nc := 0 // Nothing more to print. 199 } 200 201 202 // This routine is called just before any up-spacing. It does 203 // two things for us: 204 // 1. It takes care of double spacing. 205 // 2. If we are about to complete a page, it does head 206 // and foot printing, and such. 207 208 and Spacing () be 209 { if Nl > 0 do // Have we printed yet on this page? 210 $( Newline (MinI (Ms - 1, LinesLeft + Fl)) 211 if LinesLeft ge Ms logor Ft logor Flp do 212 $( Flp := false // Clear switch indicating footnote reference. 213 return 214 $) 215 Eject () // Close to bottom, so to work... 216 $) 217 218 if Ft return 219 220 if Waitsw & Print do $( Wait (); Waitsw := Stopsw $) 221 222 OddPage := Np rem 2 ne 0 223 224 // Skip lines above the header. 225 if Printersw do Nl := Nl + 3 // Defect in printer DIM - can't use first three lines on page. 226 Newline (Ma1 - Nl) 227 for i = 1 to Maxheads do Title ((OddPage -> Oh, Eh)!i) 228 229 Newline (Ma2) // Space below the header. 230 if LinesLeft + Fl le 0 do LinesLeft := 1 - Fl // Make sure at least some text appears on page. 231 232 if Pi = 0 return // No lines waiting for picture. 233 // Now print space required for pictures to be drawn. 234 if Pi ge LinesLeft do 235 $( Newline (LinesLeft + Fl) 236 if Pi > Pl * 10 do Pi := Pi rem (Pl * 10) 237 Pi := Pi - Pl 238 Flp := false 239 Spacing () 240 return 241 $) 242 Newline (Pi) 243 Pi := 0 244 } 245 246 and Eject () be // Eject paper, first printing footer and footnotes. 247 { if Ft return // Can happen. 248 unless Fl = 0 do PrintFootnotes () // If there are footnotes to print do it now. 249 if Nl = 0 return // Page empty, don't print footers or count page. 250 Newline (NoPaging -> Ma3, Pl - Nl - Ma4 - (OddPage -> Of, Ef)!0) // Skip down to footer. 251 for i = Maxheads to 1 by -1 do Title ((OddPage -> Of, Ef)!i) 252 test Printersw & ^ NoPaging 253 then for i = 1 to MultiplePagecount do WriteChar ('*f') 254 or Newline (NoPaging -> Ma4, Pl - Nl) 255 Nl := 0 256 LinesLeft := Pl // Soon reset by Spacing. 257 if Fr do Foot := 1 // Reset footnote counter if required. 258 Np := NNp; NNp := NNp + 1 259 Print := Fp le Np le Lp & Passes le 1 260 } 261 262 and Center () be // Print current line, centered. 263 { let Ne = 0 264 for i = 1 to Nc do Ne := Ne+Width (Char[i]) 265 Spacing () 266 PrinterIndent () 267 Blank ( (Ll-In-Ne)/2 + In) 268 for i = 1 to Nc do WriteChar (Char[i]) 269 Newline (1) 270 Nc := 0 271 Ce := Ce - 1 272 } 273 274 // The next routine prints a line as an equation. An 275 // equation is like a title, and is of the form 276 // 'aaa'bbb'ccc' 277 // (where ' is the first non-blank character on the line). 278 // aaa is printed at the left margin, ccc at the right and bbb centered. 279 280 and Equation () be 281 { Spacing () 282 Nrx := 1 283 let v = vec Maxline 284 Title (Readhead (v)) 285 Eq := Eq - 1 286 } CAE time 4.5, 120 source lines per second. cross reference table Ad runoff_head: 130, runoff_mr3: 100 Adjust runoff_mr3: 102, 106, 151 Again runoff_head: 131 Begin runoff_mr3: 128, 129, 129, 129, 129, 130, 133, 139, 140, 140, 142, 151, 154, 155, 164 Blank runoff_head: 35, runoff_mr3: 99, 167, 192, 267 Break runoff_head: 36, runoff_mr3: 34, 35, 40, 185 ByteBits runoff_head: 243 Ce runoff_head: 132, runoff_mr3: 39, 271, 271 Center runoff_mr3: 39, 262 Char runoff_head: 133, runoff_mr3: 37, 47, 49, 49, 53, 56, 70, 72, 78, 85, 89, 105, 108, 113, 116, 116, 129, 133, 139, 139, 140, 140, 154, 156, 165, 166, 166, 177, 178, 179, 187, 193, 264, 268 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, runoff_mr3: 178, 179 ConvertNtoS runoff_head: 19 Device runoff_head: 139 DeviceTable runoff_head: 140 Ef runoff_head: 141, runoff_mr3: 250, 251 Eh runoff_head: 142, runoff_mr3: 227 Eject runoff_head: 47, runoff_mr3: 215, 246 End runoff_mr3: 128, 130, 151, 154, 156, 164, 166 Eq runoff_head: 143, runoff_mr3: 36, 285, 285 Eqcnt runoff_head: 144 Equation runoff_mr3: 36, 280 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, runoff_mr3: 40, 186 FileName runoff_head: 154 Filesw runoff_head: 155 Fill runoff_mr3: 44, 60, 118, 186 FillTrTable runoff_head: 50 Findent runoff_head: 157 FindInput runoff_head: 51 Fl runoff_head: 158, runoff_mr3: 210, 230, 230, 235, 248 Flp runoff_head: 159, runoff_mr3: 211, 212, 238 Foot runoff_head: 160, runoff_mr3: 257 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, runoff_mr3: 259 Fr runoff_head: 167, runoff_mr3: 257 Freeheads runoff_head: 55 Freevec runoff_head: 21 From runoff_head: 168 Ft runoff_head: 169, runoff_mr3: 97, 190, 211, 218, 247 Fth runoff_head: 170 Fundent runoff_head: 171 Gaps runoff_mr3: 152, 155, 155, 159, 160, 161, 170 Gethead runoff_head: 57 GetString runoff_head: 59 h runoff_mr3: 136, 137, 138, 138, 139, 140, 140, 142 HyphenateWord runoff_mr3: 27, 137 Hyphenating runoff_head: 172, runoff_mr3: 75 i runoff_mr3: 37, 37, 37, 71, 72, 73, 76, 83, 85, 86, 86, 89, 91, 105, 105, 108, 108, 116, 116, 116, 133, 133, 133, 139, 139, 139, 154, 154, 155, 156, 156, 156, 156, 164, 165, 166, 166, 166, 193, 193, 227, 227, 251, 251, 253, 264, 264, 268, 268 In runoff_head: 173, runoff_mr3: 68, 117, 196, 267, 267 InitializeSymbolTree runoff_head: 61 InputFileName runoff_head: 175 InputLines runoff_head: 176 InputStack runoff_head: 177 InsertFile runoff_head: 62 JumpLine runoff_head: 178 k runoff_mr3: 158, 161, 169, 169, 169, 170, 170, 170 Len runoff_mr3: 130, 131, 133, 134, 138 LinesLeft runoff_head: 179, runoff_mr3: 210, 211, 230, 230, 234, 235, 256 LIno runoff_head: 180 Ll runoff_head: 181, runoff_mr3: 61, 67, 267 LL_ runoff_head: 249 Lp runoff_head: 182, runoff_mr3: 259 Ma1 runoff_head: 184, runoff_mr3: 226 MA1_ runoff_head: 251 Ma2 runoff_head: 185, runoff_mr3: 229 MA2_ runoff_head: 252 Ma3 runoff_head: 186, runoff_mr3: 250 MA3_ runoff_head: 253 Ma4 runoff_head: 187, runoff_mr3: 250, 254 MA4_ runoff_head: 254 MaxDepth runoff_head: 247 Maxheads runoff_head: 246, runoff_mr3: 227, 251 MaxI runoff_head: 23 Maxline runoff_head: 245, runoff_mr3: 132, 132, 283 MinI runoff_head: 22, runoff_mr3: 210 Ms runoff_head: 188, runoff_mr3: 210, 211 MultiplePagecount runoff_head: 189, runoff_mr3: 253 Nc runoff_head: 190, runoff_mr3: 37, 38, 38, 47, 47, 47, 47, 48, 49, 49, 52, 52, 53, 55, 55, 56, 61, 70, 71, 83, 113, 114, 114, 115, 115, 116, 129, 139, 141, 141, 187, 187, 187, 187, 188, 193, 198, 264, 268, 270 Nc1 runoff_mr3: 64, 73, 76, 77, 78, 79, 79, 102, 104, 104, 106, 108, 113, 113, 113, 113, 114, 116 Nco runoff_mr3: 65, 91, 91, 104, 104, 104, 105, 106 Ne runoff_mr3: 63, 73, 73, 74, 75, 84, 84, 89, 89, 91, 93, 263, 264, 264, 267 Ne1 runoff_mr3: 64, 73, 73, 76, 78, 78, 100, 102, 106 Need runoff_head: 64 NeedSS runoff_head: 65 NestingDepth runoff_head: 191 Newline runoff_head: 66, runoff_mr3: 34, 110, 195, 210, 226, 229, 235, 242, 250, 254, 269 Newvec runoff_head: 20 Nl runoff_head: 193, runoff_mr3: 209, 225, 225, 226, 249, 250, 254, 255 NNp runoff_head: 194, runoff_mr3: 258, 258, 258 NoControl runoff_head: 195 NoFill runoff_head: 196 NoFtNo runoff_head: 197 NoPaging runoff_head: 198, runoff_mr3: 250, 252, 254 Np runoff_head: 199, runoff_mr3: 222, 258, 259 Nr runoff_head: 200, runoff_mr3: 34, 37, 38 Nrx runoff_head: 202, runoff_mr3: 282 Nx_close runoff_head: 68 Nx_open runoff_head: 69 Nx_reset runoff_head: 70 OddPage runoff_head: 203, runoff_mr3: 222, 227, 250, 251 Of runoff_head: 204, runoff_mr3: 250, 251 Oh runoff_head: 205, runoff_mr3: 227 Output runoff_head: 206 Packstring runoff_head: 14, runoff_mr3: 135 Pad runoff_mr3: 151, 160, 161 PadLeft runoff_head: 207, runoff_mr3: 103, 168, 173, 173 Parameter runoff_head: 208 Passes runoff_head: 209, runoff_mr3: 259 Pi runoff_head: 211, runoff_mr3: 232, 234, 236, 236, 236, 237, 237, 242, 243 Pl runoff_head: 212, runoff_mr3: 236, 236, 237, 250, 254, 256 PL_ runoff_head: 250 Print runoff_head: 213, runoff_mr3: 97, 190, 220, 259 PrinterIndent runoff_head: 73, runoff_mr3: 98, 191, 266 Printersw runoff_head: 214, runoff_mr3: 225, 252 PrintFootnotes runoff_head: 74, runoff_mr3: 248 PrintLineNumbers runoff_head: 215 Rawchar runoff_head: 216, runoff_mr3: 35, 37 ReadExp runoff_head: 77 Readhead runoff_head: 76, runoff_mr3: 284 Readline runoff_head: 75 ReadName runoff_head: 78 ReadNumber runoff_head: 79 ReadParam runoff_head: 80 ReadString runoff_head: 81 Report runoff_head: 82 Roff runoff_head: 83 RoffProcess runoff_head: 84 Roman runoff_head: 217 s runoff_mr3: 158, 160, 161, 167 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 Space runoff_mr3: 128, 129, 129, 131, 137 Spacing runoff_head: 101, runoff_mr3: 34, 96, 189, 208, 239, 265, 281 Spec_char runoff_head: 221 Start runoff_head: 222 Stopsw runoff_head: 223, runoff_mr3: 220 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, runoff_mr3: 33 TextRef runoff_head: 226 TimeNow runoff_head: 227 Title runoff_head: 112, runoff_mr3: 227, 251, 284 To runoff_head: 229 TreeRoot runoff_head: 231 TrTable runoff_head: 230 TryToHyphenate runoff_mr3: 76, 128 Typeout runoff_head: 115 Un runoff_head: 232, runoff_mr3: 61, 67, 68, 99, 117, 192, 196 Undent runoff_mr3: 68, 91, 101 Unpackstring runoff_head: 15 UpdateSymbol runoff_head: 117 Usable runoff_mr3: 67, 73, 74, 75, 76, 93, 100, 102, 106 Use_ref runoff_head: 118 v runoff_mr3: 132, 133, 134, 135, 283, 284 w runoff_mr3: 132, 135, 137 Wait runoff_head: 119, runoff_mr3: 220 Waitsw runoff_head: 233, runoff_mr3: 220, 220 Width runoff_head: 120, runoff_mr3: 78, 89, 177, 264 WrCh runoff_head: 121 WrChInit runoff_head: 122 Writech runoff_head: 16 WriteChar runoff_head: 123, runoff_mr3: 105, 108, 165, 169, 170, 193, 253, 268 WriteN runoff_head: 18 WriteS runoff_head: 17 x runoff_mr3: 49, 51, 51, 51, 76, 77 y runoff_mr3: 49, 50, 50, 50, 50, 50, 51, 51 Trans time 1.7, 783 object words per second. " Begin text of Text aa 000000 000004 124145 zero 4,43109 " Text aa 000001 170164 000000 zero 61556 L1: aa 000002 000000 213000 33 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 700422 620111 eax0 sb|274,x1 aa 000010 777760 360003 anx0 -16,du aa 000011 700025 740100 stx0 sb|21 " end of save sequence aa 000012 600261 234100 34 szn sp|177 " Nr aa 000013 000012 601004 tnz L14 aa 000014 001221 272004 tsbbp L6+2 " Break aa 000015 000006 000000 zero 6 aa 000016 001670 272004 tsbbp L7+2 " Spacing aa 000017 000006 000000 zero 6 aa 000020 000001 236007 ldq 1,dl " 1 aa 000021 700010 756111 stq sb|8,x1 4a 000022 400034 272120 tsbbp lp|L15,* " Newline aa 000023 000006 000001 zero 6,1 aa 000024 000147 710004 tra L13 L14: aa 000025 600303 760100 35 lprpap sp|195 " Rawchar aa 000026 000001 236100 ldq ap|1 aa 000027 000040 116007 cmpq 32,dl " '*s' aa 000030 000003 601004 tnz L16 aa 000031 001204 272004 tsbbp L6+2 " Break aa 000032 000006 000000 zero 6 L16: aa 000033 600162 234100 36 szn sp|114 " Eq aa 000034 000004 604404 tmoz L17 aa 000035 001507 272004 tsbbp L10+2 " Equation aa 000036 000006 000000 zero 6 aa 000037 000134 710004 tra L13 L17: aa 000040 000001 235007 37 lda 1,dl " 1 aa 000041 700002 755111 sta sb|2,x1 " i aa 000042 600261 235100 lda sp|177 " Nr aa 000043 700003 755111 sta sb|3,x1 aa 000044 000011 710004 tra L18 L19: aa 000045 600246 235100 lda sp|166 " Nc aa 000046 700002 075111 ada sb|2,x1 " i aa 000047 700002 722111 lxl2 sb|2,x1 " i aa 000050 600303 762100 lprpbp sp|195 " Rawchar aa 000051 200000 236112 ldq bp|0,x2 aa 000052 600147 761100 lprpab sp|103 " Char aa 000053 100000 756105 stq ab|0,al aa 000054 700002 054111 aos sb|2,x1 " i L18: aa 000055 700002 236111 ldq sb|2,x1 " i aa 000056 700003 116111 cmpq sb|3,x1 aa 000057 777766 604404 tmoz L19 aa 000060 600261 235100 38 lda sp|177 " Nr aa 000061 600246 055100 asa sp|166 " Nc aa 000062 600146 234100 39 szn sp|102 " Ce aa 000063 000004 604404 tmoz L20 aa 000064 001517 272004 tsbbp L9+2 " Center aa 000065 000006 000000 zero 6 aa 000066 000105 710004 tra L13 L20: aa 000067 600175 234100 40 szn sp|125 " Fi aa 000070 000004 601004 tnz L21 aa 000071 001144 272004 tsbbp L6+2 " Break aa 000072 000006 000000 zero 6 aa 000073 000100 710004 tra L13 L21: aa 000074 000107 272004 44 tsbbp L2+2 " Fill aa 000075 000006 000000 zero 6 aa 000076 000003 710004 47 tra L22 L23: aa 000077 000001 335007 lca 1,dl " 1 aa 000100 600246 055100 asa sp|166 " Nc L22: aa 000101 600246 234100 szn sp|166 " Nc aa 000102 000006 604404 tmoz L24 aa 000103 600246 723100 lxl3 sp|166 " Nc aa 000104 600147 763100 lprpbb sp|103 " Char aa 000105 300000 235113 lda bb|0,x3 aa 000106 000040 115007 cmpa 32,dl " '*s' aa 000107 777770 600004 tze L23 L24: aa 000110 600246 234100 48 szn sp|166 " Nc aa 000111 000062 604404 tmoz L25 aa 000112 600246 724100 49 lxl4 sp|166 " Nc aa 000113 600147 765100 lprplb sp|103 " Char aa 000114 500000 236114 ldq lb|0,x4 aa 000115 700003 756111 stq sb|3,x1 " y aa 000116 600246 236100 ldq sp|166 " Nc aa 000117 000001 176007 sbq 1,dl " 1 aa 000120 600147 760100 lprpap sp|103 " Char aa 000121 000000 235106 lda ap|0,ql aa 000122 700002 755111 sta sb|2,x1 " x aa 000123 700003 236111 50 ldq sb|3,x1 " y aa 000124 000056 116007 cmpq 46,dl " '.' aa 000125 000034 600004 tze L27 aa 000126 700003 235111 lda sb|3,x1 " y aa 000127 000072 115007 cmpa 58,dl " ':' aa 000130 000031 600004 tze L27 aa 000131 700003 236111 ldq sb|3,x1 " y aa 000132 000073 116007 cmpq 59,dl " ';' aa 000133 000026 600004 tze L27 aa 000134 700003 235111 lda sb|3,x1 " y aa 000135 000041 115007 cmpa 33,dl " '!' aa 000136 000023 600004 tze L27 aa 000137 700003 236111 ldq sb|3,x1 " y aa 000140 000077 116007 cmpq 63,dl " '?' aa 000141 000020 600004 tze L27 aa 000142 700003 235111 lda sb|3,x1 " y aa 000143 000042 115007 cmpa 34,dl " '"' aa 000144 000004 600004 tze L28 aa 000145 700003 236111 ldq sb|3,x1 " y aa 000146 000051 116007 cmpq 41,dl " ')' aa 000147 000017 601004 tnz L26 L28: aa 000150 700002 235111 lda sb|2,x1 " x aa 000151 000056 115007 cmpa 46,dl " '.' aa 000152 000007 600004 tze L29 aa 000153 700002 236111 ldq sb|2,x1 " x aa 000154 000041 116007 cmpq 33,dl " '!' aa 000155 000004 600004 tze L29 aa 000156 700002 235111 lda sb|2,x1 " x aa 000157 000077 115007 cmpa 63,dl " '?' aa 000160 000006 601004 tnz L26 L29: L27: aa 000161 600246 054100 52 aos sp|166 " Nc aa 000162 000040 236007 53 ldq 32,dl " '*s' aa 000163 600246 725100 lxl5 sp|166 " Nc aa 000164 600147 762100 lprpbp sp|103 " Char aa 000165 200000 756115 stq bp|0,x5 L26: aa 000166 600246 054100 55 aos sp|166 " Nc aa 000167 000040 236007 56 ldq 32,dl " '*s' aa 000170 600246 726100 lxl6 sp|166 " Nc aa 000171 600147 761100 lprpab sp|103 " Char aa 000172 100000 756116 stq ab|0,x6 L25: L13: aa 000173 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000174 200000 121100 sblx1 bp|0 aa 000175 700001 764111 lprplp sb|1,x1 aa 000176 200001 710100 tra bp|1 " end of return sequence " Begin text of Fill aa 000177 000004 106151 zero 4,35945 " Fill aa 000200 154154 000000 zero 55404 L2: aa 000201 000000 213000 60 epaq 0 " set lp to linkage section aa 000202 700026 764161 lprplp sb|22,*au aa 000203 200000 021100 adlx1 bp|0 " BCPL save aa 000204 700000 542111 sprpbp sb|0,x1 aa 000205 700001 544111 sprplp sb|1,x1 aa 000206 700424 620111 eax0 sb|276,x1 aa 000207 777760 360003 anx0 -16,du aa 000210 700025 740100 stx0 sb|21 " end of save sequence aa 000211 600234 236100 61 ldq sp|156 " Ll aa 000212 600325 176100 sbq sp|213 " Un aa 000213 600246 116100 cmpq sp|166 " Nc aa 000214 000337 605404 tpnz L32 aa 000215 700002 450111 63 stz sb|2,x1 " Ne aa 000216 700003 450111 64 stz sb|3,x1 " Nc1 aa 000217 700004 450111 stz sb|4,x1 " Ne1 aa 000220 700005 450111 65 stz sb|5,x1 " Nco aa 000221 600223 236100 68 ldq sp|147 " In aa 000222 600325 176100 sbq sp|213 " Un aa 000223 700007 756111 stq sb|7,x1 " Undent aa 000224 600234 236100 67 ldq sp|156 " Ll aa 000225 600325 176100 sbq sp|213 " Un aa 000226 700006 756111 stq sb|6,x1 " Usable aa 000227 600246 236100 70 ldq sp|166 " Nc aa 000230 000001 076007 adq 1,dl " 1 aa 000231 000040 235007 lda 32,dl " '*s' aa 000232 600147 763100 lprpbb sp|103 " Char aa 000233 300000 755106 sta bb|0,ql aa 000234 000001 236007 71 ldq 1,dl " 1 aa 000235 700010 756111 stq sb|8,x1 " i aa 000236 600246 236100 ldq sp|166 " Nc aa 000237 000001 076007 adq 1,dl " 1 aa 000240 700011 756111 stq sb|9,x1 aa 000241 000113 710004 tra L33 L34: aa 000242 700010 722111 72 lxl2 sb|8,x1 " i aa 000243 600147 765100 lprplb sp|103 " Char aa 000244 500000 236112 ldq lb|0,x2 aa 000245 000040 116007 cmpq 32,dl " '*s' aa 000246 000066 601004 tnz L35 aa 000247 700002 235111 73 lda sb|2,x1 " Ne aa 000250 700006 115111 cmpa sb|6,x1 " Usable aa 000251 000003 604404 tmoz L38 aa 000252 700004 234111 szn sb|4,x1 " Ne1 aa 000253 000005 601004 tnz L37 L38: aa 000254 700010 236111 ldq sb|8,x1 " i aa 000255 700003 756111 stq sb|3,x1 " Nc1 aa 000256 700002 236111 ldq sb|2,x1 " Ne aa 000257 700004 756111 stq sb|4,x1 " Ne1 L37: aa 000260 700002 236111 74 ldq sb|2,x1 " Ne aa 000261 700006 116111 cmpq sb|6,x1 " Usable aa 000262 000035 604004 tmi L39 aa 000263 600222 234100 75 szn sp|146 " Hyphenating aa 000264 000073 600004 tze L40 aa 000265 700002 235111 lda sb|2,x1 " Ne aa 000266 700006 115111 cmpa sb|6,x1 " Usable aa 000267 000070 604404 tmoz L40 aa 000270 700003 236111 76 ldq sb|3,x1 " Nc1 aa 000271 700020 756111 stq sb|16,x1 aa 000272 700010 236111 ldq sb|8,x1 " i aa 000273 700021 756111 stq sb|17,x1 aa 000274 700006 236111 ldq sb|6,x1 " Usable aa 000275 700004 176111 sbq sb|4,x1 " Ne1 aa 000276 700022 756111 stq sb|18,x1 aa 000277 000266 272004 tsbbp L3+2 " TryToHyphenate aa 000300 000016 000003 zero 14,3 aa 000301 700012 756111 stq sb|10,x1 " x aa 000302 000011 710004 77 tra L41 L42: aa 000303 700003 723111 78 lxl3 sb|3,x1 " Nc1 aa 000304 600147 760100 lprpap sp|103 " Char aa 000305 000000 236113 ldq ap|0,x3 aa 000306 700020 756111 stq sb|16,x1 aa 000307 000657 272004 tsbbp L5+2 " Width aa 000310 000016 000001 zero 14,1 aa 000311 700004 056111 asq sb|4,x1 " Ne1 aa 000312 700003 054111 79 aos sb|3,x1 " Nc1 L41: aa 000313 700003 236111 ldq sb|3,x1 " Nc1 aa 000314 700012 116111 cmpq sb|10,x1 " x aa 000315 777766 604004 tmi L42 aa 000316 000041 710004 81 tra L40 L39: aa 000317 000011 710004 83 tra L43 L44: aa 000320 700002 054111 84 aos sb|2,x1 " Ne aa 000321 700010 235111 85 lda sb|8,x1 " i aa 000322 000001 075007 ada 1,dl " 1 aa 000323 600147 762100 lprpbp sp|103 " Char aa 000324 200000 236105 ldq bp|0,al aa 000325 000040 116007 cmpq 32,dl " '*s' aa 000326 000005 601004 tnz L45 aa 000327 700010 054111 86 aos sb|8,x1 " i L43: aa 000330 700010 235111 lda sb|8,x1 " i aa 000331 600246 115100 cmpa sp|166 " Nc aa 000332 777766 604404 tmoz L44 L45: aa 000333 000010 710004 tra L36 L35: aa 000334 700010 724111 89 lxl4 sb|8,x1 " i aa 000335 600147 761100 lprpab sp|103 " Char aa 000336 100000 236114 ldq ab|0,x4 aa 000337 700020 756111 stq sb|16,x1 aa 000340 000626 272004 tsbbp L5+2 " Width aa 000341 000016 000001 zero 14,1 aa 000342 700002 056111 asq sb|2,x1 " Ne L36: aa 000343 700005 234111 91 szn sb|5,x1 " Nco aa 000344 000007 601004 tnz L46 aa 000345 700002 236111 ldq sb|2,x1 " Ne aa 000346 700007 116111 cmpq sb|7,x1 " Undent aa 000347 000004 604004 tmi L46 aa 000350 700010 235111 lda sb|8,x1 " i aa 000351 000001 075007 ada 1,dl " 1 aa 000352 700005 755111 sta sb|5,x1 " Nco L46: aa 000353 700010 054111 aos sb|8,x1 " i L33: aa 000354 700010 235111 lda sb|8,x1 " i aa 000355 700011 115111 cmpa sb|9,x1 aa 000356 777664 604404 tmoz L34 L40: aa 000357 700002 236111 93 ldq sb|2,x1 " Ne aa 000360 700006 116111 cmpq sb|6,x1 " Usable aa 000361 000172 604004 tmi L32 aa 000362 001324 272004 96 tsbbp L7+2 " Spacing aa 000363 000016 000000 zero 14 aa 000364 600300 234100 97 szn sp|192 " Print aa 000365 000003 601004 tnz L48 aa 000366 600217 234100 szn sp|143 " Ft aa 000367 000114 600004 tze L47 L48: 4a 000370 400032 272120 98 tsbbp lp|L49,* " PrinterIndent aa 000371 000016 000000 zero 14 aa 000372 600325 235100 99 lda sp|213 " Un aa 000373 700020 755111 sta sb|16,x1 4a 000374 400030 272120 tsbbp lp|L50,* " Blank aa 000375 000016 000001 zero 14,1 aa 000376 600144 234100 100 szn sp|100 " Ad aa 000377 000064 600004 tze L51 aa 000400 700004 235111 lda sb|4,x1 " Ne1 aa 000401 700006 115111 cmpa sb|6,x1 " Usable aa 000402 000061 605004 tpl L51 aa 000403 700007 234111 101 szn sb|7,x1 " Undent aa 000404 000014 601004 tnz L53 aa 000405 000001 236007 102 ldq 1,dl " 1 aa 000406 700020 756111 stq sb|16,x1 aa 000407 700003 236111 ldq sb|3,x1 " Nc1 aa 000410 000001 176007 sbq 1,dl " 1 aa 000411 700021 756111 stq sb|17,x1 aa 000412 700006 236111 ldq sb|6,x1 " Usable aa 000413 700004 176111 sbq sb|4,x1 " Ne1 aa 000414 700022 756111 stq sb|18,x1 aa 000415 000371 272004 tsbbp L4+2 " Adjust aa 000416 000016 000003 zero 14,3 aa 000417 000043 710004 tra L54 L53: aa 000420 600271 450100 103 stz sp|185 " PadLeft aa 000421 700005 234111 104 szn sb|5,x1 " Nco aa 000422 000004 600004 tze L56 aa 000423 700005 236111 ldq sb|5,x1 " Nco aa 000424 700003 116111 cmpq sb|3,x1 " Nc1 aa 000425 000003 604404 tmoz L55 L56: aa 000426 700003 235111 lda sb|3,x1 " Nc1 aa 000427 700005 755111 sta sb|5,x1 " Nco L55: aa 000430 000001 235007 105 lda 1,dl " 1 aa 000431 700011 755111 sta sb|9,x1 " i aa 000432 700005 235111 lda sb|5,x1 " Nco aa 000433 000001 175007 sba 1,dl " 1 aa 000434 700010 755111 sta sb|8,x1 aa 000435 000010 710004 tra L57 L58: aa 000436 700011 725111 lxl5 sb|9,x1 " i aa 000437 600147 763100 lprpbb sp|103 " Char aa 000440 300000 235115 lda bb|0,x5 aa 000441 700020 755111 sta sb|16,x1 4a 000442 400026 272120 tsbbp lp|L59,* " WriteChar aa 000443 000016 000001 zero 14,1 aa 000444 700011 054111 aos sb|9,x1 " i L57: aa 000445 700011 235111 lda sb|9,x1 " i aa 000446 700010 115111 cmpa sb|8,x1 aa 000447 777767 604404 tmoz L58 aa 000450 700005 236111 106 ldq sb|5,x1 " Nco aa 000451 700020 756111 stq sb|16,x1 aa 000452 700003 236111 ldq sb|3,x1 " Nc1 aa 000453 000001 176007 sbq 1,dl " 1 aa 000454 700021 756111 stq sb|17,x1 aa 000455 700006 236111 ldq sb|6,x1 " Usable aa 000456 700004 176111 sbq sb|4,x1 " Ne1 aa 000457 700022 756111 stq sb|18,x1 aa 000460 000326 272004 tsbbp L4+2 " Adjust aa 000461 000016 000003 zero 14,3 L54: aa 000462 000021 710004 tra L52 L51: aa 000463 000001 236007 108 ldq 1,dl " 1 aa 000464 700010 756111 stq sb|8,x1 " i aa 000465 700003 236111 ldq sb|3,x1 " Nc1 aa 000466 000001 176007 sbq 1,dl " 1 aa 000467 700011 756111 stq sb|9,x1 aa 000470 000010 710004 tra L60 L61: aa 000471 700010 726111 lxl6 sb|8,x1 " i aa 000472 600147 765100 lprplb sp|103 " Char aa 000473 500000 236116 ldq lb|0,x6 aa 000474 700020 756111 stq sb|16,x1 4a 000475 400026 272120 tsbbp lp|L59,* " WriteChar aa 000476 000016 000001 zero 14,1 aa 000477 700010 054111 aos sb|8,x1 " i L60: aa 000500 700010 236111 ldq sb|8,x1 " i aa 000501 700011 116111 cmpq sb|9,x1 aa 000502 777767 604404 tmoz L61 L52: L47: aa 000503 000001 235007 110 lda 1,dl " 1 aa 000504 700020 755111 sta sb|16,x1 4a 000505 400034 272120 tsbbp lp|L15,* " Newline aa 000506 000016 000001 zero 14,1 aa 000507 000002 710004 113 tra L62 L63: aa 000510 700003 054111 aos sb|3,x1 " Nc1 L62: aa 000511 700003 235111 lda sb|3,x1 " Nc1 aa 000512 000001 075007 ada 1,dl " 1 aa 000513 600147 760100 lprpap sp|103 " Char aa 000514 000000 236105 ldq ap|0,al aa 000515 000040 116007 cmpq 32,dl " '*s' aa 000516 000004 601004 tnz L64 aa 000517 700003 235111 lda sb|3,x1 " Nc1 aa 000520 600246 115100 cmpa sp|166 " Nc aa 000521 777767 604004 tmi L63 L64: aa 000522 700003 336111 114 lcq sb|3,x1 " Nc1 aa 000523 600246 056100 asq sp|166 " Nc aa 000524 600246 234100 115 szn sp|166 " Nc aa 000525 000002 605004 tpl L65 aa 000526 600246 450100 stz sp|166 " Nc L65: aa 000527 000001 236007 116 ldq 1,dl " 1 aa 000530 700011 756111 stq sb|9,x1 " i aa 000531 600246 236100 ldq sp|166 " Nc aa 000532 700010 756111 stq sb|8,x1 aa 000533 000011 710004 tra L66 L67: aa 000534 700003 236111 ldq sb|3,x1 " Nc1 aa 000535 700011 076111 adq sb|9,x1 " i aa 000536 600147 762100 lprpbp sp|103 " Char aa 000537 200000 235106 lda bp|0,ql aa 000540 700011 722111 lxl2 sb|9,x1 " i aa 000541 600147 761100 lprpab sp|103 " Char aa 000542 100000 755112 sta ab|0,x2 aa 000543 700011 054111 aos sb|9,x1 " i L66: aa 000544 700011 236111 ldq sb|9,x1 " i aa 000545 700010 116111 cmpq sb|8,x1 aa 000546 777766 604404 tmoz L67 aa 000547 600223 235100 117 lda sp|147 " In aa 000550 600325 755100 sta sp|213 " Un aa 000551 777432 272004 118 tsbbp L2+2 " Fill aa 000552 000016 000000 zero 14 L32: aa 000553 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000554 200000 121100 sblx1 bp|0 aa 000555 700001 764111 lprplp sb|1,x1 aa 000556 200001 710100 tra bp|1 " end of return sequence " Begin text of TryToHyphenate aa 000557 000016 124162 zero 14,43122 " TryToHyphenate aa 000560 171124 157110 zero 62036,56904 aa 000561 171160 150145 zero 62064,53349 aa 000562 156141 164145 zero 56417,59493 L3: aa 000563 000000 213000 128 epaq 0 " set lp to linkage section aa 000564 700026 764161 lprplp sb|22,*au aa 000565 200000 021100 adlx1 bp|0 " BCPL save aa 000566 700000 542111 sprpbp sb|0,x1 aa 000567 700001 544111 sprplp sb|1,x1 aa 000570 701044 620111 eax0 sb|548,x1 aa 000571 777760 360003 anx0 -16,du aa 000572 700025 740100 stx0 sb|21 " end of save sequence aa 000573 000004 710004 129 tra L71 L72: aa 000574 700002 054111 aos sb|2,x1 " Begin aa 000575 000001 335007 lca 1,dl " 1 aa 000576 700004 055111 asa sb|4,x1 " Space L71: aa 000577 700002 723111 lxl3 sb|2,x1 " Begin aa 000600 600147 763100 lprpbb sp|103 " Char aa 000601 300000 235113 lda bb|0,x3 aa 000602 000040 115007 cmpa 32,dl " '*s' aa 000603 000004 601004 tnz L73 aa 000604 700002 236111 ldq sb|2,x1 " Begin aa 000605 600246 116100 cmpq sp|166 " Nc aa 000606 777766 604404 tmoz L72 L73: aa 000607 700003 235111 130 lda sb|3,x1 " End aa 000610 700002 175111 sba sb|2,x1 " Begin aa 000611 700006 755111 sta sb|6,x1 " Len aa 000612 700004 235111 131 lda sb|4,x1 " Space aa 000613 000003 115007 cmpa 3,dl " 3 aa 000614 000004 604004 tmi L75 aa 000615 700006 236111 ldq sb|6,x1 " Len aa 000616 000004 116007 cmpq 4,dl " 4 aa 000617 000003 605004 tpl L74 L75: aa 000620 000000 235007 lda 0,dl " 0 aa 000621 000146 710004 tra L70 L74: aa 000622 700012 371511 132 eaplb sb|10,x1 " a vector aa 000623 700007 545111 sprplb sb|7,x1 " v aa 000624 700634 371511 eaplb sb|412,x1 " a vector aa 000625 700010 545111 sprplb sb|8,x1 " w aa 000626 000001 236007 133 ldq 1,dl " 1 aa 000627 700633 756111 stq sb|411,x1 " i aa 000630 700006 236111 ldq sb|6,x1 " Len aa 000631 700011 756111 stq sb|9,x1 aa 000632 000012 710004 tra L76 L77: aa 000633 700002 236111 ldq sb|2,x1 " Begin aa 000634 700633 076111 adq sb|411,x1 " i aa 000635 000001 176007 sbq 1,dl " 1 aa 000636 600147 765100 lprplb sp|103 " Char aa 000637 500000 235106 lda lb|0,ql aa 000640 700633 724111 lxl4 sb|411,x1 " i aa 000641 700007 760111 lprpap sb|7,x1 " v aa 000642 000000 755114 sta ap|0,x4 aa 000643 700633 054111 aos sb|411,x1 " i L76: aa 000644 700633 236111 ldq sb|411,x1 " i aa 000645 700011 116111 cmpq sb|9,x1 aa 000646 777765 604404 tmoz L77 aa 000647 700006 235111 134 lda sb|6,x1 " Len aa 000650 700007 762111 lprpbp sb|7,x1 " v aa 000651 200000 755100 sta bp|0 aa 000652 700007 235111 135 lda sb|7,x1 " v aa 000653 701010 755111 sta sb|520,x1 aa 000654 700010 235111 lda sb|8,x1 " w aa 000655 701011 755111 sta sb|521,x1 4a 000656 400024 272120 tsbbp lp|L78,* " Packstring aa 000657 001006 000002 zero 518,2 aa 000660 700011 450111 136 stz sb|9,x1 " h aa 000661 000117 237004 137 ldaq L79 " arglist header aa 000662 701006 757111 staq sb|518,x1 " arg count aa 000663 700010 761111 lprpab sb|8,x1 " w aa 000664 000022 725007 lxl5 18,dl aa 000665 100000 503515 abd ab|0,x5 aa 000666 701010 251511 stpab sb|520,x1 aa 000667 100000 235100 lda ab|0 aa 000670 000022 771000 arl 18 aa 000671 524000 275003 ora -88064,du aa 000672 701024 755111 sta sb|532,x1 aa 000673 701024 351511 eapab sb|532,x1 aa 000674 701016 251511 stpab sb|526,x1 aa 000675 700004 353511 eapbb sb|4,x1 " Space aa 000676 701012 253511 stpbb sb|522,x1 aa 000677 000100 353404 eapbb L80 " descriptor aa 000700 701020 253511 stpbb sb|528,x1 aa 000701 700011 371511 eaplb sb|9,x1 " h aa 000702 701014 651511 stplb sb|524,x1 aa 000703 000074 371404 eaplb L80 aa 000704 701022 651511 stplb sb|530,x1 aa 000705 600010 441100 sxl1 sp|8 aa 000706 600030 650100 stplp sp|24 4a 000707 400022 352120 eapbp lp|L81,* " HyphenateWord aa 000710 701006 350111 eapap sb|518,x1 aa 000711 700036 670120 tsblp sb|30,* " Multics call operator aa 000712 600010 721100 lxl1 sp|8 aa 000713 700001 764111 lprplp sb|1,x1 aa 000714 700011 234111 138 szn sb|9,x1 " h aa 000715 000004 604404 tmoz L83 aa 000716 700011 235111 lda sb|9,x1 " h aa 000717 700006 115111 cmpa sb|6,x1 " Len aa 000720 000003 604004 tmi L82 L83: aa 000721 000000 235007 lda 0,dl " 0 aa 000722 000045 710004 tra L70 L82: aa 000723 600246 236100 139 ldq sp|166 " Nc aa 000724 000001 076007 adq 1,dl " 1 aa 000725 700633 756111 stq sb|411,x1 " i aa 000726 700002 236111 ldq sb|2,x1 " Begin aa 000727 700011 076111 adq sb|9,x1 " h aa 000730 701001 756111 stq sb|513,x1 aa 000731 000012 710004 tra L84 L85: aa 000732 700633 236111 ldq sb|411,x1 " i aa 000733 000002 076007 adq 2,dl " 2 aa 000734 700633 726111 lxl6 sb|411,x1 " i aa 000735 600147 760100 lprpap sp|103 " Char aa 000736 000000 235116 lda ap|0,x6 aa 000737 600147 761100 lprpab sp|103 " Char aa 000740 100000 755106 sta ab|0,ql aa 000741 000001 336007 lcq 1,dl aa 000742 700633 056111 asq sb|411,x1 " i L84: aa 000743 700633 236111 ldq sb|411,x1 " i aa 000744 701001 116111 cmpq sb|513,x1 aa 000745 777765 605004 tpl L85 aa 000746 700002 235111 140 lda sb|2,x1 " Begin aa 000747 700011 075111 ada sb|9,x1 " h aa 000750 000055 236007 ldq 45,dl " '-' aa 000751 600147 763100 lprpbb sp|103 " Char aa 000752 300000 756105 stq bb|0,al aa 000753 700002 236111 ldq sb|2,x1 " Begin aa 000754 700011 076111 adq sb|9,x1 " h aa 000755 000001 076007 adq 1,dl " 1 aa 000756 000040 235007 lda 32,dl " '*s' aa 000757 600147 765100 lprplb sp|103 " Char aa 000760 500000 755106 sta lb|0,ql aa 000761 000002 236007 141 ldq 2,dl " 2 aa 000762 600246 056100 asq sp|166 " Nc aa 000763 700002 236111 142 ldq sb|2,x1 " Begin aa 000764 700011 076111 adq sb|9,x1 " h aa 000765 000001 076007 adq 1,dl " 1 aa 000766 000044 777000 llr 36 " exchange A and Q L70: aa 000767 700006 755111 sta sb|6,x1 aa 000770 700006 235111 lda sb|6,x1 aa 000771 000044 777000 llr 36 " exchange A and Q aa 000772 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000773 200000 121100 sblx1 bp|0 aa 000774 700001 764111 lprplp sb|1,x1 aa 000775 200001 710100 tra bp|1 " end of return sequence aa 000776 700005 756111 stq sb|5,x1 " temporary " Literal pool L80: aa 000777 404000 000000 zero -129024 " descriptor L79: aa 001000 000006 000004 zero 6,4 " arglist header aa 001001 000006 000000 zero 6 " Begin text of Adjust aa 001002 000006 101144 zero 6,33380 " Adjust aa 001003 152165 163164 zero 54389,58996 L4: aa 001004 000000 213000 151 epaq 0 " set lp to linkage section aa 001005 700026 764161 lprplp sb|22,*au aa 001006 200000 021100 adlx1 bp|0 " BCPL save aa 001007 700000 542111 sprpbp sb|0,x1 aa 001010 700001 544111 sprplp sb|1,x1 aa 001011 700422 620111 eax0 sb|274,x1 aa 001012 777760 360003 anx0 -16,du aa 001013 700025 740100 stx0 sb|21 " end of save sequence aa 001014 700005 450111 152 stz sb|5,x1 " Gaps aa 001015 700002 236111 154 ldq sb|2,x1 " Begin aa 001016 700006 756111 stq sb|6,x1 " i aa 001017 700003 236111 ldq sb|3,x1 " End aa 001020 700007 756111 stq sb|7,x1 aa 001021 000026 710004 tra L89 L90: aa 001022 700006 722111 lxl2 sb|6,x1 " i aa 001023 600147 762100 lprpbp sp|103 " Char aa 001024 200000 236112 ldq bp|0,x2 aa 001025 000040 116007 cmpq 32,dl " '*s' aa 001026 000020 601004 tnz L91 aa 001027 700006 235111 155 lda sb|6,x1 " i aa 001030 700002 115111 cmpa sb|2,x1 " Begin aa 001031 000002 604404 tmoz L92 aa 001032 700005 054111 aos sb|5,x1 " Gaps L92: aa 001033 000002 710004 156 tra L93 L94: aa 001034 700006 054111 aos sb|6,x1 " i L93: aa 001035 700006 236111 ldq sb|6,x1 " i aa 001036 000001 076007 adq 1,dl " 1 aa 001037 600147 760100 lprpap sp|103 " Char aa 001040 000000 235106 lda ap|0,ql aa 001041 000040 115007 cmpa 32,dl " '*s' aa 001042 000004 601004 tnz L95 aa 001043 700006 236111 ldq sb|6,x1 " i aa 001044 700003 116111 cmpq sb|3,x1 " End aa 001045 777767 604004 tmi L94 L95: L91: aa 001046 700006 054111 aos sb|6,x1 " i L89: aa 001047 700006 235111 lda sb|6,x1 " i aa 001050 700007 115111 cmpa sb|7,x1 aa 001051 777751 604404 tmoz L90 aa 001052 700006 450111 158 stz sb|6,x1 " s aa 001053 000001 336007 lcq 1,dl aa 001054 700007 756111 stq sb|7,x1 " k aa 001055 700005 234111 159 szn sb|5,x1 " Gaps aa 001056 000011 600004 tze L96 aa 001057 700004 236111 160 ldq sb|4,x1 " Pad aa 001060 700005 506111 div sb|5,x1 " Gaps aa 001061 700006 756111 stq sb|6,x1 " s aa 001062 700006 236111 161 ldq sb|6,x1 " s aa 001063 700005 402111 mpy sb|5,x1 " Gaps aa 001064 700004 176111 sbq sb|4,x1 " Pad aa 001065 000000 533007 negl 0,dl aa 001066 700007 756111 stq sb|7,x1 " k L96: aa 001067 700002 236111 164 ldq sb|2,x1 " Begin aa 001070 700010 756111 stq sb|8,x1 " i aa 001071 700003 236111 ldq sb|3,x1 " End aa 001072 700011 756111 stq sb|9,x1 aa 001073 000056 710004 tra L97 L98: aa 001074 700010 723111 165 lxl3 sb|8,x1 " i aa 001075 600147 761100 lprpab sp|103 " Char aa 001076 100000 236113 ldq ab|0,x3 aa 001077 700016 756111 stq sb|14,x1 4a 001100 400026 272120 tsbbp lp|L59,* " WriteChar aa 001101 000014 000001 zero 12,1 aa 001102 700010 236111 166 ldq sb|8,x1 " i aa 001103 000001 076007 adq 1,dl " 1 aa 001104 600147 763100 lprpbb sp|103 " Char aa 001105 300000 235106 lda bb|0,ql aa 001106 000040 115007 cmpa 32,dl " '*s' aa 001107 000041 601004 tnz L99 aa 001110 700010 724111 lxl4 sb|8,x1 " i aa 001111 600147 765100 lprplb sp|103 " Char aa 001112 500000 236114 ldq lb|0,x4 aa 001113 000040 116007 cmpq 32,dl " '*s' aa 001114 000034 600004 tze L99 aa 001115 700010 235111 lda sb|8,x1 " i aa 001116 700003 115111 cmpa sb|3,x1 " End aa 001117 000031 605004 tpl L99 aa 001120 700006 236111 167 ldq sb|6,x1 " s aa 001121 700016 756111 stq sb|14,x1 4a 001122 400030 272120 tsbbp lp|L50,* " Blank aa 001123 000014 000001 zero 12,1 aa 001124 600271 234100 168 szn sp|185 " PadLeft aa 001125 000012 600004 tze L100 aa 001126 700007 234111 169 szn sb|7,x1 " k aa 001127 000007 604404 tmoz L102 aa 001130 000040 236007 ldq 32,dl " '*s' aa 001131 700016 756111 stq sb|14,x1 4a 001132 400026 272120 tsbbp lp|L59,* " WriteChar aa 001133 000014 000001 zero 12,1 aa 001134 000001 336007 lcq 1,dl " 1 aa 001135 700007 056111 asq sb|7,x1 " k L102: aa 001136 000012 710004 tra L101 L100: aa 001137 700007 236111 170 ldq sb|7,x1 " k aa 001140 700005 116111 cmpq sb|5,x1 " Gaps aa 001141 000003 605004 tpl L103 aa 001142 700007 054111 aos sb|7,x1 " k aa 001143 000005 710004 tra L104 L103: aa 001144 000040 235007 lda 32,dl " '*s' aa 001145 700016 755111 sta sb|14,x1 4a 001146 400026 272120 tsbbp lp|L59,* " WriteChar aa 001147 000014 000001 zero 12,1 L104: L101: L99: aa 001150 700010 054111 aos sb|8,x1 " i L97: aa 001151 700010 235111 lda sb|8,x1 " i aa 001152 700011 115111 cmpa sb|9,x1 aa 001153 777721 604404 tmoz L98 aa 001154 000001 336007 173 lcq 1,dl aa 001155 600271 656100 ersq sp|185 " PadLeft L88: aa 001156 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001157 200000 121100 sblx1 bp|0 aa 001160 700001 764111 lprplp sb|1,x1 aa 001161 200001 710100 tra bp|1 " end of return sequence " Begin text of Width aa 001162 000005 127151 zero 5,44649 " Width aa 001163 144164 150000 zero 51316,53248 L5: aa 001164 000000 213000 177 epaq 0 " set lp to linkage section aa 001165 700026 764161 lprplp sb|22,*au aa 001166 200000 021100 adlx1 bp|0 " BCPL save aa 001167 700000 542111 sprpbp sb|0,x1 aa 001170 700001 544111 sprplp sb|1,x1 aa 001171 700417 620111 eax0 sb|271,x1 aa 001172 777760 360003 anx0 -16,du aa 001173 700025 740100 stx0 sb|21 " end of save sequence aa 001174 700002 725111 lxl5 sb|2,x1 " Char aa 001175 600153 762100 lprpbp sp|107 " Conv aa 001176 200000 236115 ldq bp|0,x5 aa 001177 700004 756111 stq sb|4,x1 aa 001200 000040 236007 ldq 32,dl " $8040 aa 001201 700004 116111 cmpq sb|4,x1 aa 001202 000006 605404 tpnz L107 aa 001203 700004 235111 lda sb|4,x1 aa 001204 000176 115007 cmpa 126,dl " $8176 aa 001205 000003 605404 tpnz L107 aa 001206 000001 236007 ldq 1,dl " 1 aa 001207 000013 710004 tra L108 L107: aa 001210 700002 726111 lxl6 sb|2,x1 " Char aa 001211 600153 760100 lprpap sp|107 " Conv aa 001212 000000 235116 lda ap|0,x6 aa 001213 000010 115007 cmpa 8,dl " '*b' aa 001214 000003 601004 tnz L109 aa 001215 000001 336007 lcq 1,dl aa 001216 000002 710004 tra L110 L109: aa 001217 000000 236007 ldq 0,dl " 0 L110: aa 001220 700005 756111 stq sb|5,x1 aa 001221 700005 236111 ldq sb|5,x1 L108: aa 001222 700006 756111 stq sb|6,x1 aa 001223 700006 236111 ldq sb|6,x1 aa 001224 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001225 200000 121100 sblx1 bp|0 aa 001226 700001 764111 lprplp sb|1,x1 aa 001227 200001 710100 tra bp|1 " end of return sequence " Begin text of Break aa 001230 000005 102162 zero 5,33906 " Break aa 001231 145141 153000 zero 51809,54784 aa 001232 700003 756111 185 stq sb|3,x1 " temporary L6: aa 001233 000000 213000 epaq 0 " set lp to linkage section aa 001234 700026 764161 lprplp sb|22,*au aa 001235 200000 021100 adlx1 bp|0 " BCPL save aa 001236 700000 542111 sprpbp sb|0,x1 aa 001237 700001 544111 sprplp sb|1,x1 aa 001240 700422 620111 eax0 sb|274,x1 aa 001241 777760 360003 anx0 -16,du aa 001242 700025 740100 stx0 sb|21 " end of save sequence aa 001243 600175 234100 186 szn sp|125 " Fi aa 001244 000003 600004 tze L114 aa 001245 776736 272004 tsbbp L2+2 " Fill aa 001246 000006 000000 zero 6 L114: aa 001247 000003 710004 187 tra L115 L116: aa 001250 000001 336007 lcq 1,dl " 1 aa 001251 600246 056100 asq sp|166 " Nc L115: aa 001252 600246 234100 szn sp|166 " Nc aa 001253 000006 604404 tmoz L117 aa 001254 600246 722100 lxl2 sp|166 " Nc aa 001255 600147 761100 lprpab sp|103 " Char aa 001256 100000 236112 ldq ab|0,x2 aa 001257 000040 116007 cmpq 32,dl " '*s' aa 001260 777770 600004 tze L116 L117: aa 001261 600246 234100 188 szn sp|166 " Nc aa 001262 000042 604404 tmoz L118 aa 001263 000423 272004 189 tsbbp L7+2 " Spacing aa 001264 000006 000000 zero 6 aa 001265 600300 234100 190 szn sp|192 " Print aa 001266 000003 601004 tnz L120 aa 001267 600217 234100 szn sp|143 " Ft aa 001270 000026 600004 tze L119 L120: 4a 001271 400032 272120 191 tsbbp lp|L49,* " PrinterIndent aa 001272 000006 000000 zero 6 aa 001273 600325 235100 192 lda sp|213 " Un aa 001274 700010 755111 sta sb|8,x1 4a 001275 400030 272120 tsbbp lp|L50,* " Blank aa 001276 000006 000001 zero 6,1 aa 001277 000001 235007 193 lda 1,dl " 1 aa 001300 700002 755111 sta sb|2,x1 " i aa 001301 600246 235100 lda sp|166 " Nc aa 001302 700003 755111 sta sb|3,x1 aa 001303 000010 710004 tra L121 L122: aa 001304 700002 723111 lxl3 sb|2,x1 " i aa 001305 600147 763100 lprpbb sp|103 " Char aa 001306 300000 235113 lda bb|0,x3 aa 001307 700010 755111 sta sb|8,x1 4a 001310 400026 272120 tsbbp lp|L59,* " WriteChar aa 001311 000006 000001 zero 6,1 aa 001312 700002 054111 aos sb|2,x1 " i L121: aa 001313 700002 235111 lda sb|2,x1 " i aa 001314 700003 115111 cmpa sb|3,x1 aa 001315 777767 604404 tmoz L122 L119: aa 001316 000001 236007 195 ldq 1,dl " 1 aa 001317 700010 756111 stq sb|8,x1 4a 001320 400034 272120 tsbbp lp|L15,* " Newline aa 001321 000006 000001 zero 6,1 aa 001322 600223 236100 196 ldq sp|147 " In aa 001323 600325 756100 stq sp|213 " Un L118: aa 001324 600246 450100 198 stz sp|166 " Nc L113: aa 001325 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001326 200000 121100 sblx1 bp|0 aa 001327 700001 764111 lprplp sb|1,x1 aa 001330 200001 710100 tra bp|1 " end of return sequence " Begin text of Eject aa 001331 000005 105152 zero 5,35434 " Eject aa 001332 145143 164000 zero 51811,59392 L8: aa 001333 000000 213000 246 epaq 0 " set lp to linkage section aa 001334 700026 764161 lprplp sb|22,*au aa 001335 200000 021100 adlx1 bp|0 " BCPL save aa 001336 700000 542111 sprpbp sb|0,x1 aa 001337 700001 544111 sprplp sb|1,x1 aa 001340 700422 620111 eax0 sb|274,x1 aa 001341 777760 360003 anx0 -16,du aa 001342 700025 740100 stx0 sb|21 " end of save sequence aa 001343 600217 234100 247 szn sp|143 " Ft aa 001344 000167 601004 tnz L125 aa 001345 600203 234100 248 szn sp|131 " Fl aa 001346 000003 600004 tze L126 4a 001347 400020 272120 tsbbp lp|L127,* " PrintFootnotes aa 001350 000012 000000 zero 10 L126: aa 001351 600252 234100 249 szn sp|170 " Nl aa 001352 000161 600004 tze L125 aa 001353 600257 234100 250 szn sp|175 " NoPaging aa 001354 000003 600004 tze L128 aa 001355 600242 236100 ldq sp|162 " Ma3 aa 001356 000016 710004 tra L129 L128: aa 001357 600265 234100 szn sp|181 " OddPage aa 001360 000003 600004 tze L130 aa 001361 600266 235100 lda sp|182 " Of aa 001362 000002 710004 tra L131 L130: aa 001363 600160 235100 lda sp|112 " Ef L131: aa 001364 700006 755111 sta sb|6,x1 aa 001365 700006 235111 lda sb|6,x1 aa 001366 600277 236100 ldq sp|191 " Pl aa 001367 600252 176100 sbq sp|170 " Nl aa 001370 600243 176100 sbq sp|163 " Ma4 aa 001371 600000 755100 sta sp|0 aa 001372 600000 765100 lprplb sp|0 aa 001373 500000 176100 sbq lb|0 L129: aa 001374 700011 756111 stq sb|9,x1 aa 001375 700011 236111 ldq sb|9,x1 aa 001376 700002 756111 stq sb|2,x1 aa 001377 700002 236111 ldq sb|2,x1 aa 001400 700014 756111 stq sb|12,x1 4a 001401 400034 272120 tsbbp lp|L15,* " Newline aa 001402 000012 000001 zero 10,1 aa 001403 000024 236007 251 ldq 20,dl " Maxheads aa 001404 700002 756111 stq sb|2,x1 " i aa 001405 000023 710004 tra L132 L133: aa 001406 600265 234100 szn sp|181 " OddPage aa 001407 000003 600004 tze L134 aa 001410 600266 236100 ldq sp|182 " Of aa 001411 000002 710004 tra L135 L134: aa 001412 600160 236100 ldq sp|112 " Ef L135: aa 001413 700005 756111 stq sb|5,x1 aa 001414 700005 236111 ldq sb|5,x1 aa 001415 700002 724111 lxl4 sb|2,x1 " i aa 001416 600000 756100 stq sp|0 aa 001417 600000 762100 lprpbp sp|0 aa 001420 200000 235114 lda bp|0,x4 aa 001421 700003 755111 sta sb|3,x1 aa 001422 700003 236111 ldq sb|3,x1 aa 001423 700014 756111 stq sb|12,x1 4a 001424 400016 272120 tsbbp lp|L136,* " Title aa 001425 000012 000001 zero 10,1 aa 001426 000001 336007 lcq 1,dl aa 001427 700002 056111 asq sb|2,x1 " i L132: aa 001430 700002 236111 ldq sb|2,x1 " i aa 001431 000001 116007 cmpq 1,dl " 1 aa 001432 777754 605004 tpl L133 aa 001433 600301 234100 252 szn sp|193 " Printersw aa 001434 000021 600004 tze L137 aa 001435 600257 234100 szn sp|175 " NoPaging aa 001436 000017 601004 tnz L137 aa 001437 000001 235007 253 lda 1,dl " 1 aa 001440 700002 755111 sta sb|2,x1 " i aa 001441 600245 235100 lda sp|165 " MultiplePagecount aa 001442 700003 755111 sta sb|3,x1 aa 001443 000006 710004 tra L139 L140: aa 001444 000014 235007 lda 12,dl " '*f' aa 001445 700014 755111 sta sb|12,x1 4a 001446 400026 272120 tsbbp lp|L59,* " WriteChar aa 001447 000012 000001 zero 10,1 aa 001450 700002 054111 aos sb|2,x1 " i L139: aa 001451 700002 235111 lda sb|2,x1 " i aa 001452 700003 115111 cmpa sb|3,x1 aa 001453 777771 604404 tmoz L140 aa 001454 000017 710004 tra L138 L137: aa 001455 600257 234100 254 szn sp|175 " NoPaging aa 001456 000003 600004 tze L141 aa 001457 600243 236100 ldq sp|163 " Ma4 aa 001460 000004 710004 tra L142 L141: aa 001461 600277 235100 lda sp|191 " Pl aa 001462 600252 175100 sba sp|170 " Nl aa 001463 000044 777000 llr 36 " exchange A and Q L142: aa 001464 700004 756111 stq sb|4,x1 aa 001465 700004 236111 ldq sb|4,x1 aa 001466 700003 756111 stq sb|3,x1 aa 001467 700003 236111 ldq sb|3,x1 aa 001470 700014 756111 stq sb|12,x1 4a 001471 400034 272120 tsbbp lp|L15,* " Newline aa 001472 000012 000001 zero 10,1 L138: aa 001473 600252 450100 255 stz sp|170 " Nl aa 001474 600277 236100 256 ldq sp|191 " Pl aa 001475 600232 756100 stq sp|154 " LinesLeft aa 001476 600215 234100 257 szn sp|141 " Fr aa 001477 000003 600004 tze L143 aa 001500 000001 236007 ldq 1,dl " 1 aa 001501 600205 756100 stq sp|133 " Foot L143: aa 001502 600253 236100 258 ldq sp|171 " NNp aa 001503 600260 756100 stq sp|176 " Np aa 001504 600253 054100 258 aos sp|171 " NNp aa 001505 600273 236100 259 ldq sp|187 " Passes aa 001506 000001 116007 cmpq 1,dl " 1 aa 001507 000003 605404 tpnz L144 aa 001510 000001 335007 lca 1,dl " true aa 001511 000002 710004 tra L145 L144: aa 001512 000000 235007 lda 0,dl " false L145: aa 001513 700002 755111 sta sb|2,x1 aa 001514 700002 235111 lda sb|2,x1 aa 001515 600214 236100 ldq sp|140 " Fp aa 001516 600260 116100 cmpq sp|176 " Np aa 001517 000007 605404 tpnz L146 aa 001520 700003 755111 sta sb|3,x1 " temporary aa 001521 600260 235100 lda sp|176 " Np aa 001522 600235 115100 cmpa sp|157 " Lp aa 001523 000003 605404 tpnz L146 aa 001524 000001 336007 lcq 1,dl " true aa 001525 000002 710004 tra L147 L146: aa 001526 000000 236007 ldq 0,dl " false L147: aa 001527 700005 756111 stq sb|5,x1 aa 001530 700005 236111 ldq sb|5,x1 aa 001531 700003 376111 anq sb|3,x1 aa 001532 600300 756100 stq sp|192 " Print L125: aa 001533 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001534 200000 121100 sblx1 bp|0 aa 001535 700001 764111 lprplp sb|1,x1 aa 001536 200001 710100 tra bp|1 " end of return sequence " Begin text of Equation aa 001537 000010 105161 zero 8,35441 " Equation aa 001540 165141 164151 zero 60001,59497 aa 001541 157156 000000 zero 56942 L10: aa 001542 000000 213000 280 epaq 0 " set lp to linkage section aa 001543 700026 764161 lprplp sb|22,*au aa 001544 200000 021100 adlx1 bp|0 " BCPL save aa 001545 700000 542111 sprpbp sb|0,x1 aa 001546 700001 544111 sprplp sb|1,x1 aa 001547 700650 620111 eax0 sb|424,x1 aa 001550 777760 360003 anx0 -16,du aa 001551 700025 740100 stx0 sb|21 " end of save sequence aa 001552 000134 272004 281 tsbbp L7+2 " Spacing aa 001553 000626 000000 zero 406 aa 001554 000001 236007 282 ldq 1,dl " 1 aa 001555 600264 756100 stq sp|180 " Nrx aa 001556 700004 350111 283 eapap sb|4,x1 " a vector aa 001557 700002 540111 sprpap sb|2,x1 " v aa 001560 700002 236111 284 ldq sb|2,x1 " v aa 001561 700630 756111 stq sb|408,x1 4a 001562 400014 272120 tsbbp lp|L151,* " Readhead aa 001563 000626 000001 zero 406,1 aa 001564 700003 756111 stq sb|3,x1 aa 001565 700003 236111 ldq sb|3,x1 aa 001566 700630 756111 stq sb|408,x1 4a 001567 400016 272120 tsbbp lp|L136,* " Title aa 001570 000626 000001 zero 406,1 aa 001571 000001 336007 285 lcq 1,dl " 1 aa 001572 600162 056100 asq sp|114 " Eq L150: aa 001573 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001574 200000 121100 sblx1 bp|0 aa 001575 700001 764111 lprplp sb|1,x1 aa 001576 200001 710100 tra bp|1 " end of return sequence " Begin text of Center aa 001577 000006 103145 zero 6,34405 " Center aa 001600 156164 145162 zero 56436,51826 L9: aa 001601 000000 213000 262 epaq 0 " set lp to linkage section aa 001602 700026 764161 lprplp sb|22,*au aa 001603 200000 021100 adlx1 bp|0 " BCPL save aa 001604 700000 542111 sprpbp sb|0,x1 aa 001605 700001 544111 sprplp sb|1,x1 aa 001606 700422 620111 eax0 sb|274,x1 aa 001607 777760 360003 anx0 -16,du aa 001610 700025 740100 stx0 sb|21 " end of save sequence aa 001611 700002 450111 263 stz sb|2,x1 " Ne aa 001612 000001 236007 264 ldq 1,dl " 1 aa 001613 700003 756111 stq sb|3,x1 " i aa 001614 600246 236100 ldq sp|166 " Nc aa 001615 700004 756111 stq sb|4,x1 aa 001616 000011 710004 tra L155 L156: aa 001617 700003 725111 lxl5 sb|3,x1 " i aa 001620 600147 760100 lprpap sp|103 " Char aa 001621 000000 236115 ldq ap|0,x5 aa 001622 700012 756111 stq sb|10,x1 aa 001623 777343 272004 tsbbp L5+2 " Width aa 001624 000010 000001 zero 8,1 aa 001625 700002 056111 asq sb|2,x1 " Ne aa 001626 700003 054111 aos sb|3,x1 " i L155: aa 001627 700003 236111 ldq sb|3,x1 " i aa 001630 700004 116111 cmpq sb|4,x1 aa 001631 777766 604404 tmoz L156 aa 001632 000054 272004 265 tsbbp L7+2 " Spacing aa 001633 000010 000000 zero 8 4a 001634 400032 272120 266 tsbbp lp|L49,* " PrinterIndent aa 001635 000010 000000 zero 8 aa 001636 600234 235100 267 lda sp|156 " Ll aa 001637 600223 175100 sba sp|147 " In aa 001640 700002 175111 sba sb|2,x1 " Ne aa 001641 000044 777000 llr 36 " exchange A and Q aa 001642 000002 506007 div 2,dl " 2 aa 001643 600223 076100 adq sp|147 " In aa 001644 700012 756111 stq sb|10,x1 4a 001645 400030 272120 tsbbp lp|L50,* " Blank aa 001646 000010 000001 zero 8,1 aa 001647 000001 236007 268 ldq 1,dl " 1 aa 001650 700003 756111 stq sb|3,x1 " i aa 001651 600246 236100 ldq sp|166 " Nc aa 001652 700004 756111 stq sb|4,x1 aa 001653 000010 710004 tra L157 L158: aa 001654 700003 726111 lxl6 sb|3,x1 " i aa 001655 600147 761100 lprpab sp|103 " Char aa 001656 100000 236116 ldq ab|0,x6 aa 001657 700012 756111 stq sb|10,x1 4a 001660 400026 272120 tsbbp lp|L59,* " WriteChar aa 001661 000010 000001 zero 8,1 aa 001662 700003 054111 aos sb|3,x1 " i L157: aa 001663 700003 236111 ldq sb|3,x1 " i aa 001664 700004 116111 cmpq sb|4,x1 aa 001665 777767 604404 tmoz L158 aa 001666 000001 235007 269 lda 1,dl " 1 aa 001667 700012 755111 sta sb|10,x1 4a 001670 400034 272120 tsbbp lp|L15,* " Newline aa 001671 000010 000001 zero 8,1 aa 001672 600246 450100 270 stz sp|166 " Nc aa 001673 000001 335007 271 lca 1,dl " 1 aa 001674 600146 055100 asa sp|102 " Ce L154: aa 001675 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001676 200000 121100 sblx1 bp|0 aa 001677 700001 764111 lprplp sb|1,x1 aa 001700 200001 710100 tra bp|1 " end of return sequence " Begin text of Spacing aa 001701 000007 123160 zero 7,42608 " Spacing aa 001702 141143 151156 zero 49763,53870 aa 001703 147000 000000 zero 52736 L7: aa 001704 000000 213000 208 epaq 0 " set lp to linkage section aa 001705 700026 764161 lprplp sb|22,*au aa 001706 200000 021100 adlx1 bp|0 " BCPL save aa 001707 700000 542111 sprpbp sb|0,x1 aa 001710 700001 544111 sprplp sb|1,x1 aa 001711 700423 620111 eax0 sb|275,x1 aa 001712 777760 360003 anx0 -16,du aa 001713 700025 740100 stx0 sb|21 " end of save sequence aa 001714 600252 234100 209 szn sp|170 " Nl aa 001715 000031 604404 tmoz L162 aa 001716 600244 235100 210 lda sp|164 " Ms aa 001717 000001 175007 sba 1,dl " 1 aa 001720 700010 755111 sta sb|8,x1 aa 001721 600232 235100 lda sp|154 " LinesLeft aa 001722 600203 075100 ada sp|131 " Fl aa 001723 700011 755111 sta sb|9,x1 4a 001724 400012 272120 tsbbp lp|L163,* " MinI aa 001725 000006 000002 zero 6,2 aa 001726 700002 756111 stq sb|2,x1 aa 001727 700002 236111 ldq sb|2,x1 aa 001730 700010 756111 stq sb|8,x1 4a 001731 400034 272120 tsbbp lp|L15,* " Newline aa 001732 000006 000001 zero 6,1 aa 001733 600232 236100 211 ldq sp|154 " LinesLeft aa 001734 600244 116100 cmpq sp|164 " Ms aa 001735 000005 605004 tpl L165 aa 001736 600217 234100 szn sp|143 " Ft aa 001737 000003 601004 tnz L165 aa 001740 600204 234100 szn sp|132 " Flp aa 001741 000003 600004 tze L164 L165: aa 001742 600204 450100 212 stz sp|132 " Flp aa 001743 000140 710004 213 tra L161 L164: aa 001744 777371 272004 215 tsbbp L8+2 " Eject aa 001745 000006 000000 zero 6 L162: aa 001746 600217 234100 218 szn sp|143 " Ft aa 001747 000134 601004 tnz L161 aa 001750 600326 234100 220 szn sp|214 " Waitsw aa 001751 000007 600004 tze L166 aa 001752 600300 234100 szn sp|192 " Print aa 001753 000005 600004 tze L166 4a 001754 400010 272120 tsbbp lp|L167,* " Wait aa 001755 000006 000000 zero 6 aa 001756 600313 235100 lda sp|203 " Stopsw aa 001757 600326 755100 sta sp|214 " Waitsw L166: aa 001760 600260 236100 222 ldq sp|176 " Np aa 001761 000002 506007 div 2,dl " 2 aa 001762 000000 115007 cmpa 0,dl aa 001763 000003 600004 tze L168 aa 001764 000001 335007 lca 1,dl " true aa 001765 000002 710004 tra L169 L168: aa 001766 000000 235007 lda 0,dl " false L169: aa 001767 700002 755111 sta sb|2,x1 aa 001770 700002 235111 lda sb|2,x1 aa 001771 600265 755100 sta sp|181 " OddPage aa 001772 600301 234100 225 szn sp|193 " Printersw aa 001773 000003 600004 tze L170 aa 001774 000003 235007 lda 3,dl " 3 aa 001775 600252 055100 asa sp|170 " Nl L170: aa 001776 600240 235100 226 lda sp|160 " Ma1 aa 001777 600252 175100 sba sp|170 " Nl aa 002000 700010 755111 sta sb|8,x1 4a 002001 400034 272120 tsbbp lp|L15,* " Newline aa 002002 000006 000001 zero 6,1 aa 002003 000001 235007 227 lda 1,dl " 1 aa 002004 700002 755111 sta sb|2,x1 " i aa 002005 000022 710004 tra L171 L172: aa 002006 600265 234100 szn sp|181 " OddPage aa 002007 000003 600004 tze L173 aa 002010 600267 235100 lda sp|183 " Oh aa 002011 000002 710004 tra L174 L173: aa 002012 600161 235100 lda sp|113 " Eh L174: aa 002013 700005 755111 sta sb|5,x1 aa 002014 700005 235111 lda sb|5,x1 aa 002015 700002 722111 lxl2 sb|2,x1 " i aa 002016 600000 755100 sta sp|0 aa 002017 600000 763100 lprpbb sp|0 aa 002020 300000 236112 ldq bb|0,x2 aa 002021 700003 756111 stq sb|3,x1 aa 002022 700003 236111 ldq sb|3,x1 aa 002023 700010 756111 stq sb|8,x1 4a 002024 400016 272120 tsbbp lp|L136,* " Title aa 002025 000006 000001 zero 6,1 aa 002026 700002 054111 aos sb|2,x1 " i L171: aa 002027 700002 236111 ldq sb|2,x1 " i aa 002030 000024 116007 cmpq 20,dl " Maxheads aa 002031 777755 604404 tmoz L172 aa 002032 600241 235100 229 lda sp|161 " Ma2 aa 002033 700010 755111 sta sb|8,x1 4a 002034 400034 272120 tsbbp lp|L15,* " Newline aa 002035 000006 000001 zero 6,1 aa 002036 600232 235100 230 lda sp|154 " LinesLeft aa 002037 600203 075100 ada sp|131 " Fl aa 002040 000004 605404 tpnz L175 aa 002041 000001 235007 lda 1,dl " 1 aa 002042 600203 175100 sba sp|131 " Fl aa 002043 600232 755100 sta sp|154 " LinesLeft L175: aa 002044 600276 234100 232 szn sp|190 " Pi aa 002045 000036 600004 tze L161 aa 002046 600276 235100 234 lda sp|190 " Pi aa 002047 600232 115100 cmpa sp|154 " LinesLeft aa 002050 000026 604004 tmi L176 aa 002051 600232 236100 235 ldq sp|154 " LinesLeft aa 002052 600203 076100 adq sp|131 " Fl aa 002053 700010 756111 stq sb|8,x1 4a 002054 400034 272120 tsbbp lp|L15,* " Newline aa 002055 000006 000001 zero 6,1 aa 002056 600277 236100 236 ldq sp|191 " Pl aa 002057 000012 402007 mpy 10,dl " 10 aa 002060 600276 116100 cmpq sp|190 " Pi aa 002061 000007 605004 tpl L177 aa 002062 600277 236100 ldq sp|191 " Pl aa 002063 000012 402007 mpy 10,dl " 10 aa 002064 700002 756111 stq sb|2,x1 " temporary aa 002065 600276 236100 ldq sp|190 " Pi aa 002066 700002 506111 div sb|2,x1 aa 002067 600276 755100 sta sp|190 " Pi L177: aa 002070 600277 335100 237 lca sp|191 " Pl aa 002071 600276 055100 asa sp|190 " Pi aa 002072 600204 450100 238 stz sp|132 " Flp aa 002073 777613 272004 239 tsbbp L7+2 " Spacing aa 002074 000006 000000 zero 6 aa 002075 000006 710004 240 tra L161 L176: aa 002076 600276 235100 242 lda sp|190 " Pi aa 002077 700010 755111 sta sb|8,x1 4a 002100 400034 272120 tsbbp lp|L15,* " Newline aa 002101 000006 000001 zero 6,1 aa 002102 600276 450100 243 stz sp|190 " Pi L161: aa 002103 700000 762111 lprpbp sb|0,x1 " bcpl return aa 002104 200000 121100 sblx1 bp|0 aa 002105 700001 764111 lprplp sb|1,x1 aa 002106 200001 710100 tra bp|1 " end of return sequence aa 002107 000000 000000 " padding " Definition section part one - external entry points 5a 000000 000024 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_mr3" aa 000004 157146 146137 aa 000005 155162 063000 aa 000006 005105 152145 " "Eject" aa 000007 143164 000000 aa 000010 007123 160141 " "Spacing" aa 000011 143151 156147 aa 000012 005102 162145 " "Break" aa 000013 141153 000000 aa 000014 005127 151144 " "Width" aa 000015 164150 000000 aa 000016 004124 145170 " "Text" aa 000017 164000 000000 aa 000020 014163 171155 " "symbol_table" aa 000021 142157 154137 aa 000022 164141 142154 aa 000023 145000 000000 " Segname definition for runoff_mr3 55 000024 000027 000002 " forward, backward threads 5a 000025 000002 400003 " value defined, class flags 55 000026 000003 000027 " name pointer, first entry def " Definition for Eject 55 000027 000032 000024 " forward, backward threads 0a 000030 001333 500000 " value defined, class flags 55 000031 000006 000024 " name pointer, segname def pointer " Definition for Spacing 55 000032 000035 000027 " forward, backward threads 0a 000033 001704 500000 " value defined, class flags 55 000034 000010 000024 " name pointer, segname def pointer " Definition for Break 55 000035 000040 000032 " forward, backward threads 0a 000036 001233 500000 " value defined, class flags 55 000037 000012 000024 " name pointer, segname def pointer " Definition for Width 55 000040 000043 000035 " forward, backward threads 0a 000041 001164 500000 " value defined, class flags 55 000042 000014 000024 " name pointer, segname def pointer " Definition for Text 55 000043 000046 000040 " forward, backward threads 0a 000044 000002 500000 " value defined, class flags 55 000045 000016 000024 " name pointer, segname def pointer " Definition for symbol_table 55 000046 000002 000043 " forward, backward threads 6a 000047 000000 400002 " value defined, class flags 55 000050 000020 000024 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000051 012162 165156 " "runoff_mr0" aa 000052 157146 146137 aa 000053 155162 060000 aa 000054 004127 141151 " "Wait" aa 000055 164000 000000 5a 000056 000057 000000 aa 000057 000004 000000 55 000060 000051 000054 aa 000061 020142 143160 " "bcpl_arithmetic_" aa 000062 154137 141162 aa 000063 151164 150155 aa 000064 145164 151143 aa 000065 137000 000000 aa 000066 004115 151156 " "MinI" aa 000067 111000 000000 5a 000070 000071 000000 aa 000071 000004 000000 55 000072 000061 000066 aa 000073 012162 165156 " "runoff_mr5" aa 000074 157146 146137 aa 000075 155162 065000 aa 000076 010122 145141 " "Readhead" aa 000077 144150 145141 aa 000100 144000 000000 5a 000101 000102 000000 aa 000102 000004 000000 55 000103 000073 000076 aa 000104 005124 151164 " "Title" aa 000105 154145 000000 5a 000106 000107 000000 aa 000107 000004 000000 55 000110 000073 000104 aa 000111 012162 165156 " "runoff_mr6" aa 000112 157146 146137 aa 000113 155162 066000 aa 000114 016120 162151 " "PrintFootnotes" aa 000115 156164 106157 aa 000116 157164 156157 aa 000117 164145 163000 5a 000120 000121 000000 aa 000121 000004 000000 55 000122 000111 000114 aa 000123 017150 171160 " "hyphenate_word_" aa 000124 150145 156141 aa 000125 164145 137167 aa 000126 157162 144137 5a 000127 000130 000000 aa 000130 000004 000000 55 000131 000123 000123 aa 000132 022142 143160 " "bcpl_machine_code_" aa 000133 154137 155141 aa 000134 143150 151156 aa 000135 145137 143157 aa 000136 144145 137000 aa 000137 012120 141143 " "Packstring" aa 000140 153163 164162 aa 000141 151156 147000 5a 000142 000143 000000 aa 000143 000004 000000 55 000144 000132 000137 aa 000145 012162 165156 " "runoff_mr4" aa 000146 157146 146137 aa 000147 155162 064000 aa 000150 011127 162151 " "WriteChar" aa 000151 164145 103150 aa 000152 141162 000000 5a 000153 000154 000000 aa 000154 000004 000000 55 000155 000145 000150 aa 000156 005102 154141 " "Blank" aa 000157 156153 000000 5a 000160 000161 000000 aa 000161 000004 000000 55 000162 000145 000156 aa 000163 015120 162151 " "PrinterIndent" aa 000164 156164 145162 aa 000165 111156 144145 aa 000166 156164 000000 5a 000167 000170 000000 aa 000170 000004 000000 55 000171 000145 000163 aa 000172 007116 145167 " "Newline" aa 000173 154151 156145 5a 000174 000175 000000 aa 000175 000004 000000 55 000176 000145 000172 aa 000177 000000 000000 " padding " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 002110 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 L167: 3a 000010 777770 000046 " "runoff_mr0$Wait" 5a 000011 000056 000000 L163: 3a 000012 777766 000046 " "bcpl_arithmetic_$MinI" 5a 000013 000070 000000 L151: 3a 000014 777764 000046 " "runoff_mr5$Readhead" 5a 000015 000101 000000 L136: 3a 000016 777762 000046 " "runoff_mr5$Title" 5a 000017 000106 000000 L127: 3a 000020 777760 000046 " "runoff_mr6$PrintFootnotes" 5a 000021 000120 000000 L81: 3a 000022 777756 000046 " "hyphenate_word_" 5a 000023 000127 000000 L78: 3a 000024 777754 000046 " "bcpl_machine_code_$Packstring" 5a 000025 000142 000000 L59: 3a 000026 777752 000046 " "runoff_mr4$WriteChar" 5a 000027 000153 000000 L50: 3a 000030 777750 000046 " "runoff_mr4$Blank" 5a 000031 000160 000000 L49: 3a 000032 777746 000046 " "runoff_mr4$PrinterIndent" 5a 000033 000167 000000 L15: 3a 000034 777744 000046 " "runoff_mr4$Newline" 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 442065 277754 " 01/24/75 0704.3 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 000136 " rel_def, rel_link aa 000022 000145 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_mr3 aa 000027 023333 611451 " last modified on aa 000030 000000 102333 " 01/24/75 0647.2 mst Fri aa 000031 432367 000000 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_mr3.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 162063 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 001257 " length in bits aa 000112 740445 171627 aa 000113 200123 604564 aa 000114 740655 000001 aa 000115 236150 647406 aa 000116 151707 432360 aa 000117 216400 000517 aa 000120 005723 612264 aa 000121 002474 025500 aa 000122 000123 602664 aa 000123 740635 170113 aa 000124 236021 647404 aa 000125 551703 432000 aa 000126 247411 151700 aa 000127 432360 126400 aa 000130 000517 015720 aa 000131 002474 045517 aa 000132 012323 602264 aa 000133 000005 170077 aa 000134 236023 640000 aa 000135 000000 000000 l " inkage relocation bits aa 000136 000000 000002 " version number of rel-bits structure aa 000137 000000 000234 " length in bits aa 000140 100002 204652 aa 000141 465246 524652 aa 000142 465246 524652 aa 000143 465246 524652 aa 000144 465200 000000 s " ymbol relocation bits aa 000145 000000 000002 " version number of rel-bits structure aa 000146 000000 000043 " length in bits aa 000147 740365 770342 " Object map aa 002516 000000 000001 " version number of object_map structure aa 002517 157142 152137 " "obj_map " aa 002520 155141 160040 aa 002521 000000 002107 " text offset, length aa 002522 002110 000177 " def offset, length aa 002523 002310 000036 " link offset, length aa 002524 002346 000150 " symbol offset, length aa 002525 000000 000000 " break map offset, length aa 002526 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 002527 002516 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