Compilation listing of file >2.1spec>online>mib083074>runoff_mr8.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0705.1 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 // Expression reading routines for runoff. 2 // Last modified on 05/30/74 at 18:45:50 by R F Mabee. 3 // 4 // Routines defined in this module: 5 // ReadNumber Scan and evaluate numeric field of control line. 6 // MakeN Convert string to number (character constant). 7 // ReadExp Scan and evaluate arbitrary expression in control line. 8 // Skip Advance pointer to next non-blank. 9 // ReadParam Evaluate expression setting or adding to old value. 10 // ReadString Scan string constant. 11 // GetString Read string and store in free storage vector. 12 // SubscriptString Evaluate substring expression. 13 // Only ReadNumber, ReadExp, ReadParam, ReadString, and GetString are external. 14 15 // Copyright (c) 1974 by Massachusetts Institute of Technology and Honeywell Information Systems, Inc. 16 17 // General permission is granted to copy and use this program, but not to sell it, provided that the above 18 // copyright statement is given. Contact Information Processing Services, MIT, for further information. 19 // Please contact R F Mabee at MIT for information on this program and versions for other machines. 20 21 get "head" 1 // Declarations for common BCPL library routines for Multics. 2 // Last modified on 09/05/73 at 03:57:35 by R F Mabee. 3 // Largely rewritten for 6180 Multics; installed in June 1973 by R F Mabee. 4 // First version installed in September 1971 by R F Mabee. 5 6 external // Functions to perform mathematical operations not provided by the language. 7 $( MaxI = "bcpl_arithmetic_$MaxI" // i := MaxI (j, k) 8 MaxR = "bcpl_arithmetic_$MaxR" // x := MaxR (y, z) 9 MinI = "bcpl_arithmetic_$MinI" // i := MinI (j, k) 10 MinR = "bcpl_arithmetic_$MinR" // x := MinR (y, z) 11 AbsI = "bcpl_arithmetic_$AbsI" // i := AbsI (j) 12 AbsR = "bcpl_arithmetic_$AbsR" // x := AbsR (y) 13 SquareRoot = "bcpl_arithmetic_$SquareRoot" // x := SquareRoot (y) 14 IpowerI = "bcpl_arithmetic_$IpowerI" // i := IpowerI (j, k) 15 RpowerI = "bcpl_arithmetic_$RpowerI" // x := RpowerI (y, k) 16 RpowerR = "bcpl_arithmetic_$RpowerR" // x := RpowerR (y, z) 17 RandomI = "bcpl_arithmetic_$RandomI" // i := RandomI () 18 RandomR = "bcpl_arithmetic_$RandomR" // x := RandomR () 19 Logarithm = "bcpl_arithmetic_$Logarithm" // x := Logarithm (y) 20 Exponential = "bcpl_arithmetic_$Exponential" // x := Exponential (y) 21 $) 22 external // Routines to manipulate strings. Caller must supply space to hold string results. 23 $( Packstring = "bcpl_machine_code_$Packstring" // Packstring (Unpacked, Space) 24 Unpackstring = "bcpl_machine_code_$Unpackstring" // Unpackstring (String, Space) 25 CopyString = "bcpl_strings_$CopyString" // CopyString (String, Space) 26 EqualString = "bcpl_strings_$EqualString" // if EqualString (StringA, StringB) do ... 27 CompareStrings = "bcpl_strings_$CompareStrings" // CollatingOrder := CompareStrings (StringA, StringB) 28 Concatenate = "bcpl_strings_$Concatenate" // s := Concatenate (Space, Maxlen, StrA, StrB, ...) 29 Substr = "bcpl_strings_$Substr" // s := Substr (Space, String, Index, [Length]) 30 Subch = "bcpl_machine_code_$Subch" // Ch := Subch (String, Index) 31 Length = "bcpl_strings_$Length" // Len := Length (String) 32 SetLength = "bcpl_strings_$SetLength" // SetLength (String, Len) 33 LengthInWords = "bcpl_strings_$LengthInWords" // Len := LengthInWords (String) 34 Index = "bcpl_strings_$Index" // i := Index (StringA, StringB) 35 IndexCh = "bcpl_strings_$IndexCh" // i := IndexCh (String, Ch) 36 StringToChar = "bcpl_strings_$StringToChar" // Char := StringToChar (String) 37 CharToString = "bcpl_strings_$CharToString" // String := CharToString (Char, Space) 38 MakePl1String = "bcpl_strings_$MakePl1String" // Pl1String := MakePl1String (BcplString, Space, Len) 39 MakeBcplString = "bcpl_strings_$MakeBcplString" // s := MakeBcplString (Pl1String, Len, Space) 40 $) 41 external // Functions to convert values from one representation to another. 42 $( RtoI = "bcpl_machine_code_$RtoI" // i := RtoI (x) 43 ItoR = "bcpl_machine_code_$ItoR" // x := ItoR (i) 44 ConvertStoN = "bcpl_conversions_$ConvertStoN" // r := ConvertStoN (String, [Base]) 45 ConvertNtoS = "bcpl_conversions_$ConvertNtoS" // String := ConvertNtoS (i, Space, [Base, [Digits]]) 46 ConvertFtoS = "bcpl_conversions_$ConvertFtoS" // String := ConvertFtoS (x, Space, [Digits]) 47 RemoveEscapes = "bcpl_conversions_$RemoveEscapes" // s := RemoveEscapes (String, Space) 48 InsertEscapes = "bcpl_conversions_$InsertEscapes" // s := InsertEscapes (String, Space) 49 FormDate = "bcpl_conversions_$FormDate" // FormDate (Seconds, Space10, GMTsw) 50 $) 51 external // Miscellaneous routines to extend the power of the language. 52 $( Longjump = "bcpl_machine_code_$Longjump" // Longjump (Label, Psaved) 53 Level = "bcpl_machine_code_$Level" // Psaved := Level () 54 Bcall = "bcpl_machine_code_$Bcall" // r := Bcall (F, n, (list A1, A2, .. An)) 55 Pl1Call = "bcpl_machine_code_$Pl1Call" // Pl1Call (Routine, ArglistAddress) 56 Move = "bcpl_machine_code_$Move" // Move (ToPtr, FromPtr, WordCount) 57 MoveBits = "bcpl_machine_code_$MoveBits" // MoveBits (ToPtr, ToBit, FromPtr, FromBit, BitCount) 58 ScanChar = "bcpl_machine_code_$ScanChar" // Offset := ScanChar (Ptr, Offset, Length, Ch) 59 NumbArgs = "bcpl_machine_code_$NumbArgs" // Nargs := NumbArgs () 60 NewvecInit = "bcpl_filesys_lib_$NewvecInit" // NewvecInit (Space, Size) 61 NewvecCleanup = "bcpl_filesys_lib_$NewvecCleanup" // NewvecCleanup () 62 Newvec = "bcpl_filesys_lib_$Newvec" // v := Newvec (Size - 1) 63 Freevec = "bcpl_filesys_lib_$Freevec" // Freevec (v) 64 Allocate = "bcpl_filesys_lib_$Allocate" // v := Allocate (Size) 65 Findadr = "bcpl_filesys_lib_$Findadr" // Ptr := Findadr (Name) 66 $) 67 external // BCPL stream I/O routines. 68 $( Open = "bcpl_stream_io_$Open" // Stream := Open (Options, Name, [Length, Delimiter]) 69 Close = "bcpl_stream_io_$Close" // Close (StreamA, StreamB, ...) 70 Readch = "bcpl_machine_code_$Readch" // Readch (Stream, lv Ch) 71 Writech = "bcpl_machine_code_$Writech" // Writech (Stream, Ch) 72 WriteS = "bcpl_stream_io_$WriteS" // WriteS (Stream, String) 73 WriteN = "bcpl_stream_io_$WriteN" // WriteN (Stream, i) 74 Format = "bcpl_stream_io_$Format" // Format (Stream, ControlString, A1, A2, ...) 75 FormatString = "bcpl_stream_io_$FormatString" // FormatString (Space, MaxLen, ControlString, A1, A2, ...) 76 Writeout = "bcpl_stream_io_$Writeout" // Writeout (Stream) 77 Flushinput = "bcpl_stream_io_$Flushinput" // Flushinput (Stream) 78 ResetStream = "bcpl_stream_io_$ResetStream" // ResetStream (Stream, Offset) 79 StreamOffset = "bcpl_stream_io_$StreamOffset" // Offset := StreamOffset (Stream) 80 StreamLength = "bcpl_stream_io_$StreamLength" // Length := StreamLength (Stream) 81 StreamPointer = "bcpl_stream_io_$StreamPointer" // Ptr := StreamPointer (Stream) 82 $) 83 external // Interface to Multics file system. Note: Dirname and Entryname are PL/I strings. 84 $( ExpandPathname = "bcpl_filesys_lib_$ExpandPathname" // s := ExpandPathname (RelativePath, Space) 85 JoinPathname = "bcpl_filesys_lib_$JoinPathname" // s := JoinPathname (Dirname, Entryname, Space) 86 SplitPathname = "bcpl_filesys_lib_$SplitPathname" // SplitPathname (AbsolutePath, Dirname, Entryname) 87 FindSegment = "bcpl_filesys_lib_$FindSegment" // Ptr := FindSegment (Pathname, lv BitCount) 88 MakeSegment = "bcpl_filesys_lib_$MakeSegment" // Ptr := MakeSegment (Pathname) 89 GetPathname = "bcpl_filesys_lib_$GetPathname" // s := GetPathname (Pointer, Space) 90 MakeTempSeg = "bcpl_filesys_lib_$MakeTempSeg" // Ptr := MakeTempSeg (Number, Purpose) 91 DeleteTempSeg = "bcpl_filesys_lib_$DeleteTempSeg" // DeleteTempSeg (Number, Purpose) 92 Terminate = "bcpl_filesys_lib_$Terminate" // Terminate (Pointer) 93 SetBitCount = "bcpl_filesys_lib_$SetBitCount" // SetBitCount (Pointer, BitCount) 94 RawClockTime = "bcpl_machine_code_$RawClockTime" // RawTime := RawClockTime (Space2) 95 TimeToSeconds = "bcpl_machine_code_$TimeToSeconds" // TimeNow := TimeToSeconds (RawTime) 96 GetCpuUsage = "bcpl_filesys_lib_$GetCpuUsage" // MicrosecondsUsed := GetCpuUsage () 97 $) 98 external // Interface to Multics command level features. 99 $( Pl1NumbArgs = "bcpl_command_lib_$Pl1NumbArgs" // Nargs := Pl1NumbArgs () 100 Pl1ArgPtr = "bcpl_command_lib_$Pl1ArgPtr" // Ptr := Pl1ArgPtr (ArgIndex) 101 Pl1Descriptor = "bcpl_command_lib_$Pl1Descriptor" // D := Pl1Descriptor (ArgIndex) 102 Pl1ArgString = "bcpl_command_lib_$Pl1ArgString" // s := Pl1ArgString (ArgIndex, Space, [MaxLen]) 103 Pl1ReturnString = "bcpl_command_lib_$Pl1ReturnString" // Pl1ReturnString (String) 104 ConcatenateArgs = "bcpl_command_lib_$ConcatenateArgs" // s := ConcatenateArgs (FirstIndex, Space, MaxLen) 105 OptionParse = "bcpl_command_lib_$OptionParse" // OptionParse (GetNextCommandArg, Nopts, OptionsList, 106 GetNextCommandArg = "bcpl_command_lib_$GetNextCommandArg" // PointersList, FlagsList, PutName) 107 Complain = "bcpl_command_lib_$Complain" // Complain (ControlString, [A1, A2, A3]) 108 BCPLaddr = "bcpl_machine_code_$BCPLaddr" // Pointer := BCPLaddr (ITSaddress) 109 ITS = "bcpl_machine_code_$ITS" // ITSaddress := ITS (Pointer, Space, [BitOffset]) 110 SetOverflowMask = "bcpl_machine_code_$SetOverflowMask" // SetOverflowMask (true -> Inhibit, Enable) 111 SetHandler = "bcpl_command_lib_$SetHandler" // SetHandler (Name, Handler, Space16) 112 RevertHandler = "bcpl_command_lib_$RevertHandler" // RevertHandler (Name) 113 $) 114 115 global // Library currently reserves all cells below 60 and may expand up to 99. 116 $( OUTPUT : 32; INPUT : 33 117 MONITOR : 34; CONSOLE : 35 118 Ch : 36 119 ProgramID : 37 // Must be set to name of program before calling Complain or MakeTempSeg. 120 Errcode : 38; IOstatus : 39 // Used by Complain; set by some library routines. 121 ArgIndex : 40 // Used by GetNextCommandArg. 122 $) 123 124 manifest // Description of object machine, etc. 125 $( Machine = 6180 126 WordSize = 36 127 ByteSize = 9 // Bits per character in strings. 128 CountSize = 18 // Bits for string length field. 129 Left = 18; Right = $8777777 130 Endofstreamch = $87777 131 Null = $8007777000001 // Multics uses this for empty pointer. 132 $) 133 manifest // These are the options referred to in the declaration of Open. 134 $( Pointer = 1; Console = 2; StreamName = 3 // Type. Specify exactly one. 135 PathName = 4; EntryName = 5; SearchName = 6 136 Read = 16; Write = 32; Append = 48 // Direction. Logor into Type. 137 MultiSegmentFile = 128 // May be logor'ed into above. 138 $) 139 manifest // These are the flags that appear in the list given to OptionParse. 140 $( OptNegatable = 1 // Logor any combination of these values. 141 OptNegate = 2 142 OptGetNext = 4 143 OptConvert = 8 144 OptCallOut = 16 145 $) 22 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 } 23 24 25 let ReadNumber (b) = valof // Read and evaluate a number, base b. 26 $( let n = 0 27 while 0 le Rawchar!Nrx - '0' < b & Nrx < Nr do // For all digits. 28 $( n := n * b + Rawchar!Nrx - '0' // Add in digit. 29 Nrx := Nrx + 1 30 $) 31 while Rawchar!Nrx = '*s' & Nrx < Nr do Nrx := Nrx + 1 // Skip over following white space. 32 resultis n 33 $) 34 and MakeN (v) = valof // Convert string to character (number). 35 $( let x = 0 36 for i = 1 to Length (v) do x := x lshift ByteBits logor Subch (v, i) 37 resultis x 38 $) 39 40 let ReadExp (n, v) = valof // Read and evaluate a subexpression of precedence n. 41 // v is work space for strings. 42 $( if Nrx ge Nr do 43 $( ExpError := true // Null expression is error. 44 resultis 0 45 $) 46 let String = false 47 let A = valof switchon Rawchar!Nrx into // Get primary expression. 48 $( case '^': Skip () 49 resultis ^ ReadExp (3, v) 50 case '-': Skip () 51 resultis - ReadExp (5, v) 52 case '(': Skip () 53 A := ReadExp (0, v) 54 test Rawchar!Nrx = ')' 55 then Skip () 56 or ExpError := true 57 resultis A 58 case '0': case '1': case '2': case '3': case '4': 59 case '5': case '6': case '7': case '8': case '9': 60 resultis ReadNumber (10) 61 case '#': Skip () 62 resultis ReadNumber (8) 63 case '"': String := true 64 ReadString (v) 65 resultis MakeN (v) 66 67 default: ExpError := true // Unrecognizable character, must be error. 68 resultis 0 69 $) 70 71 while Nrx < Nr do // Read possible multiple operators at this precedence. 72 $( let Op = Rawchar!Nrx 73 let NewNrx = Nrx 74 if Rawchar!(Nrx + 1) = '*b' do 75 $( Op := (Op lshift ByteBits logor '*b') lshift ByteBits logor Rawchar!(Nrx + 2) 76 NewNrx := NewNrx + 2 77 $) 78 79 let p = valof switchon Op into // Get precedence of current operator. 80 $( case '=_': 81 case '|': resultis 2 82 case '&': resultis 3 83 case '=': case '<': case '>': 84 case '/=': case '<_': case '>_': 85 resultis 4 86 case '+': case '-': 87 resultis 5 88 case '**': case '/': case '\': 89 resultis 6 90 case '#': unless String break 91 A := Length (v) 92 Nrx := NewNrx 93 Skip () 94 String := false 95 loop 96 default: break // Not a known operator, end of expression. 97 $) 98 if p le n break // Operator less binding, return. 99 100 Nrx := NewNrx 101 Skip () // Over operator. 102 let B = 0 103 test String & Rawchar!Nrx = '"' & p = 4 // Check for string comparison. 104 then $( let w = vec Maxline 105 ReadString (w) 106 A := CompareStrings (v, w) 107 $) 108 or B := ReadExp (p, v) 109 String := false 110 111 A := valof switchon Op into // Apply the operator. 112 $( case '|': resultis A | B 113 case '=_': resultis A eqv B 114 case '&': resultis A & B 115 case '=': resultis A = B 116 case '<': resultis A < B 117 case '>': resultis A > B 118 case '/=': resultis A ne B 119 case '<_': resultis A le B 120 case '>_': resultis A ge B 121 case '+': resultis A + B 122 case '-': resultis A - B 123 case '**':resultis A * B 124 case '/': resultis B = 0 -> 0, A / B 125 case '\': resultis B = 0 -> 0, A rem B 126 $) 127 $) // Repeat until done. 128 129 resultis A 130 $) 131 and Skip () be // Skip over current character and following blank space. 132 Nrx := Nrx + 1 repeatwhile Rawchar!Nrx = '*s' & Nrx < Nr 133 and ReadParam (P) = valof // Read parameter where leading + or - means add or subtract from current value. 134 $( ExpError := false 135 let v = vec Maxline 136 137 test Rawchar!Nrx = '+' // Adding. 138 then $( Skip () 139 P := P + ReadExp (4, v) 140 $) 141 or test Rawchar!Nrx = '-' // Subtracting. 142 then $( Skip () 143 P := P - ReadExp (4, v) 144 $) 145 or P := ReadExp (0, v) // Or just setting. 146 if ExpError | Nrx < Nr do Report ("Malformed expression") 147 resultis P 148 $) 149 and ReadString (w) be // Read string expression into vector. 150 $( let i, v = 0, vec Maxline 151 $( Nrx := Nrx + 1 152 let c = Rawchar!Nrx 153 test c = '**' // Escape convention. 154 then $( Nrx := Nrx + 1 155 c := valof switchon Rawchar!Nrx into 156 $( case 'n': resultis '*n' 157 case 't': resultis '*t' 158 case 's': resultis '*s' 159 case 'b': resultis '*b' 160 case 'c': c := 0 161 for i = 1 to 3 do 162 $( unless '0' le Rawchar!(Nrx + 1) le '9' break 163 Nrx := Nrx + 1 164 c := c * 10 + Rawchar!Nrx - '0' 165 $) 166 resultis c & $8177 167 default: resultis Rawchar!Nrx 168 $) 169 $) 170 or if c = '"' do // End of string. 171 $( Skip () 172 while Nrx < Nr & Rawchar!Nrx = '(' do i := SubscriptString (v, i) 173 if Nrx < Nr & Rawchar!Nrx = '"' loop 174 break 175 $) 176 i := i + 1 177 v!i := c 178 $) repeatwhile Nrx < Nr // Gather characters of string until end of line. 179 180 v!0 := i 181 Packstring (v, w) 182 $) 183 and GetString () = valof // Read string and store in new vector. 184 $( let v = vec Maxline 185 ExpError := false 186 ReadString (v) 187 if ExpError | Nrx < Nr do Report ("Malformed string expression") 188 resultis StoreString (v) 189 $) 190 and SubscriptString (v, i) = valof // Take substring, read subscript expression. 191 $( Skip () 192 let w = vec Maxline 193 let a = MinI (ReadExp (4, w), i + 1) // Character index for beginning of substring. 194 if a < 0 do a := a + i + 1 // Negative first indicates offset from end. 195 if a le 0 do a := 1 196 let b = i - a + 1 197 if Rawchar!Nrx = ',' do 198 $( Skip () // Second operand, length of substring. 199 b := MinI (ReadExp (4, w), b) 200 if b < 0 do b := MaxI (b + i - a + 2, 0) 201 $) 202 if Rawchar!Nrx ne ')' do 203 $( ExpError := true 204 resultis i 205 $) 206 for i = 1 to b do v!i := v!(a + i - 1) // Take the indicated substring. 207 Skip () 208 resultis b 209 $) CAE time 5.8, 104 source lines per second. cross reference table A runoff_mr8: 47, 53, 57, 91, 106, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 129 a runoff_mr8: 193, 194, 194, 194, 195, 195, 196, 200, 206 AbsI head: 11 AbsR head: 12 Ad runoff_head: 130 Again runoff_head: 131 Allocate head: 64 Append head: 136 ArgIndex head: 121 B runoff_mr8: 102, 108, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 124, 125, 125 b runoff_mr8: 25, 27, 28, 196, 199, 199, 200, 200, 200, 206, 208 Bcall head: 54 BCPLaddr head: 108 Blank runoff_head: 35 Break runoff_head: 36 ByteBits runoff_head: 243, runoff_mr8: 36, 75, 75 ByteSize head: 127 c runoff_mr8: 152, 153, 155, 160, 164, 164, 166, 170, 177 Ce runoff_head: 132 Ch head: 118 Char runoff_head: 133 CharsTable runoff_head: 134 Charsw runoff_head: 135 CharToString head: 37 Check_ref runoff_head: 38 ChStream runoff_head: 136 Close head: 69 CompareStrings head: 27, runoff_mr8: 106 Complain head: 107 Concatenate head: 28 ConcatenateArgs head: 104 CONSOLE head: 117 Console head: 134 ConsoleReadline runoff_head: 40 Control runoff_head: 41 Conv runoff_head: 137 ConvertFtoS head: 46 ConvertNtoS head: 45, runoff_head: 19 ConvertStoN head: 44 CopyString head: 25 CountSize head: 128 DeleteTempSeg head: 91 Device runoff_head: 139 DeviceTable runoff_head: 140 Ef runoff_head: 141 Eh runoff_head: 142 Eject runoff_head: 47 Endofstreamch head: 130 EntryName head: 135 Eq runoff_head: 143 Eqcnt runoff_head: 144 EqualString head: 26 Errcode head: 120 ErrorfilePointer runoff_head: 145 Errorstream runoff_head: 146 ErrorTempID runoff_head: 148 ExecuteCommand runoff_head: 49 ExpandPathname head: 84 ExpError runoff_head: 149, runoff_mr8: 43, 56, 67, 134, 146, 185, 187, 203 Exponential head: 20 ExtraMargin runoff_head: 150 Fc runoff_head: 151 Fd runoff_head: 152 Fi runoff_head: 153 FileName runoff_head: 154 Filesw runoff_head: 155 FillTrTable runoff_head: 50 Findadr head: 65 Findent runoff_head: 157 FindInput runoff_head: 51 FindSegment head: 87 Fl runoff_head: 158 Flp runoff_head: 159 Flushinput head: 77 Foot runoff_head: 160 Footbuf runoff_head: 161 FootList runoff_head: 162 FootListBase runoff_head: 163 FootRef runoff_head: 164 Foot_begin runoff_head: 53 Foot_end runoff_head: 54 Format head: 74 FormatString head: 75 FormDate head: 49, runoff_head: 24 Fp runoff_head: 166 Fr runoff_head: 167 Freeheads runoff_head: 55 Freevec head: 63, runoff_head: 21 From runoff_head: 168 Ft runoff_head: 169 Fth runoff_head: 170 Fundent runoff_head: 171 GetCpuUsage head: 96 Gethead runoff_head: 57 GetNextCommandArg head: 106 GetPathname head: 89 GetString runoff_head: 59, runoff_mr8: 183 Hyphenating runoff_head: 172 i runoff_mr8: 36, 36, 150, 161, 172, 172, 176, 176, 177, 180, 190, 193, 194, 196, 200, 204, 206, 206, 206 In runoff_head: 173 Index head: 34 IndexCh head: 35 InitializeSymbolTree runoff_head: 61 INPUT head: 116 InputFileName runoff_head: 175 InputLines runoff_head: 176 InputStack runoff_head: 177 InsertEscapes head: 48 InsertFile runoff_head: 62 IOstatus head: 120 IpowerI head: 14 ItoR head: 43 ITS head: 109 JoinPathname head: 85 JumpLine runoff_head: 178 Left head: 129 Length head: 31, runoff_mr8: 36, 91 LengthInWords head: 33 Level head: 53 LinesLeft runoff_head: 179 LIno runoff_head: 180 Ll runoff_head: 181 LL_ runoff_head: 249 Logarithm head: 19 Longjump head: 52 Lp runoff_head: 182 Ma1 runoff_head: 184 MA1_ runoff_head: 251 Ma2 runoff_head: 185 MA2_ runoff_head: 252 Ma3 runoff_head: 186 MA3_ runoff_head: 253 Ma4 runoff_head: 187 MA4_ runoff_head: 254 Machine head: 125 MakeBcplString head: 39 MakeN runoff_mr8: 34, 65 MakePl1String head: 38 MakeSegment head: 88 MakeTempSeg head: 90 MaxDepth runoff_head: 247 Maxheads runoff_head: 246 MaxI head: 7, runoff_head: 23, runoff_mr8: 200 Maxline runoff_head: 245, runoff_mr8: 104, 135, 150, 184, 192 MaxR head: 8 MinI head: 9, runoff_head: 22, runoff_mr8: 193, 199 MinR head: 10 MONITOR head: 117 Move head: 56 MoveBits head: 57 Ms runoff_head: 188 MultiplePagecount runoff_head: 189 MultiSegmentFile head: 137 n runoff_mr8: 26, 28, 28, 32, 40, 98 Nc runoff_head: 190 Need runoff_head: 64 NeedSS runoff_head: 65 NestingDepth runoff_head: 191 Newline runoff_head: 66 NewNrx runoff_mr8: 73, 76, 76, 92, 100 Newvec head: 62, runoff_head: 20 NewvecCleanup head: 61 NewvecInit head: 60 Nl runoff_head: 193 NNp runoff_head: 194 NoControl runoff_head: 195 NoFill runoff_head: 196 NoFtNo runoff_head: 197 NoPaging runoff_head: 198 Np runoff_head: 199 Nr runoff_head: 200, runoff_mr8: 27, 31, 42, 71, 132, 146, 172, 173, 178, 187 Nrx runoff_head: 202, runoff_mr8: 27, 27, 28, 29, 29, 31, 31, 31, 31, 42, 47, 54, 71, 72, 73, 74, 75, 92, 100, 103, 132, 132, 132, 132, 137, 141, 146, 151, 151, 152, 154, 154, 155, 162, 163, 163, 164, 167, 172, 172, 173, 173, 178, 187, 197, 202 Null head: 131 NumbArgs head: 59 Nx_close runoff_head: 68 Nx_open runoff_head: 69 Nx_reset runoff_head: 70 OddPage runoff_head: 203 Of runoff_head: 204 Oh runoff_head: 205 Op runoff_mr8: 72, 75, 75, 79, 111 Open head: 68 OptCallOut head: 144 OptConvert head: 143 OptGetNext head: 142 OptionParse head: 105 OptNegatable head: 140 OptNegate head: 141 OUTPUT head: 116 Output runoff_head: 206 P runoff_mr8: 133, 139, 139, 143, 143, 145, 147 p runoff_mr8: 79, 98, 103, 108 Packstring head: 23, runoff_head: 14, runoff_mr8: 181 PadLeft runoff_head: 207 Parameter runoff_head: 208 Passes runoff_head: 209 PathName head: 135 Pi runoff_head: 211 Pl runoff_head: 212 Pl1ArgPtr head: 100 Pl1ArgString head: 102 Pl1Call head: 55 Pl1Descriptor head: 101 Pl1NumbArgs head: 99 Pl1ReturnString head: 103 PL_ runoff_head: 250 Pointer head: 134 Print runoff_head: 213 PrinterIndent runoff_head: 73 Printersw runoff_head: 214 PrintFootnotes runoff_head: 74 PrintLineNumbers runoff_head: 215 ProgramID head: 119 RandomI head: 17 RandomR head: 18 Rawchar runoff_head: 216, runoff_mr8: 27, 28, 31, 47, 54, 72, 74, 75, 103, 132, 137, 141, 152, 155, 162, 164, 167, 172, 173, 197, 202 RawClockTime head: 94 Read head: 136 Readch head: 70 ReadExp runoff_head: 77, runoff_mr8: 40, 49, 51, 53, 108, 139, 143, 145, 193, 199 Readhead runoff_head: 76 Readline runoff_head: 75 ReadName runoff_head: 78 ReadNumber runoff_head: 79, runoff_mr8: 25, 60, 62 ReadParam runoff_head: 80, runoff_mr8: 133 ReadString runoff_head: 81, runoff_mr8: 64, 105, 149, 186 RemoveEscapes head: 47 Report runoff_head: 82, runoff_mr8: 146, 187 ResetStream head: 78 RevertHandler head: 112 Right head: 129 Roff runoff_head: 83 RoffProcess runoff_head: 84 Roman runoff_head: 217 RpowerI head: 15 RpowerR head: 16 RtoI head: 42 SavedCc runoff_head: 218 ScanChar head: 58 SearchName head: 135 Selsw runoff_head: 220 SetBitCount head: 93 SetCharsw runoff_head: 88 SetDevice runoff_head: 90 SetHandler head: 111 Sethead runoff_head: 91 SetLength head: 32 SetLinesLeft runoff_head: 92 SetOverflowMask head: 110 SetPaging runoff_head: 94 SetSwitches runoff_head: 95 Set_ref runoff_head: 98 Skip runoff_head: 244, runoff_mr8: 48, 50, 52, 55, 61, 93, 101, 131, 138, 142, 171, 191, 198, 207 Skiptolabel runoff_head: 100 Spacing runoff_head: 101 Spec_char runoff_head: 221 SplitPathname head: 86 SquareRoot head: 13 Start runoff_head: 222 Stopsw runoff_head: 223 StoreArabic runoff_head: 104 StoreDate runoff_head: 106 StoreRoman runoff_head: 107 StoreString runoff_head: 108, runoff_mr8: 188 StreamLength head: 80 StreamName head: 134 StreamOffset head: 79 StreamPointer head: 81 String runoff_mr8: 46, 63, 90, 94, 103, 109 StringToChar head: 36 Subch head: 30, runoff_mr8: 36 SubscriptString runoff_mr8: 172, 190 Substr head: 29 Temp runoff_head: 224 Tempc runoff_head: 225 Terminate head: 92 Text runoff_head: 111 TextRef runoff_head: 226 TimeNow runoff_head: 227 TimeToSeconds head: 95 Title runoff_head: 112 To runoff_head: 229 TreeRoot runoff_head: 231 TrTable runoff_head: 230 Typeout runoff_head: 115 Un runoff_head: 232 Unpackstring head: 24, runoff_head: 15 UpdateSymbol runoff_head: 117 Use_ref runoff_head: 118 v runoff_mr8: 34, 36, 36, 40, 49, 51, 53, 64, 65, 91, 106, 108, 135, 139, 143, 145, 150, 172, 177, 180, 181, 184, 186, 188, 190, 206, 206 w runoff_mr8: 104, 105, 106, 149, 181, 192, 193, 199 Wait runoff_head: 119 Waitsw runoff_head: 233 Width runoff_head: 120 WordSize head: 126 WrCh runoff_head: 121 WrChInit runoff_head: 122 Write head: 136 Writech head: 71, runoff_head: 16 WriteChar runoff_head: 123 WriteN head: 73, runoff_head: 18 Writeout head: 76 WriteS head: 72, runoff_head: 17 x runoff_mr8: 35, 36, 36, 37 Trans time 1.5, 728 object words per second. " Begin text of MakeN aa 000000 000005 115141 zero 5,39521 " MakeN aa 000001 153145 116000 zero 54885,39936 L2: aa 000002 000000 213000 34 epaq 0 " set lp to linkage section aa 000003 700026 764161 lprplp sb|22,*au aa 000004 200000 021100 adlx1 bp|0 " BCPL save aa 000005 700000 542111 sprpbp sb|0,x1 aa 000006 700001 544111 sprplp sb|1,x1 aa 000007 700423 620111 eax0 sb|275,x1 aa 000010 777760 360003 anx0 -16,du aa 000011 700025 740100 stx0 sb|21 " end of save sequence aa 000012 700004 450111 35 stz sb|4,x1 " x aa 000013 000001 236007 36 ldq 1,dl " 1 aa 000014 700005 756111 stq sb|5,x1 " i aa 000015 700002 236111 ldq sb|2,x1 " v aa 000016 700016 756111 stq sb|14,x1 4a 000017 400026 272120 tsbbp lp|L6,* " Length aa 000020 000014 000001 zero 12,1 aa 000021 700006 756111 stq sb|6,x1 aa 000022 000015 710004 tra L7 L8: aa 000023 700002 236111 ldq sb|2,x1 " v aa 000024 700016 756111 stq sb|14,x1 aa 000025 700005 236111 ldq sb|5,x1 " i aa 000026 700017 756111 stq sb|15,x1 4a 000027 400024 272120 tsbbp lp|L9,* " Subch aa 000030 000014 000002 zero 12,2 aa 000031 700004 235111 lda sb|4,x1 " x aa 000032 000011 735000 als 9 aa 000033 600000 755100 sta sp|0 aa 000034 600000 276100 orq sp|0 aa 000035 700004 756111 stq sb|4,x1 " x aa 000036 700005 054111 aos sb|5,x1 " i L7: aa 000037 700005 236111 ldq sb|5,x1 " i aa 000040 700006 116111 cmpq sb|6,x1 aa 000041 777762 604404 tmoz L8 aa 000042 700004 235111 37 lda sb|4,x1 " x L5: aa 000043 700004 755111 sta sb|4,x1 aa 000044 700004 235111 lda sb|4,x1 aa 000045 000044 777000 llr 36 " exchange A and Q aa 000046 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000047 200000 121100 sblx1 bp|0 aa 000050 700001 764111 lprplp sb|1,x1 aa 000051 200001 710100 tra bp|1 " end of return sequence " Begin text of ReadNumber aa 000052 000012 122145 zero 10,42085 " ReadNumber aa 000053 141144 116165 zero 49764,40053 aa 000054 155142 145162 zero 55906,51826 aa 000055 700003 756111 25 stq sb|3,x1 " temporary L1: aa 000056 000000 213000 epaq 0 " set lp to linkage section aa 000057 700026 764161 lprplp sb|22,*au aa 000060 200000 021100 adlx1 bp|0 " BCPL save aa 000061 700000 542111 sprpbp sb|0,x1 aa 000062 700001 544111 sprplp sb|1,x1 aa 000063 700417 620111 eax0 sb|271,x1 aa 000064 777760 360003 anx0 -16,du aa 000065 700025 740100 stx0 sb|21 " end of save sequence aa 000066 700004 450111 26 stz sb|4,x1 " n aa 000067 000011 710004 27 tra L13 L14: aa 000070 700004 236111 28 ldq sb|4,x1 " n aa 000071 700002 402111 mpy sb|2,x1 " b aa 000072 600264 722100 lxl2 sp|180 " Nrx aa 000073 600303 760100 lprpap sp|195 " Rawchar aa 000074 000000 076112 adq ap|0,x2 aa 000075 000060 176007 sbq 48,dl " '0' aa 000076 700004 756111 stq sb|4,x1 " n aa 000077 600264 054100 29 aos sp|180 " Nrx L13: aa 000100 600264 723100 lxl3 sp|180 " Nrx aa 000101 600303 762100 lprpbp sp|195 " Rawchar aa 000102 200000 236113 ldq bp|0,x3 aa 000103 000060 176007 sbq 48,dl " '0' aa 000104 700005 756111 stq sb|5,x1 aa 000105 700005 234111 szn sb|5,x1 aa 000106 000007 604004 tmi L15 aa 000107 700005 236111 ldq sb|5,x1 aa 000110 700002 116111 cmpq sb|2,x1 " b aa 000111 000004 605004 tpl L15 aa 000112 600264 235100 lda sp|180 " Nrx aa 000113 600261 115100 cmpa sp|177 " Nr aa 000114 777754 604004 tmi L14 L15: aa 000115 000002 710004 31 tra L16 L17: aa 000116 600264 054100 aos sp|180 " Nrx L16: aa 000117 600264 724100 lxl4 sp|180 " Nrx aa 000120 600303 761100 lprpab sp|195 " Rawchar aa 000121 100000 236114 ldq ab|0,x4 aa 000122 000040 116007 cmpq 32,dl " '*s' aa 000123 000004 601004 tnz L18 aa 000124 600264 235100 lda sp|180 " Nrx aa 000125 600261 115100 cmpa sp|177 " Nr aa 000126 777770 604004 tmi L17 L18: aa 000127 700004 236111 32 ldq sb|4,x1 " n L12: aa 000130 700004 756111 stq sb|4,x1 aa 000131 700004 236111 ldq sb|4,x1 aa 000132 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000133 200000 121100 sblx1 bp|0 aa 000134 700001 764111 lprplp sb|1,x1 aa 000135 200001 710100 tra bp|1 " end of return sequence " Begin text of ReadExp aa 000136 000007 122145 zero 7,42085 " ReadExp aa 000137 141144 105170 zero 49764,35448 aa 000140 160000 000000 zero 57344 aa 000141 700003 756111 40 stq sb|3,x1 " temporary L19: aa 000142 000000 213000 epaq 0 " set lp to linkage section aa 000143 700026 764161 lprplp sb|22,*au aa 000144 200000 021100 adlx1 bp|0 " BCPL save aa 000145 700000 542111 sprpbp sb|0,x1 aa 000146 700001 544111 sprplp sb|1,x1 aa 000147 700663 620111 eax0 sb|435,x1 aa 000150 777760 360003 anx0 -16,du aa 000151 700025 740100 stx0 sb|21 " end of save sequence aa 000152 600264 236100 42 ldq sp|180 " Nrx aa 000153 600261 116100 cmpq sp|177 " Nr aa 000154 000005 604004 tmi L28 aa 000155 000001 335007 43 lca 1,dl " true aa 000156 600171 755100 sta sp|121 " ExpError aa 000157 000000 235007 44 lda 0,dl " 0 aa 000160 000604 710004 tra L27 L28: aa 000161 700005 450111 46 stz sb|5,x1 " String aa 000162 000104 710004 48 tra L31 L32: aa 000163 000616 272004 tsbbp L20+2 " Skip aa 000164 000640 000000 zero 416 aa 000165 000003 236007 49 ldq 3,dl " 3 aa 000166 700642 756111 stq sb|418,x1 aa 000167 700003 236111 ldq sb|3,x1 " v aa 000170 700643 756111 stq sb|419,x1 aa 000171 777753 272004 tsbbp L19+2 " ReadExp aa 000172 000640 000002 zero 416,2 aa 000173 000601 676004 erq L33 " true aa 000174 000121 710004 50 tra L29 L34: aa 000175 000604 272004 tsbbp L20+2 " Skip aa 000176 000640 000000 zero 416 aa 000177 000005 236007 51 ldq 5,dl " 5 aa 000200 700642 756111 stq sb|418,x1 aa 000201 700003 236111 ldq sb|3,x1 " v aa 000202 700643 756111 stq sb|419,x1 aa 000203 777741 272004 tsbbp L19+2 " ReadExp aa 000204 000640 000002 zero 416,2 aa 000205 000000 533007 negl 0,dl aa 000206 000107 710004 52 tra L29 L35: aa 000207 000572 272004 tsbbp L20+2 " Skip aa 000210 000640 000000 zero 416 aa 000211 700642 450111 53 stz sb|418,x1 aa 000212 700003 236111 ldq sb|3,x1 " v aa 000213 700643 756111 stq sb|419,x1 aa 000214 777730 272004 tsbbp L19+2 " ReadExp aa 000215 000640 000002 zero 416,2 aa 000216 700006 756111 stq sb|6,x1 " A aa 000217 600264 725100 54 lxl5 sp|180 " Nrx aa 000220 600303 763100 lprpbb sp|195 " Rawchar aa 000221 300000 236115 ldq bb|0,x5 aa 000222 000051 116007 cmpq 41,dl " ')' aa 000223 000004 601004 tnz L36 aa 000224 000555 272004 55 tsbbp L20+2 " Skip aa 000225 000640 000000 zero 416 aa 000226 000003 710004 tra L37 L36: aa 000227 000001 335007 56 lca 1,dl " true aa 000230 600171 755100 sta sp|121 " ExpError L37: aa 000231 700006 236111 57 ldq sb|6,x1 " A aa 000232 000063 710004 58 tra L29 L38: aa 000233 000012 235007 60 lda 10,dl " 10 aa 000234 700642 755111 sta sb|418,x1 aa 000235 777623 272004 tsbbp L1+2 " ReadNumber aa 000236 000640 000001 zero 416,1 aa 000237 000056 710004 61 tra L29 L39: aa 000240 000541 272004 tsbbp L20+2 " Skip aa 000241 000640 000000 zero 416 aa 000242 000010 236007 62 ldq 8,dl " 8 aa 000243 700642 756111 stq sb|418,x1 aa 000244 777614 272004 tsbbp L1+2 " ReadNumber aa 000245 000640 000001 zero 416,1 aa 000246 000047 710004 63 tra L29 L40: aa 000247 000001 336007 lcq 1,dl " true aa 000250 700005 756111 stq sb|5,x1 " String aa 000251 700003 236111 64 ldq sb|3,x1 " v aa 000252 700642 756111 stq sb|418,x1 aa 000253 000671 272004 tsbbp L22+2 " ReadString aa 000254 000640 000001 zero 416,1 aa 000255 700003 236111 65 ldq sb|3,x1 " v aa 000256 700642 756111 stq sb|418,x1 aa 000257 777525 272004 tsbbp L2+2 " MakeN aa 000260 000640 000001 zero 416,1 aa 000261 000034 710004 67 tra L29 L41: aa 000262 000001 336007 lcq 1,dl " true aa 000263 600171 756100 stq sp|121 " ExpError aa 000264 000000 236007 68 ldq 0,dl " 0 aa 000265 000030 710004 tra L29 L31: " Begin switchon aa 000266 600264 726100 lxl6 sp|180 " Nrx aa 000267 600303 765100 lprplb sp|195 " Rawchar aa 000270 500000 235116 lda lb|0,x6 aa 000271 000060 115007 cmpa 48,dl aa 000272 000006 604004 tmi L42 aa 000273 000072 115007 cmpa 58,dl aa 000274 777737 604004 tmi L38 aa 000275 000136 115007 cmpa 94,dl aa 000276 777665 600004 tze L32 aa 000277 777763 710004 tra L41 L42: aa 000300 000043 773000 lrl 35 aa 000301 000004 507007 dvf 4,dl " hash table size 0a 000302 000311 115006 cmpa L43,ql aa 000303 777757 601004 tnz L41 0a 000304 000305 710006 tra L44,ql L44: aa 000305 777702 710004 tra L35 aa 000306 777667 710004 tra L34 aa 000307 777740 710004 tra L40 aa 000310 777730 710004 tra L39 L43: aa 000311 000000 000012 zero 0,10 aa 000312 000000 000013 zero 0,11 aa 000313 000000 000010 zero 0,8 aa 000314 000000 000010 zero 0,8 L30: L29: aa 000315 700007 756111 stq sb|7,x1 aa 000316 700007 236111 ldq sb|7,x1 aa 000317 700006 756111 stq sb|6,x1 " A aa 000320 000440 710004 71 tra L45 L46: aa 000321 600264 722100 72 lxl2 sp|180 " Nrx aa 000322 600303 760100 lprpap sp|195 " Rawchar aa 000323 000000 236112 ldq ap|0,x2 aa 000324 700007 756111 stq sb|7,x1 " Op aa 000325 600264 236100 73 ldq sp|180 " Nrx aa 000326 700010 756111 stq sb|8,x1 " NewNrx aa 000327 600264 236100 74 ldq sp|180 " Nrx aa 000330 000001 076007 adq 1,dl " 1 aa 000331 600303 762100 lprpbp sp|195 " Rawchar aa 000332 200000 235106 lda bp|0,ql aa 000333 000010 115007 cmpa 8,dl " '*b' aa 000334 000014 601004 tnz L47 aa 000335 600264 236100 75 ldq sp|180 " Nrx aa 000336 000002 076007 adq 2,dl " 2 aa 000337 700007 235111 lda sb|7,x1 " Op aa 000340 000011 735000 als 9 aa 000341 000010 275007 ora 8,dl " '*b' aa 000342 000011 735000 als 9 aa 000343 600303 761100 lprpab sp|195 " Rawchar aa 000344 100000 275106 ora ab|0,ql aa 000345 700007 755111 sta sb|7,x1 " Op aa 000346 000002 236007 76 ldq 2,dl " 2 aa 000347 700010 056111 asq sb|8,x1 " NewNrx L47: aa 000350 000031 710004 80 tra L50 L51: aa 000351 000002 236007 81 ldq 2,dl " 2 aa 000352 000125 710004 82 tra L48 L52: aa 000353 000003 236007 ldq 3,dl " 3 aa 000354 000123 710004 83 tra L48 L53: aa 000355 000004 236007 85 ldq 4,dl " 4 aa 000356 000121 710004 86 tra L48 L54: aa 000357 000005 236007 87 ldq 5,dl " 5 aa 000360 000117 710004 88 tra L48 L55: aa 000361 000006 236007 89 ldq 6,dl " 6 aa 000362 000115 710004 90 tra L48 L56: aa 000363 700005 234111 szn sb|5,x1 " String aa 000364 000377 600004 tze L57 aa 000365 700003 235111 91 lda sb|3,x1 " v aa 000366 700642 755111 sta sb|418,x1 4a 000367 400026 272120 tsbbp lp|L6,* " Length aa 000370 000640 000001 zero 416,1 aa 000371 700006 756111 stq sb|6,x1 " A aa 000372 700010 236111 92 ldq sb|8,x1 " NewNrx aa 000373 600264 756100 stq sp|180 " Nrx aa 000374 000405 272004 93 tsbbp L20+2 " Skip aa 000375 000640 000000 zero 416 aa 000376 700005 450111 94 stz sb|5,x1 " String aa 000377 000361 710004 96 tra L45 L58: aa 000400 000363 710004 tra L57 L50: " Begin switchon aa 000401 700007 235111 lda sb|7,x1 " Op aa 000402 000043 773000 lrl 35 aa 000403 000034 507007 dvf 28,dl " hash table size 0a 000404 000443 115006 cmpa L59,ql aa 000405 777773 601004 tnz L58 0a 000406 000407 710006 tra L60,ql L60: aa 000407 777771 710004 tra L58 aa 000410 777770 710004 tra L58 aa 000411 777767 710004 tra L58 aa 000412 777737 710004 tra L51 aa 000413 777742 710004 tra L53 aa 000414 777741 710004 tra L53 aa 000415 777740 710004 tra L53 aa 000416 777745 710004 tra L56 aa 000417 777742 710004 tra L55 aa 000420 777760 710004 tra L58 aa 000421 777732 710004 tra L52 aa 000422 777733 710004 tra L53 aa 000423 777726 710004 tra L51 aa 000424 777754 710004 tra L58 aa 000425 777734 710004 tra L55 aa 000426 777731 710004 tra L54 aa 000427 777751 710004 tra L58 aa 000430 777727 710004 tra L54 aa 000431 777747 710004 tra L58 aa 000432 777727 710004 tra L55 aa 000433 777745 710004 tra L58 aa 000434 777744 710004 tra L58 aa 000435 777743 710004 tra L58 aa 000436 777717 710004 tra L53 aa 000437 777741 710004 tra L58 aa 000440 777715 710004 tra L53 aa 000441 777737 710004 tra L58 aa 000442 777736 710004 tra L58 L59: aa 000443 000000 000000 zero 0 aa 000444 000000 000000 zero 0 aa 000445 000000 000000 zero 0 aa 000446 000002 133561 zero 2,46961 aa 000447 000000 000002 zero 0,2 aa 000450 000000 000002 zero 0,2 aa 000451 000000 000002 zero 0,2 aa 000452 000000 000001 zero 0,1 aa 000453 000000 000003 zero 0,3 aa 000454 000000 000000 zero 0 aa 000455 000000 000001 zero 0,1 aa 000456 000002 156003 zero 2,56323 aa 000457 000000 000004 zero 0,4 aa 000460 000000 000000 zero 0 aa 000461 000000 000001 zero 0,1 aa 000462 000000 000001 zero 0,1 aa 000463 000000 000000 zero 0 aa 000464 000000 000001 zero 0,1 aa 000465 000000 000000 zero 0 aa 000466 000000 000001 zero 0,1 aa 000467 000000 000000 zero 0 aa 000470 000000 000000 zero 0 aa 000471 000000 000000 zero 0 aa 000472 000002 111336 zero 2,37598 aa 000473 000000 000000 zero 0 aa 000474 000001 533557 zero 1,-84113 aa 000475 000000 000000 zero 0 aa 000476 000000 000000 zero 0 L49: L48: aa 000477 700012 756111 stq sb|10,x1 aa 000500 700012 236111 ldq sb|10,x1 aa 000501 700011 756111 stq sb|9,x1 " p aa 000502 700011 236111 98 ldq sb|9,x1 " p aa 000503 700002 116111 cmpq sb|2,x1 " n aa 000504 000257 604404 tmoz L57 aa 000505 700010 235111 100 lda sb|8,x1 " NewNrx aa 000506 600264 755100 sta sp|180 " Nrx aa 000507 000272 272004 101 tsbbp L20+2 " Skip aa 000510 000640 000000 zero 416 aa 000511 700012 450111 102 stz sb|10,x1 " B aa 000512 700005 234111 103 szn sb|5,x1 " String aa 000513 000027 600004 tze L61 aa 000514 600264 723100 lxl3 sp|180 " Nrx aa 000515 600303 763100 lprpbb sp|195 " Rawchar aa 000516 300000 235113 lda bb|0,x3 aa 000517 000042 115007 cmpa 34,dl " '"' aa 000520 000022 601004 tnz L61 aa 000521 700011 236111 ldq sb|9,x1 " p aa 000522 000004 116007 cmpq 4,dl " 4 aa 000523 000017 601004 tnz L61 aa 000524 700016 371511 104 eaplb sb|14,x1 " a vector aa 000525 700013 545111 sprplb sb|11,x1 " w aa 000526 700013 235111 105 lda sb|11,x1 " w aa 000527 700642 755111 sta sb|418,x1 aa 000530 000414 272004 tsbbp L22+2 " ReadString aa 000531 000640 000001 zero 416,1 aa 000532 700003 235111 106 lda sb|3,x1 " v aa 000533 700642 755111 sta sb|418,x1 aa 000534 700013 235111 lda sb|11,x1 " w aa 000535 700643 755111 sta sb|419,x1 4a 000536 400022 272120 tsbbp lp|L63,* " CompareStrings aa 000537 000640 000002 zero 416,2 aa 000540 700006 756111 stq sb|6,x1 " A aa 000541 000010 710004 tra L62 L61: aa 000542 700011 236111 108 ldq sb|9,x1 " p aa 000543 700642 756111 stq sb|418,x1 aa 000544 700003 236111 ldq sb|3,x1 " v aa 000545 700643 756111 stq sb|419,x1 aa 000546 777376 272004 tsbbp L19+2 " ReadExp aa 000547 000640 000002 zero 416,2 aa 000550 700012 756111 stq sb|10,x1 " B L62: aa 000551 700005 450111 109 stz sb|5,x1 " String aa 000552 000143 710004 112 tra L66 L67: aa 000553 700006 236111 ldq sb|6,x1 " A aa 000554 700012 276111 orq sb|10,x1 " B aa 000555 000200 710004 113 tra L64 L68: aa 000556 700006 236111 ldq sb|6,x1 " A aa 000557 700012 676111 erq sb|10,x1 " B aa 000560 000214 676004 erq L33 " true aa 000561 000174 710004 114 tra L64 L69: aa 000562 700006 236111 ldq sb|6,x1 " A aa 000563 700012 376111 anq sb|10,x1 " B aa 000564 000171 710004 115 tra L64 L70: aa 000565 700006 236111 ldq sb|6,x1 " A aa 000566 700012 116111 cmpq sb|10,x1 " B aa 000567 000003 601004 tnz L71 aa 000570 000001 335007 lca 1,dl " true aa 000571 000002 710004 tra L72 L71: aa 000572 000000 235007 lda 0,dl " false L72: aa 000573 700014 755111 sta sb|12,x1 aa 000574 700014 235111 lda sb|12,x1 aa 000575 000044 777000 llr 36 " exchange A and Q aa 000576 000157 710004 116 tra L64 L73: aa 000577 700006 236111 ldq sb|6,x1 " A aa 000600 700012 116111 cmpq sb|10,x1 " B aa 000601 000003 605004 tpl L74 aa 000602 000001 335007 lca 1,dl " true aa 000603 000002 710004 tra L75 L74: aa 000604 000000 235007 lda 0,dl " false L75: aa 000605 700014 755111 sta sb|12,x1 aa 000606 700014 235111 lda sb|12,x1 aa 000607 000044 777000 llr 36 " exchange A and Q aa 000610 000145 710004 117 tra L64 L76: aa 000611 700006 236111 ldq sb|6,x1 " A aa 000612 700012 116111 cmpq sb|10,x1 " B aa 000613 000003 604404 tmoz L77 aa 000614 000001 335007 lca 1,dl " true aa 000615 000002 710004 tra L78 L77: aa 000616 000000 235007 lda 0,dl " false L78: aa 000617 700014 755111 sta sb|12,x1 aa 000620 700014 235111 lda sb|12,x1 aa 000621 000044 777000 llr 36 " exchange A and Q aa 000622 000133 710004 118 tra L64 L79: aa 000623 700006 236111 ldq sb|6,x1 " A aa 000624 700012 116111 cmpq sb|10,x1 " B aa 000625 000003 600004 tze L80 aa 000626 000001 335007 lca 1,dl " true aa 000627 000002 710004 tra L81 L80: aa 000630 000000 235007 lda 0,dl " false L81: aa 000631 700014 755111 sta sb|12,x1 aa 000632 700014 235111 lda sb|12,x1 aa 000633 000044 777000 llr 36 " exchange A and Q aa 000634 000121 710004 119 tra L64 L82: aa 000635 700006 236111 ldq sb|6,x1 " A aa 000636 700012 116111 cmpq sb|10,x1 " B aa 000637 000003 605404 tpnz L83 aa 000640 000001 335007 lca 1,dl " true aa 000641 000002 710004 tra L84 L83: aa 000642 000000 235007 lda 0,dl " false L84: aa 000643 700014 755111 sta sb|12,x1 aa 000644 700014 235111 lda sb|12,x1 aa 000645 000044 777000 llr 36 " exchange A and Q aa 000646 000107 710004 120 tra L64 L85: aa 000647 700006 236111 ldq sb|6,x1 " A aa 000650 700012 116111 cmpq sb|10,x1 " B aa 000651 000003 604004 tmi L86 aa 000652 000001 335007 lca 1,dl " true aa 000653 000002 710004 tra L87 L86: aa 000654 000000 235007 lda 0,dl " false L87: aa 000655 700014 755111 sta sb|12,x1 aa 000656 700014 235111 lda sb|12,x1 aa 000657 000044 777000 llr 36 " exchange A and Q aa 000660 000075 710004 121 tra L64 L88: aa 000661 700006 236111 ldq sb|6,x1 " A aa 000662 700012 076111 adq sb|10,x1 " B aa 000663 000072 710004 122 tra L64 L89: aa 000664 700006 236111 ldq sb|6,x1 " A aa 000665 700012 176111 sbq sb|10,x1 " B aa 000666 000067 710004 123 tra L64 L90: aa 000667 700006 236111 ldq sb|6,x1 " A aa 000670 700012 402111 mpy sb|10,x1 " B aa 000671 000064 710004 124 tra L64 L91: aa 000672 700012 234111 szn sb|10,x1 " B aa 000673 000003 601004 tnz L92 aa 000674 000000 236007 ldq 0,dl " 0 aa 000675 000003 710004 tra L93 L92: aa 000676 700006 236111 ldq sb|6,x1 " A aa 000677 700012 506111 div sb|10,x1 " B L93: aa 000700 700015 756111 stq sb|13,x1 aa 000701 700015 236111 ldq sb|13,x1 aa 000702 000053 710004 125 tra L64 L94: aa 000703 700012 234111 szn sb|10,x1 " B aa 000704 000003 601004 tnz L95 aa 000705 000000 236007 ldq 0,dl " 0 aa 000706 000004 710004 tra L96 L95: aa 000707 700006 236111 ldq sb|6,x1 " A aa 000710 700012 506111 div sb|10,x1 " B aa 000711 000044 777000 llr 36 " exchange A and Q L96: aa 000712 700015 756111 stq sb|13,x1 aa 000713 700015 236111 ldq sb|13,x1 aa 000714 000041 710004 tra L64 L66: " Begin switchon aa 000715 700007 235111 lda sb|7,x1 " Op aa 000716 000043 773000 lrl 35 aa 000717 000034 507007 dvf 28,dl " hash table size 0a 000720 000721 710006 tra L97,ql L97: aa 000721 000034 710004 tra L65 aa 000722 000033 710004 tra L65 aa 000723 000032 710004 tra L65 aa 000724 777632 710004 tra L68 aa 000725 777652 710004 tra L73 aa 000726 777637 710004 tra L70 aa 000727 777662 710004 tra L76 aa 000730 000025 710004 tra L65 aa 000731 777752 710004 tra L94 aa 000732 000023 710004 tra L65 aa 000733 777627 710004 tra L69 aa 000734 777713 710004 tra L85 aa 000735 777616 710004 tra L67 aa 000736 000017 710004 tra L65 aa 000737 777730 710004 tra L90 aa 000740 777721 710004 tra L88 aa 000741 000014 710004 tra L65 aa 000742 777722 710004 tra L89 aa 000743 000012 710004 tra L65 aa 000744 777726 710004 tra L91 aa 000745 000010 710004 tra L65 aa 000746 000007 710004 tra L65 aa 000747 000006 710004 tra L65 aa 000750 777665 710004 tra L82 aa 000751 000004 710004 tra L65 aa 000752 777651 710004 tra L79 aa 000753 000002 710004 tra L65 aa 000754 000001 710004 tra L65 L65: L64: aa 000755 700013 756111 stq sb|11,x1 aa 000756 700013 236111 ldq sb|11,x1 aa 000757 700006 756111 stq sb|6,x1 " A L45: aa 000760 600264 236100 ldq sp|180 " Nrx aa 000761 600261 116100 cmpq sp|177 " Nr aa 000762 777337 604004 tmi L46 L57: aa 000763 700006 235111 129 lda sb|6,x1 " A L27: aa 000764 700005 755111 sta sb|5,x1 aa 000765 700005 235111 lda sb|5,x1 aa 000766 000044 777000 llr 36 " exchange A and Q aa 000767 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000770 200000 121100 sblx1 bp|0 aa 000771 700001 764111 lprplp sb|1,x1 aa 000772 200001 710100 tra bp|1 " end of return sequence aa 000773 700004 756111 stq sb|4,x1 " temporary " Literal pool L33: aa 000774 777777 777777 zero -1,-1 " true " Begin text of Skip aa 000775 000004 123153 zero 4,42603 " Skip aa 000776 151160 000000 zero 53872 L20: aa 000777 000000 213000 131 epaq 0 " set lp to linkage section aa 001000 700026 764161 lprplp sb|22,*au aa 001001 200000 021100 adlx1 bp|0 " BCPL save aa 001002 700000 542111 sprpbp sb|0,x1 aa 001003 700001 544111 sprplp sb|1,x1 aa 001004 700417 620111 eax0 sb|271,x1 aa 001005 777760 360003 anx0 -16,du aa 001006 700025 740100 stx0 sb|21 " end of save sequence L101: aa 001007 600264 054100 132 aos sp|180 " Nrx aa 001010 600264 724100 lxl4 sp|180 " Nrx aa 001011 600303 765100 lprplb sp|195 " Rawchar aa 001012 500000 236114 ldq lb|0,x4 aa 001013 000040 116007 cmpq 32,dl " '*s' aa 001014 000004 601004 tnz L102 aa 001015 600264 235100 lda sp|180 " Nrx aa 001016 600261 115100 cmpa sp|177 " Nr aa 001017 777770 604004 tmi L101 L102: L100: aa 001020 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001021 200000 121100 sblx1 bp|0 aa 001022 700001 764111 lprplp sb|1,x1 aa 001023 200001 710100 tra bp|1 " end of return sequence " Begin text of ReadParam aa 001024 000011 122145 zero 9,42085 " ReadParam aa 001025 141144 120141 zero 49764,41057 aa 001026 162141 155000 zero 58465,55808 L21: aa 001027 000000 213000 133 epaq 0 " set lp to linkage section aa 001030 700026 764161 lprplp sb|22,*au aa 001031 200000 021100 adlx1 bp|0 " BCPL save aa 001032 700000 542111 sprpbp sb|0,x1 aa 001033 700001 544111 sprplp sb|1,x1 aa 001034 700653 620111 eax0 sb|427,x1 aa 001035 777760 360003 anx0 -16,du aa 001036 700025 740100 stx0 sb|21 " end of save sequence aa 001037 600171 450100 134 stz sp|121 " ExpError aa 001040 700006 350111 135 eapap sb|6,x1 " a vector aa 001041 700004 540111 sprpap sb|4,x1 " v aa 001042 600264 725100 137 lxl5 sp|180 " Nrx aa 001043 600303 760100 lprpap sp|195 " Rawchar aa 001044 000000 236115 ldq ap|0,x5 aa 001045 000053 116007 cmpq 43,dl " '+' aa 001046 000013 601004 tnz L106 aa 001047 777732 272004 138 tsbbp L20+2 " Skip aa 001050 000630 000000 zero 408 aa 001051 000004 235007 139 lda 4,dl " 4 aa 001052 700632 755111 sta sb|410,x1 aa 001053 700004 235111 lda sb|4,x1 " v aa 001054 700633 755111 sta sb|411,x1 aa 001055 777067 272004 tsbbp L19+2 " ReadExp aa 001056 000630 000002 zero 408,2 aa 001057 700002 056111 asq sb|2,x1 " P aa 001060 000027 710004 tra L107 L106: aa 001061 600264 726100 141 lxl6 sp|180 " Nrx aa 001062 600303 762100 lprpbp sp|195 " Rawchar aa 001063 200000 236116 ldq bp|0,x6 aa 001064 000055 116007 cmpq 45,dl " '-' aa 001065 000014 601004 tnz L108 aa 001066 777713 272004 142 tsbbp L20+2 " Skip aa 001067 000630 000000 zero 408 aa 001070 000004 235007 143 lda 4,dl " 4 aa 001071 700632 755111 sta sb|410,x1 aa 001072 700004 235111 lda sb|4,x1 " v aa 001073 700633 755111 sta sb|411,x1 aa 001074 777050 272004 tsbbp L19+2 " ReadExp aa 001075 000630 000002 zero 408,2 aa 001076 000000 533007 negl 0,dl aa 001077 700002 056111 asq sb|2,x1 " P aa 001100 000007 710004 tra L109 L108: aa 001101 700632 450111 145 stz sb|410,x1 aa 001102 700004 236111 ldq sb|4,x1 " v aa 001103 700633 756111 stq sb|411,x1 aa 001104 777040 272004 tsbbp L19+2 " ReadExp aa 001105 000630 000002 zero 408,2 aa 001106 700002 756111 stq sb|2,x1 " P L109: L107: aa 001107 600171 234100 146 szn sp|121 " ExpError aa 001110 000004 601004 tnz L111 aa 001111 600264 236100 ldq sp|180 " Nrx aa 001112 600261 116100 cmpq sp|177 " Nr aa 001113 000005 605004 tpl L110 L111: aa 001114 000015 351404 eapab L112 " "Malformed expression" aa 001115 700632 541111 sprpab sb|410,x1 4a 001116 400020 272120 tsbbp lp|L113,* " Report aa 001117 000630 000001 zero 408,1 L110: aa 001120 700002 235111 147 lda sb|2,x1 " P L105: aa 001121 700004 755111 sta sb|4,x1 aa 001122 700004 235111 lda sb|4,x1 aa 001123 000044 777000 llr 36 " exchange A and Q aa 001124 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001125 200000 121100 sblx1 bp|0 aa 001126 700001 764111 lprplp sb|1,x1 aa 001127 200001 710100 tra bp|1 " end of return sequence aa 001130 700003 756111 stq sb|3,x1 " temporary " Literal pool L112: aa 001131 000024 115141 zero 20,39521 " "Malformed expression" aa 001132 154146 157162 zero 55398,56946 aa 001133 155145 144040 zero 55909,51232 aa 001134 145170 160162 zero 51832,57458 aa 001135 145163 163151 zero 51827,58985 aa 001136 157156 000000 zero 56942 " Begin text of ReadString aa 001137 000012 122145 zero 10,42085 " ReadString aa 001140 141144 123164 zero 49764,42612 aa 001141 162151 156147 zero 58473,56423 L22: aa 001142 000000 213000 149 epaq 0 " set lp to linkage section aa 001143 700026 764161 lprplp sb|22,*au aa 001144 200000 021100 adlx1 bp|0 " BCPL save aa 001145 700000 542111 sprpbp sb|0,x1 aa 001146 700001 544111 sprplp sb|1,x1 aa 001147 700657 620111 eax0 sb|431,x1 aa 001150 777760 360003 anx0 -16,du aa 001151 700025 740100 stx0 sb|21 " end of save sequence aa 001152 700006 351511 150 eapab sb|6,x1 " a vector aa 001153 700003 541111 sprpab sb|3,x1 " v aa 001154 700004 450111 stz sb|4,x1 " i L117: aa 001155 600264 054100 151 aos sp|180 " Nrx aa 001156 600264 722100 152 lxl2 sp|180 " Nrx aa 001157 600303 761100 lprpab sp|195 " Rawchar aa 001160 100000 236112 ldq ab|0,x2 aa 001161 700005 756111 stq sb|5,x1 " c aa 001162 700005 236111 153 ldq sb|5,x1 " c aa 001163 000052 116007 cmpq 42,dl " '**' aa 001164 000107 601004 tnz L118 aa 001165 600264 054100 154 aos sp|180 " Nrx aa 001166 000053 710004 156 tra L122 L123: aa 001167 000012 235007 lda 10,dl " '*n' aa 001170 000077 710004 157 tra L120 L124: aa 001171 000011 235007 lda 9,dl " '*t' aa 001172 000075 710004 158 tra L120 L125: aa 001173 000040 235007 lda 32,dl " '*s' aa 001174 000073 710004 159 tra L120 L126: aa 001175 000010 235007 lda 8,dl " '*b' aa 001176 000071 710004 160 tra L120 L127: aa 001177 700005 450111 stz sb|5,x1 " c aa 001200 000001 236007 161 ldq 1,dl " 1 aa 001201 700627 756111 stq sb|407,x1 " i aa 001202 000025 710004 tra L128 L129: aa 001203 600264 236100 162 ldq sp|180 " Nrx aa 001204 000001 076007 adq 1,dl " 1 aa 001205 600303 763100 lprpbb sp|195 " Rawchar aa 001206 300000 235106 lda bb|0,ql aa 001207 700630 755111 sta sb|408,x1 aa 001210 000060 236007 ldq 48,dl " '0' aa 001211 700630 116111 cmpq sb|408,x1 aa 001212 000020 605404 tpnz L130 aa 001213 700630 235111 lda sb|408,x1 aa 001214 000071 115007 cmpa 57,dl " '9' aa 001215 000015 605404 tpnz L130 aa 001216 600264 054100 163 aos sp|180 " Nrx aa 001217 700005 236111 164 ldq sb|5,x1 " c aa 001220 000012 402007 mpy 10,dl " 10 aa 001221 600264 723100 lxl3 sp|180 " Nrx aa 001222 600303 765100 lprplb sp|195 " Rawchar aa 001223 500000 076113 adq lb|0,x3 aa 001224 000060 176007 sbq 48,dl " '0' aa 001225 700005 756111 stq sb|5,x1 " c aa 001226 700627 054111 aos sb|407,x1 " i L128: aa 001227 700627 236111 ldq sb|407,x1 " i aa 001230 000003 116007 cmpq 3,dl " 3 aa 001231 777752 604404 tmoz L129 L130: aa 001232 700005 235111 166 lda sb|5,x1 " c aa 001233 000177 375007 ana 127,dl " $8177 aa 001234 000033 710004 167 tra L120 L131: aa 001235 600264 724100 lxl4 sp|180 " Nrx aa 001236 600303 760100 lprpap sp|195 " Rawchar aa 001237 000000 235114 lda ap|0,x4 aa 001240 000027 710004 tra L120 L122: " Begin switchon aa 001241 600264 725100 lxl5 sp|180 " Nrx aa 001242 600303 762100 lprpbp sp|195 " Rawchar aa 001243 200000 235115 lda bp|0,x5 aa 001244 000043 773000 lrl 35 aa 001245 000007 507007 dvf 7,dl " hash table size 0a 001246 001260 115006 cmpa L132,ql aa 001247 777766 601004 tnz L131 0a 001250 001251 710006 tra L133,ql L133: aa 001251 777724 710004 tra L126 aa 001252 777725 710004 tra L127 aa 001253 777762 710004 tra L131 aa 001254 777717 710004 tra L125 aa 001255 777714 710004 tra L124 aa 001256 777711 710004 tra L123 aa 001257 777756 710004 tra L131 L132: aa 001260 000000 000016 zero 0,14 aa 001261 000000 000016 zero 0,14 aa 001262 000000 000000 zero 0 aa 001263 000000 000020 zero 0,16 aa 001264 000000 000020 zero 0,16 aa 001265 000000 000017 zero 0,15 aa 001266 000000 000000 zero 0 L121: L120: aa 001267 700627 755111 sta sb|407,x1 aa 001270 700627 235111 lda sb|407,x1 aa 001271 700005 755111 sta sb|5,x1 " c aa 001272 000037 710004 tra L119 L118: aa 001273 700005 235111 170 lda sb|5,x1 " c aa 001274 000042 115007 cmpa 34,dl " '"' aa 001275 000034 601004 tnz L134 aa 001276 777503 272004 171 tsbbp L20+2 " Skip aa 001277 000634 000000 zero 412 aa 001300 000010 710004 172 tra L135 L136: aa 001301 700003 236111 ldq sb|3,x1 " v aa 001302 700636 756111 stq sb|414,x1 aa 001303 700004 236111 ldq sb|4,x1 " i aa 001304 700637 756111 stq sb|415,x1 aa 001305 000136 272004 tsbbp L24+2 " SubscriptString aa 001306 000634 000002 zero 412,2 aa 001307 700004 756111 stq sb|4,x1 " i L135: aa 001310 600264 236100 ldq sp|180 " Nrx aa 001311 600261 116100 cmpq sp|177 " Nr aa 001312 000006 605004 tpl L137 aa 001313 600264 726100 lxl6 sp|180 " Nrx aa 001314 600303 761100 lprpab sp|195 " Rawchar aa 001315 100000 235116 lda ab|0,x6 aa 001316 000050 115007 cmpa 40,dl " '(' aa 001317 777762 600004 tze L136 L137: aa 001320 600264 236100 173 ldq sp|180 " Nrx aa 001321 600261 116100 cmpq sp|177 " Nr aa 001322 000006 605004 tpl L139 aa 001323 600264 722100 lxl2 sp|180 " Nrx aa 001324 600303 763100 lprpbb sp|195 " Rawchar aa 001325 300000 235112 lda bb|0,x2 aa 001326 000042 115007 cmpa 34,dl " '"' aa 001327 000007 600004 tze L138 L139: aa 001330 000011 710004 174 tra L140 L134: L119: aa 001331 700004 054111 176 aos sb|4,x1 " i aa 001332 700005 236111 177 ldq sb|5,x1 " c aa 001333 700004 723111 lxl3 sb|4,x1 " i aa 001334 700003 765111 lprplb sb|3,x1 " v aa 001335 500000 756113 stq lb|0,x3 L138: aa 001336 600264 236100 ldq sp|180 " Nrx aa 001337 600261 116100 cmpq sp|177 " Nr aa 001340 777615 604004 tmi L117 L140: aa 001341 700004 235111 180 lda sb|4,x1 " i aa 001342 700003 760111 lprpap sb|3,x1 " v aa 001343 000000 755100 sta ap|0 aa 001344 700003 235111 181 lda sb|3,x1 " v aa 001345 700636 755111 sta sb|414,x1 aa 001346 700002 235111 lda sb|2,x1 " w aa 001347 700637 755111 sta sb|415,x1 4a 001350 400016 272120 tsbbp lp|L141,* " Packstring aa 001351 000634 000002 zero 412,2 L116: aa 001352 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001353 200000 121100 sblx1 bp|0 aa 001354 700001 764111 lprplp sb|1,x1 aa 001355 200001 710100 tra bp|1 " end of return sequence " Begin text of GetString aa 001356 000011 107145 zero 9,36453 " GetString aa 001357 164123 164162 zero 59475,59506 aa 001360 151156 147000 zero 53870,52736 L23: aa 001361 000000 213000 183 epaq 0 " set lp to linkage section aa 001362 700026 764161 lprplp sb|22,*au aa 001363 200000 021100 adlx1 bp|0 " BCPL save aa 001364 700000 542111 sprpbp sb|0,x1 aa 001365 700001 544111 sprplp sb|1,x1 aa 001366 700652 620111 eax0 sb|426,x1 aa 001367 777760 360003 anx0 -16,du aa 001370 700025 740100 stx0 sb|21 " end of save sequence aa 001371 700004 352111 184 eapbp sb|4,x1 " a vector aa 001372 700003 542111 sprpbp sb|3,x1 " v aa 001373 600171 450100 185 stz sp|121 " ExpError aa 001374 700003 235111 186 lda sb|3,x1 " v aa 001375 700632 755111 sta sb|410,x1 aa 001376 777546 272004 tsbbp L22+2 " ReadString aa 001377 000630 000001 zero 408,1 aa 001400 600171 234100 187 szn sp|121 " ExpError aa 001401 000004 601004 tnz L146 aa 001402 600264 235100 lda sp|180 " Nrx aa 001403 600261 115100 cmpa sp|177 " Nr aa 001404 000005 605004 tpl L145 L146: aa 001405 000017 352004 eapbp L147 " "Malformed string expression" aa 001406 700632 542111 sprpbp sb|410,x1 4a 001407 400020 272120 tsbbp lp|L113,* " Report aa 001410 000630 000001 zero 408,1 L145: aa 001411 700003 236111 188 ldq sb|3,x1 " v aa 001412 700632 756111 stq sb|410,x1 4a 001413 400014 272120 tsbbp lp|L148,* " StoreString aa 001414 000630 000001 zero 408,1 L144: aa 001415 700003 756111 stq sb|3,x1 aa 001416 700003 236111 ldq sb|3,x1 aa 001417 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001420 200000 121100 sblx1 bp|0 aa 001421 700001 764111 lprplp sb|1,x1 aa 001422 200001 710100 tra bp|1 " end of return sequence aa 001423 700002 756111 stq sb|2,x1 " temporary " Literal pool L147: aa 001424 000033 115141 zero 27,39521 " "Malformed string expression" aa 001425 154146 157162 zero 55398,56946 aa 001426 155145 144040 zero 55909,51232 aa 001427 163164 162151 zero 58996,58473 aa 001430 156147 040145 zero 56423,16485 aa 001431 170160 162145 zero 61552,58469 aa 001432 163163 151157 zero 58995,53871 aa 001433 156000 000000 zero 56320 " Begin text of SubscriptString aa 001434 000017 123165 zero 15,42613 " SubscriptString aa 001435 142163 143162 zero 50291,50802 aa 001436 151160 164123 zero 53872,59475 aa 001437 164162 151156 zero 59506,53870 aa 001440 147000 000000 zero 52736 L24: aa 001441 000000 213000 190 epaq 0 " set lp to linkage section aa 001442 700026 764161 lprplp sb|22,*au aa 001443 200000 021100 adlx1 bp|0 " BCPL save aa 001444 700000 542111 sprpbp sb|0,x1 aa 001445 700001 544111 sprplp sb|1,x1 aa 001446 700661 620111 eax0 sb|433,x1 aa 001447 777760 360003 anx0 -16,du aa 001450 700025 740100 stx0 sb|21 " end of save sequence aa 001451 777330 272004 191 tsbbp L20+2 " Skip aa 001452 000636 000000 zero 414 aa 001453 700006 352111 192 eapbp sb|6,x1 " a vector aa 001454 700005 542111 sprpbp sb|5,x1 " w aa 001455 000004 236007 193 ldq 4,dl " 4 aa 001456 700640 756111 stq sb|416,x1 aa 001457 700005 236111 ldq sb|5,x1 " w aa 001460 700641 756111 stq sb|417,x1 aa 001461 776463 272004 tsbbp L19+2 " ReadExp aa 001462 000636 000002 zero 414,2 aa 001463 700630 756111 stq sb|408,x1 aa 001464 700630 236111 ldq sb|408,x1 aa 001465 700640 756111 stq sb|416,x1 aa 001466 700003 236111 ldq sb|3,x1 " i aa 001467 000001 076007 adq 1,dl " 1 aa 001470 700641 756111 stq sb|417,x1 4a 001471 400012 272120 tsbbp lp|L152,* " MinI aa 001472 000636 000002 zero 414,2 aa 001473 700627 756111 stq sb|407,x1 " a aa 001474 700627 234111 194 szn sb|407,x1 " a aa 001475 000005 605004 tpl L153 aa 001476 700627 236111 ldq sb|407,x1 " a aa 001477 700003 076111 adq sb|3,x1 " i aa 001500 000001 076007 adq 1,dl " 1 aa 001501 700627 756111 stq sb|407,x1 " a L153: aa 001502 700627 234111 195 szn sb|407,x1 " a aa 001503 000003 605404 tpnz L154 aa 001504 000001 236007 ldq 1,dl " 1 aa 001505 700627 756111 stq sb|407,x1 " a L154: aa 001506 700003 236111 196 ldq sb|3,x1 " i aa 001507 700627 176111 sbq sb|407,x1 " a aa 001510 000001 076007 adq 1,dl " 1 aa 001511 700630 756111 stq sb|408,x1 " b aa 001512 600264 724100 197 lxl4 sp|180 " Nrx aa 001513 600303 762100 lprpbp sp|195 " Rawchar aa 001514 200000 236114 ldq bp|0,x4 aa 001515 000054 116007 cmpq 44,dl " ',' aa 001516 000034 601004 tnz L155 aa 001517 777262 272004 198 tsbbp L20+2 " Skip aa 001520 000636 000000 zero 414 aa 001521 000004 235007 199 lda 4,dl " 4 aa 001522 700640 755111 sta sb|416,x1 aa 001523 700005 235111 lda sb|5,x1 " w aa 001524 700641 755111 sta sb|417,x1 aa 001525 776417 272004 tsbbp L19+2 " ReadExp aa 001526 000636 000002 zero 414,2 aa 001527 700631 756111 stq sb|409,x1 aa 001530 700631 236111 ldq sb|409,x1 aa 001531 700640 756111 stq sb|416,x1 aa 001532 700630 236111 ldq sb|408,x1 " b aa 001533 700641 756111 stq sb|417,x1 4a 001534 400012 272120 tsbbp lp|L152,* " MinI aa 001535 000636 000002 zero 414,2 aa 001536 700630 756111 stq sb|408,x1 " b aa 001537 700630 234111 200 szn sb|408,x1 " b aa 001540 000012 605004 tpl L156 aa 001541 700630 236111 ldq sb|408,x1 " b aa 001542 700003 076111 adq sb|3,x1 " i aa 001543 700627 176111 sbq sb|407,x1 " a aa 001544 000002 076007 adq 2,dl " 2 aa 001545 700640 756111 stq sb|416,x1 aa 001546 700641 450111 stz sb|417,x1 4a 001547 400010 272120 tsbbp lp|L157,* " MaxI aa 001550 000636 000002 zero 414,2 aa 001551 700630 756111 stq sb|408,x1 " b L156: L155: aa 001552 600264 725100 202 lxl5 sp|180 " Nrx aa 001553 600303 761100 lprpab sp|195 " Rawchar aa 001554 100000 236115 ldq ab|0,x5 aa 001555 000051 116007 cmpq 41,dl " ')' aa 001556 000005 600004 tze L158 aa 001557 000001 335007 203 lca 1,dl " true aa 001560 600171 755100 sta sp|121 " ExpError aa 001561 700003 235111 204 lda sb|3,x1 " i aa 001562 000025 710004 tra L151 L158: aa 001563 000001 236007 206 ldq 1,dl " 1 aa 001564 700631 756111 stq sb|409,x1 " i aa 001565 700630 236111 ldq sb|408,x1 " b aa 001566 700632 756111 stq sb|410,x1 aa 001567 000012 710004 tra L159 L160: aa 001570 700627 236111 ldq sb|407,x1 " a aa 001571 700631 076111 adq sb|409,x1 " i aa 001572 000001 176007 sbq 1,dl " 1 aa 001573 700002 763111 lprpbb sb|2,x1 " v aa 001574 300000 235106 lda bb|0,ql aa 001575 700631 726111 lxl6 sb|409,x1 " i aa 001576 700002 765111 lprplb sb|2,x1 " v aa 001577 500000 755116 sta lb|0,x6 aa 001600 700631 054111 aos sb|409,x1 " i L159: aa 001601 700631 236111 ldq sb|409,x1 " i aa 001602 700632 116111 cmpq sb|410,x1 aa 001603 777765 604404 tmoz L160 aa 001604 777175 272004 207 tsbbp L20+2 " Skip aa 001605 000636 000000 zero 414 aa 001606 700630 235111 208 lda sb|408,x1 " b L151: aa 001607 700005 755111 sta sb|5,x1 aa 001610 700005 235111 lda sb|5,x1 aa 001611 000044 777000 llr 36 " exchange A and Q aa 001612 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001613 200000 121100 sblx1 bp|0 aa 001614 700001 764111 lprplp sb|1,x1 aa 001615 200001 710100 tra bp|1 " end of return sequence " Definition section part one - external entry points 5a 000000 000030 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_mr8" aa 000004 157146 146137 aa 000005 155162 070000 aa 000006 011107 145164 " "GetString" aa 000007 123164 162151 aa 000010 156147 000000 aa 000011 012122 145141 " "ReadString" aa 000012 144123 164162 aa 000013 151156 147000 aa 000014 011122 145141 " "ReadParam" aa 000015 144120 141162 aa 000016 141155 000000 aa 000017 007122 145141 " "ReadExp" aa 000020 144105 170160 aa 000021 012122 145141 " "ReadNumber" aa 000022 144116 165155 aa 000023 142145 162000 aa 000024 014163 171155 " "symbol_table" aa 000025 142157 154137 aa 000026 164141 142154 aa 000027 145000 000000 " Segname definition for runoff_mr8 55 000030 000033 000002 " forward, backward threads 5a 000031 000002 400003 " value defined, class flags 55 000032 000003 000033 " name pointer, first entry def " Definition for GetString 55 000033 000036 000030 " forward, backward threads 0a 000034 001361 500000 " value defined, class flags 55 000035 000006 000030 " name pointer, segname def pointer " Definition for ReadString 55 000036 000041 000033 " forward, backward threads 0a 000037 001142 500000 " value defined, class flags 55 000040 000011 000030 " name pointer, segname def pointer " Definition for ReadParam 55 000041 000044 000036 " forward, backward threads 0a 000042 001027 500000 " value defined, class flags 55 000043 000014 000030 " name pointer, segname def pointer " Definition for ReadExp 55 000044 000047 000041 " forward, backward threads 0a 000045 000142 500000 " value defined, class flags 55 000046 000017 000030 " name pointer, segname def pointer " Definition for ReadNumber 55 000047 000052 000044 " forward, backward threads 0a 000050 000056 500000 " value defined, class flags 55 000051 000021 000030 " name pointer, segname def pointer " Definition for symbol_table 55 000052 000002 000047 " forward, backward threads 6a 000053 000000 400002 " value defined, class flags 55 000054 000024 000030 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000055 020142 143160 " "bcpl_arithmetic_" aa 000056 154137 141162 aa 000057 151164 150155 aa 000060 145164 151143 aa 000061 137000 000000 aa 000062 004115 141170 " "MaxI" aa 000063 111000 000000 5a 000064 000065 000000 aa 000065 000004 000000 55 000066 000055 000062 aa 000067 004115 151156 " "MinI" aa 000070 111000 000000 5a 000071 000072 000000 aa 000072 000004 000000 55 000073 000055 000067 aa 000074 012162 165156 " "runoff_mr0" aa 000075 157146 146137 aa 000076 155162 060000 aa 000077 013123 164157 " "StoreString" aa 000100 162145 123164 aa 000101 162151 156147 5a 000102 000103 000000 aa 000103 000004 000000 55 000104 000074 000077 aa 000105 022142 143160 " "bcpl_machine_code_" aa 000106 154137 155141 aa 000107 143150 151156 aa 000110 145137 143157 aa 000111 144145 137000 aa 000112 012120 141143 " "Packstring" aa 000113 153163 164162 aa 000114 151156 147000 5a 000115 000116 000000 aa 000116 000004 000000 55 000117 000105 000112 aa 000120 006122 145160 " "Report" aa 000121 157162 164000 5a 000122 000123 000000 aa 000123 000004 000000 55 000124 000074 000120 aa 000125 015142 143160 " "bcpl_strings_" aa 000126 154137 163164 aa 000127 162151 156147 aa 000130 163137 000000 aa 000131 016103 157155 " "CompareStrings" aa 000132 160141 162145 aa 000133 123164 162151 aa 000134 156147 163000 5a 000135 000136 000000 aa 000136 000004 000000 55 000137 000125 000131 aa 000140 005123 165142 " "Subch" aa 000141 143150 000000 5a 000142 000143 000000 aa 000143 000004 000000 55 000144 000105 000140 aa 000145 006114 145156 " "Length" aa 000146 147164 150000 5a 000147 000150 000000 aa 000150 000004 000000 55 000151 000125 000145 " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 001616 000000 " address of defs aa 000002 000000 000000 aa 000003 000000 000000 aa 000004 000000 000000 aa 000005 000000 000000 2a 000006 000010 000030 " offset to links, total length aa 000007 000000 000030 " obsolete length " External link pairs L157: 3a 000010 777770 000046 " "bcpl_arithmetic_$MaxI" 5a 000011 000064 000000 L152: 3a 000012 777766 000046 " "bcpl_arithmetic_$MinI" 5a 000013 000071 000000 L148: 3a 000014 777764 000046 " "runoff_mr0$StoreString" 5a 000015 000102 000000 L141: 3a 000016 777762 000046 " "bcpl_machine_code_$Packstring" 5a 000017 000115 000000 L113: 3a 000020 777760 000046 " "runoff_mr0$Report" 5a 000021 000122 000000 L63: 3a 000022 777756 000046 " "bcpl_strings_$CompareStrings" 5a 000023 000135 000000 L9: 3a 000024 777754 000046 " "bcpl_machine_code_$Subch" 5a 000025 000142 000000 L6: 3a 000026 777752 000046 " "bcpl_strings_$Length" 5a 000027 000147 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 442344 070237 " 01/24/75 0705.1 mst Fri aa 000010 142143 160154 " "bcpl " aa 000011 040040 040040 aa 000012 000042 000035 " compiler version name - pointer, length aa 000013 000052 000024 " user id - pointer, length aa 000014 000057 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 000123 " section header pointer, block size aa 000020 000000 000123 " next block pointer, rel_text aa 000021 000000 000137 " rel_def, rel_link aa 000022 000145 000123 " rel_symbol, default truncate aa 000023 000024 000000 " optional truncate, unused aa 000024 000000 000001 " source files map: version number aa 000025 000000 000003 " number of files aa 000026 000070 000051 " runoff_mr8 aa 000027 023333 611456 " last modified on aa 000030 000000 102333 " 01/24/75 0647.2 mst Fri aa 000031 432367 200000 aa 000032 000103 000033 " head aa 000033 021607 540547 " last modified on aa 000034 000000 101621 " 05/06/74 1742.4 mst Mon aa 000035 352261 400000 aa 000036 000112 000042 " runoff_head aa 000037 021607 541104 " last modified on aa 000040 000000 101621 " 05/06/74 1743.2 mst Mon aa 000041 352532 200000 aa 000042 102103 120114 " "BCPL version 3.4, August 1973" aa 000043 040166 145162 aa 000044 163151 157156 aa 000045 040063 056064 aa 000046 054040 101165 aa 000047 147165 163164 aa 000050 040061 071067 aa 000051 063040 040040 aa 000052 115141 162164 " "Martinson.SysMaint.a" aa 000053 151156 163157 aa 000054 156056 123171 aa 000055 163115 141151 aa 000056 156164 056141 aa 000057 163157 165162 " "source xref alist optimize 6180" aa 000060 143145 040040 aa 000061 170162 145146 aa 000062 040040 141154 aa 000063 151163 164040 aa 000064 040157 160164 aa 000065 151155 151172 aa 000066 145040 040066 aa 000067 061070 060040 aa 000070 076062 056061 " ">2.1spec>online>mib083074>runoff_mr8.bcpl" aa 000071 163160 145143 aa 000072 076157 156154 aa 000073 151156 145076 aa 000074 155151 142060 aa 000075 070063 060067 aa 000076 064076 162165 aa 000077 156157 146146 aa 000100 137155 162070 aa 000101 056142 143160 aa 000102 154040 040040 aa 000103 076154 144144 " ">ldd>include>head.incl.bcpl" aa 000104 076151 156143 aa 000105 154165 144145 aa 000106 076150 145141 aa 000107 144056 151156 aa 000110 143154 056142 aa 000111 143160 154040 aa 000112 076154 144144 " ">ldd>include>runoff_head.incl.bcpl" aa 000113 076151 156143 aa 000114 154165 144145 aa 000115 076162 165156 aa 000116 157146 146137 aa 000117 150145 141144 aa 000120 056151 156143 aa 000121 154056 142143 aa 000122 160154 040040 " Relocation information " text section relocation bits aa 000123 000000 000002 " version number of rel-bits structure aa 000124 000000 000513 " length in bits aa 000125 740365 000001 aa 000126 236252 600417 aa 000127 031323 601460 aa 000130 041705 372361 aa 000131 616074 373517 aa 000132 053700 207417 aa 000133 751701 732001 aa 000134 236055 647410 aa 000135 551700 532360 aa 000136 464000 000000 l " inkage relocation bits aa 000137 000000 000002 " version number of rel-bits structure aa 000140 000000 000170 " length in bits aa 000141 100002 204652 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 770416 " Object map aa 002170 000000 000001 " version number of object_map structure aa 002171 157142 152137 " "obj_map " aa 002172 155141 160040 aa 002173 000000 001616 " text offset, length aa 002174 001616 000152 " def offset, length aa 002175 001770 000030 " link offset, length aa 002176 002020 000150 " symbol offset, length aa 002177 000000 000000 " break map offset, length aa 002200 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 002201 002170 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