// External, global, and manifest declarations for RUNOFF on Multics. // Last modified on 04/02/74 at 16:09:55 by R F Mabee. external // BCPL library routines used by RUNOFF. $( Packstring = "bcpl_machine_code_$Packstring" Unpackstring = "bcpl_machine_code_$Unpackstring" Writech = "bcpl_machine_code_$Writech" WriteS = "bcpl_stream_io_$WriteS" WriteN = "bcpl_stream_io_$WriteN" ConvertNtoS = "bcpl_conversions_$ConvertNtoS" Newvec = "bcpl_filesys_lib_$Newvec" Freevec = "bcpl_filesys_lib_$Freevec" MinI = "bcpl_arithmetic_$MinI" MaxI = "bcpl_arithmetic_$MaxI" FormDate = "bcpl_conversions_$FormDate" $) external { // All routines that form RUNOFF are listed below, even those that are // not external. This listing is thus a table of contents of RUNOFF. // Adjust = "runoff_mr3$Adjust" // Print a line, with right-adjustment. Blank = "runoff_mr4$Blank" // Print n blanks. Break = "runoff_mr3$Break" // Break text, printing buffers. // Center = "runoff_mr3$Center" // Print the current line, centered. Check_ref = "runoff_mr9$Check_ref" // Handle reference to symbol in control line. // Cleanup = "runoff_driver$Cleanup" // Close files, etc. Invoked by unwinder. ConsoleReadline = "runoff_mr0$ConsoleReadline" // Accept next line from user_input. Control = "runoff_mr2$Control" // Process a control line. // DimAttach = "runoff_dim$runoff_attach" // IOSIM attach entry point. // DimChangemode = "runoff_dim$runoff_changemode" // Change internal modes. // DimDetach = "runoff_dim$runoff_detach" // Disconnect runoff DIM. // DimOrder = "runoff_dim$runoff_order" // Execute runoff command line for dim. // DimWrite = "runoff_dim$DimWrite" // Process chunk of text as runoff input. Eject = "runoff_mr3$Eject" // Eject paper, printing footer. // Equation = "runoff_mr3$Equation" // Print an equation. ExecuteCommand = "runoff_mr0$ExecuteCommand" // Pass control line to command processor. FillTrTable = "runoff_mr1$FillTrTable" // Set up a conversion table. FindInput = "runoff_driver$FindInput" // Open new input stream for given name. // FixTab = "runoff_mr0$FixTab" // Calculate tab position and insert blanks. Foot_begin = "runoff_mr6$Foot_begin" // Start processing footnote Foot_end = "runoff_mr6$Foot_end" // Finish processing footnote. Freeheads = "runoff_mr5$Freeheads" // Release a set of headers or footers. // GetArg = "runoff_driver$GetArg" // Arg fetching routine for Option. Gethead = "runoff_mr5$Gethead" // Package header up in new vector. // GetModeArg = "runoff_dim$GetArgMode" // Arg fetching routine for Option for DIM. GetString = "runoff_mr8$GetString" // Read and store string expression. // GetSymbol = "runoff_mr9$GetSymbol" // Find value and type of named symbol. InitializeSymbolTree = "runoff_mr9$InitializeSymbolTree" // Load up symbol table at start-up. InsertFile = "runoff_mr4$InsertFile" // Process .if line. // MakeN = "runoff_mr8$MakeN" // Convert string to character constant (number). Need = "runoff_mr4$Need" // Eject if not enough lines remain. NeedSS = "runoff_mr4$NeedSS" // Need regardless of double-spacing. Newline = "runoff_mr4$Newline" // Print n newline characters. // Number = "runoff_mr2$Number" // Scan a number from a control line. Nx_close = "runoff_mr0$Nx_close" // Close current input stream. Nx_open = "runoff_mr0$Nx_open" // Open a new stacked input stream. Nx_reset = "runoff_mr0$Nx_reset" // Set read pointer back to beginning of current file. // OldModes = "runoff_dim$OldModes" // Create return mode string for changemode (dim). // PrintErrorFile = "runoff_driver$PrintErrorFile" // Dump buffered error messages on console. PrinterIndent = "runoff_mr4$PrinterIndent" // Indent an extra twenty spaces for printer. PrintFootnotes = "runoff_mr6$PrintFootnotes" // To output the accumulated footnotes. Readline = "runoff_mr0$Readline" // Read a line of input. Readhead = "runoff_mr5$Readhead" // Read header into vector provided. ReadExp = "runoff_mr8$ReadExp" // Evaluate an expression. ReadName = "runoff_mr4$ReadName" // Scan name from control line, pack in vector. ReadNumber = "runoff_mr8$ReadNumber" // Convert number from control line. ReadParam = "runoff_mr8$ReadParam" // Evaluate a parameter expression. ReadString = "runoff_mr8$ReadString" // Read a string. Report = "runoff_mr0$Report" // Report an error in usage, etc. Roff = "runoff_mr1$Roff" // The main program for RUNOFF. RoffProcess = "runoff_mr0$RoffProcess" // Called for each input file. // runoff_module = "runoff_$runoff_module_" // Outer module transfer vector for dim. // RunoffCommand = "runoff_driver$runoff" // Command interface. // Save = "runoff_dim$Save" // Store global vector in SDB for dim. SetCharsw = "runoff_mr0$SetCharsw" // Turn chars feature on or off. // SetCtable = "runoff_mr9$SetCtable" // Update translation table from .sr command. SetDevice = "runoff_mr1$SetDevice" // Change tables for a new device. Sethead = "runoff_mr5$Sethead" // Set up header or footer. SetLinesLeft = "runoff_mr4$SetLinesLeft" // Repeat calculation of LinesLeft. // SetModes = "runoff_dim$SetModes" // Mode changing subroutine for DIM. SetPaging = "runoff_mr1$SetPaging" // Turn no pagination feature on or off. SetSwitches = "runoff_mr1$SetSwitches" // Initialize most of runoff. // SetSymbol = "runoff_mr9$SetSymbol" // Assign new value and type to named symbol. // Set_param = "runoff_mr2$Set_param" // Update variable, absolute or relatve. Set_ref = "runoff_mr9$Set_ref" // Define or update symbol. // Skip = "runoff_mr8$Skip" // Skip over blanks in control line. Skiptolabel = "runoff_mr4$Skiptolabel" // For .gb and .gf. Spacing = "runoff_mr3$Spacing" // Process vertical spacing. // StNum = "runoff_dim$StNum" // Store number into mode string for OldModes. // Store = "runoff_mr7$Store" // Save character until line is complete (for "chars"). StoreArabic = "runoff_mr4$StoreArabic" // Convert number to string. // StoreCtable = "runoff_mr9$StoreCtable" // Convert translation table to string form. StoreDate = "runoff_mr4$StoreDate" // Store current date in vector. StoreRoman = "runoff_mr4$StoreRoman" // Store number as roman numeral. StoreString = "runoff_mr0$StoreString" // Make copy of string in free storage. // StSwitch = "runoff_dim$StSwitch" // Store switch mode into mode string. // SubscriptString = "runoff_mr8$SubscriptString" // Evaluate substring expression. Text = "runoff_mr3$Text" // Process 1 line of input text. Title = "runoff_mr5$Title" // Print a header or a footer. // Tree_search = "runoff_mr9$Tree_search" // Look named symbol up in symbol table. // TryToHyphenate = "runoff_mr3$TryToHyphenate" // Last word won't fit on line, break it if possible. Typeout = "runoff_mr0$Typeout" // Type rest of input line on console. // Unsave = "runoff_dim$Unsave" // Restore globals from SDB for dim. UpdateSymbol = "runoff_mr9$UpdateSymbol" // Set named symbol to value from control line. Use_ref = "runoff_mr9$Use_ref" // Insert symbol value in place of symbol Wait = "runoff_mr0$Wait" // Wait for an interaction from the console. Width = "runoff_mr3$Width" // Return width of a character. WrCh = "runoff_mr7$WrCh" // "Chars" routine WrChInit = "runoff_mr7$WrChInit" // Initialize "chars" routine WriteChar = "runoff_mr4$WriteChar" // Write a character of output. // Wrline = "runoff_ms7$Wrline" // Write stored line into chars file. } global // Scalars, switches, common vectors, etc. ... { Ad : 100 // Adjust Again : 101 // Input line in Rawchar must be reprocessed. Ce : 102 // Number of lines to center. Char : 103 // Buffer for output characters. CharsTable : 104 // Table of special characters for .chars output. Charsw : 105 // Indication of unprintable characters. ChStream : 106 // Output stream for "chars" option output Conv : 107 // Character conversion. Device : 110 // Type of device output is to be formatted for. DeviceTable : 111 // Conversions for this device. Ef : 112 // Even foot Eh : 113 // Even head. Eq : 114 // Equation line counter. Eqcnt : 115 // Equation reference counter ErrorfilePointer : 116 // Pointer to the temporary error file if any. Errorstream : 117 // Output stream for diagnostics. ErrorTempID : 120 // ID number for temporary error message segment. ExpError : 121 // Indicates badly formed expression. ExtraMargin : 122 // Indent entire text this many spaces. Fc : 123 // No. of characters in Footbuf Fd : 124 // Remember if text is double spaced Fi : 125 // Fill switch. FileName : 126 // Name of first input file. Filesw : 127 // True if output is going to a file. Findent : 130 // Indenting in use before entering footnote. Fl : 131 // No. of lines in FootList Flp : 132 // Print line although page appears full Foot : 133 // Footnote counter Footbuf : 134 // Buffer to hold current footnote. FootList : 135 // Working pointer into list of footnote lines. FootListBase : 136 // Base of footnote list. FootRef : 137 // Footnote reference string in footnote body. Fp : 140 // First page to print. Fr : 141 // Footnote counter reset switch From : 142 // -from argument. Ft : 143 // Footnote processing switch Fth : 144 // Vector for user-defined demarcation line Fundent : 145 // Undenting in use before entering footnote. Hyphenating : 146 // True if an attempt to break a word should be made. In : 147 // Indent to here. InputFileName : 150 // Name of current input file. InputLines : 151 // Current line number in current source file. InputStack : 152 // Stack of saved input streams. JumpLine : 153 // Line number of .gb or .gf command during skip. LinesLeft : 154 // Number of usable text lines left on this page. LIno : 155 // Number of literal lines following. Ll : 156 // Line length. Lp : 157 // Last page to print. Ma1 : 160 // Space above header. Ma2 : 161 // Space below header. Ma3 : 162 // Space above foot. Ma4 : 163 // Space below foot. Ms : 164 // Spacing between lines (ss = 1, ds = 2, etc.) MultiplePagecount : 165 // Form feeds between pages to printer. Nc : 166 // Number of characters in Char. NestingDepth : 167 // Index into stack of input files. Nl : 170 // Last used line number. NNp : 171 // Next page number. NoControl : 172 // True if control lines are to be ignored. NoFill : 173 // True if fill mode is always off. NoFtNo : 174 // True to suppress number on next footnote reference. NoPaging : 175 // True if no pagination is desired. Np : 176 // Current page number. Nr : 177 // Number of characters in Rawchar. Nrx : 180 // Count through input buffer. OddPage : 181 // True if current page number is odd. Of : 182 // Odd foot. Oh : 183 // Odd head. Output : 184 // Runoff's main text output stream. PadLeft : 185 // True if padding is to start from left of line. Parameter : 186 // Initial value of built-in symbol. Passes : 187 // Number of passes left to make. Pi : 190 // Space needed for a picture. Pl : 191 // Paper length. Print : 192 // Whether or not to print. Printersw : 193 // Output is intended for online printer. PrintLineNumbers : 194 // True if source line numbers are to be printed in output. Rawchar : 195 // Buffer for input line. Roman : 196 // Roman numeral pagination. SavedCc : 197 // Temporary used by WriteChar. Selsw : 200 // for selectric ball option Spec_char : 201 // For symbol references. Start : 202 // -start argument. Stopsw : 203 // Stop between pages of output. Temp : 204 // Vector to hold unprinted character Tempc : 205 // No. of characters in Temp TextRef : 206 // Footnote reference string in main text. TimeNow : 207 // Clock reading when runoff is entered. To : 210 // -to argument. TrTable : 211 // Translation table for .tr. TreeRoot : 212 // Base of symbol tree. Un : 213 // Undent to here. Waitsw : 214 // From -wait option. // 300 to 309 are reserved for runoff_driver. // 310 to 319 are reserved for runoff_dim. // 320 to 329 are reserved for runoff_mr0. // 330 to 339 are reserved for runoff_mr7. } manifest { ByteBits = 9 // Bits per character, as packed by compiler. Skip = $8177 // A character that will be ignored on output. Maxline = 400 // Buffer lengths for input and output Maxheads = 20 // No of header or footer lines. MaxDepth = 90 // Nesting times 3 for .if. LL_ = 65 // Default line length. PL_ = 66 // Default page length -- 11 inches, 6 lines/in. MA1_ = 4 // Default top margin above header MA2_ = 2 // Default top margin below header MA3_ = 2 // Default bottom margin above footer MA4_ = 4 // Default bottom margin below footer } // // // ----------------------------------------------------------- // // // 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 //