Compilation listing of file >2.1spec>online>mib083074>bcpl_strings_.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0700.9 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 // Routines to manipulate strings for BCPL programs. 2 // Last modified on 06/06/74 at 15:36:39 by R F Mabee. 3 // Reinstalled with no material change in June 1974 by R F Mabee. 4 // Modifications for 6180 conversion installed in June 1973 by R F Mabee. 5 // First installed as bcpl_lib_ on 645 Multics in September 1971 by R F Mabee. 6 7 // Copyright (c) 1974 by Massachusetts Institute of Technology and Honeywell Information Systems, Inc. 8 9 // General permission is granted to copy and use this program, but not to sell it, provided that the above 10 // copyright statement is given. Contact Information Processing Services, MIT, for further information. 11 // Please contact R F Mabee at MIT for information on this program and versions for other machines. 12 13 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 $) 14 15 manifest 16 $( FirstCharsMask = true rshift CountSize // Mask for characters in first word of string. 17 BlankWord = '*s*s*s*s' 18 $) 19 20 let Length (String) = String!0 rshift (WordSize - CountSize) // Return length in characters. 21 and SetLength (String, Len) = valof // Fix length of BCPL string. 22 $( String!0 := String!0 & FirstCharsMask | Len lshift (WordSize - CountSize) 23 let Nbits = Len * ByteSize + CountSize 24 let Nwords = (Nbits + WordSize - 1) / WordSize 25 String!(Nwords - 1) := String!(Nwords - 1) & not (true rshift ((Nbits - 1) rem WordSize + 1)) 26 resultis String 27 $) 28 and LengthInWords (String) = // Return length of string in words. 29 (Length (String) * ByteSize + CountSize + WordSize - 1) / WordSize 30 31 let EqualString (s, t) = valof // Compare two strings. Returns true if identical, otherwise false. 32 $( if s = t resultis true // Easy case. 33 for i = 0 to LengthInWords (s) - 1 unless s!i = t!i resultis false 34 resultis true 35 $) 36 and CompareStrings (s, t) = valof // Compare two strings. Returns 0 for s = t, 1 or 2 for s > t, -1 or -2 for s < t. 37 // 1 or -1 means difference is only in case bits, 2 or -2 other difference. 38 $( if EqualString (s, t) resultis 0 39 let a, b = Length (s), Length (t) 40 let Case = 0 41 for i = 1 to MinI (a, b) do 42 $( let c, d = Subch (s, i), Subch (t, i) 43 if c = d loop 44 if 'a' le c le 'z' do c := c - 'a' + 'A' 45 if 'a' le d le 'z' do d := d - 'a' + 'A' 46 unless c = d resultis c < d -> -2, 2 // A significant difference. 47 if Case = 0 do Case := Subch (s, i) < Subch (t, i) -> -1, 1 48 $) 49 unless a = b resultis a < b -> -2, 2 50 resultis Case 51 $) 52 53 let CopyString (String, Space) be // Copy a BCPL string. 54 Move (Space, String, LengthInWords (String)) 55 56 let StringToChar (s) = valof 57 $( let C = 0 58 for i = 1 to Length (s, i) do C := C lshift ByteSize logor Subch (s, i) 59 resultis C 60 $) 61 and CharToString (Ch, Space) = valof 62 $( for Len = ByteSize to WordSize by ByteSize if (Ch rshift Len) = 0 do // Skip unused bytes. 63 $( MoveBits (Space, CountSize, lv Ch, WordSize - Len, Len) 64 resultis SetLength (Space, Len / ByteSize) 65 $) 66 $) 67 68 let Concatenate (Space, MaxLen, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) = valof 69 // Concatenate any number of BCPL strings. 70 $( let n = Length (a) 71 unless a = Space do CopyString (a, Space) // Special-case first string for Concatenate (v, ., v, ...). 72 for i = 1 to NumbArgs () - 3 do 73 $( let p = (lv a)!i // p is i'th string arg. 74 let l = Length (p) 75 if n + l ge MaxLen do l := MaxLen - n 76 MoveBits (Space, n * ByteSize + CountSize, p, CountSize, l * ByteSize) 77 n := n + l 78 $) 79 resultis SetLength (Space, n) 80 $) 81 82 let Substr (Space, String, First, Count) = valof // Like PL/I substr, but requires space for result. 83 $( let l = Length (String) - First + 1 // Max or default length of substring. 84 if NumbArgs () < 4 | Count > l do Count := l 85 if Count < 0 do Count := 0 86 MoveBits (Space, CountSize, String, (First - 1) * ByteSize + CountSize, Count * ByteSize) 87 resultis SetLength (Space, Count) 88 $) 89 90 let IndexCh (String, Ch) = // Return i such that i'th character of String is Ch. 91 ScanChar (String, CountSize / ByteSize, Length (String), Ch) + 1 92 let Index (String, Pattern) = valof // Just like the PL/I index built-in function. 93 $( let l = Length (Pattern) 94 if l = 0 resultis 0 // Define weird case. 95 let Ch = Subch (Pattern, 1) // First character to look for. 96 let n = Length (String) - l + 1 // Number of characters worth looking at. 97 let b = 0 98 while b < n do 99 $( let p = ScanChar (String, b + CountSize / ByteSize, n - b, Ch) // Find next instance of Ch. 100 if p < 0 break // Not there. 101 b := b + p + 1 102 for i = 2 to l do // Check for rest of string. 103 unless Subch (String, b + i - 1) = Subch (Pattern, i) goto Nomatch 104 resultis b 105 Nomatch: 106 $) 107 resultis 0 108 $) 109 110 let Pad (Space, From, Len) be // Pad a string with blanks. 111 $( let Fp, Lp = From - From rem 4, Len - Len rem 4 112 let Blanks = BlankWord 113 unless Fp = From do 114 $( Fp := Fp + 4 115 MoveBits (Space, From * ByteSize, lv Blanks, 0, (MinI (Fp, Len) - From) * ByteSize) 116 $) 117 while Fp < Lp do 118 $( Space!(Fp / 4) := BlankWord 119 Fp := Fp + 4 120 $) 121 unless Lp = Len | Fp > Lp do MoveBits (Space, Lp * ByteSize, lv Blanks, 0, (Len - Lp) * ByteSize) 122 $) 123 and LastNonBlank (Space, Len) = valof 124 $( let Lp = Len - Len rem 4 125 let c = 0 126 while Len > Lp do 127 $( Len := Len - 1 128 MoveBits (lv c, WordSize - ByteSize, Space, Len * ByteSize, ByteSize) // Grab last character. 129 unless c = '*s' resultis Len + 1 130 $) 131 while Len > 0 do 132 $( unless Space!(Len / 4 - 1) = BlankWord break 133 Len := Len - 4 134 $) 135 while Len > 0 do 136 $( Len := Len - 1 137 MoveBits (lv c, WordSize - ByteSize, Space, Len * ByteSize, ByteSize) 138 unless c = '*s' resultis Len + 1 139 $) 140 resultis Len 141 $) 142 143 let MakePl1String (BcplString, Space, Len) = valof // Make a PL/I-style aligned string padded to length. 144 $( let l = Length (BcplString) 145 if l > Len do l := Len 146 MoveBits (Space, 0, BcplString, CountSize, l * ByteSize) 147 if Len > l do Pad (Space, l, Len) 148 resultis Space 149 $) 150 let MakeBcplString (Pl1String, Len, Space) = valof // Convert aligned PL/I string back to BCPL format. 151 $( Len := LastNonBlank (Pl1String, Len) // Strip off trailing blanks. 152 MoveBits (Space, CountSize, Pl1String, 0, Len * ByteSize) 153 resultis SetLength (Space, Len) 154 $) 155 CAE time 3.2, 93 source lines per second. cross reference table a bcpl_strings_: 39, 41, 49, 49, 68, 70, 71, 71, 73 AbsI head: 11 AbsR head: 12 Allocate head: 64 Append head: 136 ArgIndex head: 121 b bcpl_strings_: 39, 41, 49, 49, 68, 97, 98, 99, 99, 101, 101, 103, 104 Bcall head: 54 BCPLaddr head: 108 BcplString bcpl_strings_: 143, 144, 146 Blanks bcpl_strings_: 112, 115, 121 BlankWord bcpl_strings_: 17, 112, 118, 132 ByteSize head: 127, bcpl_strings_: 23, 29, 58, 62, 62, 64, 76, 76, 86, 86, 91, 99, 115, 115, 121, 121, 128, 128, 128, 137, 137, 137, 146, 152 C bcpl_strings_: 57, 58, 58, 59 c bcpl_strings_: 42, 43, 44, 44, 44, 46, 46, 68, 125, 128, 129, 137, 138 Case bcpl_strings_: 40, 47, 47, 50 Ch head: 118, bcpl_strings_: 61, 62, 63, 90, 91, 95, 99 CharToString head: 37, bcpl_strings_: 61 Close head: 69 CompareStrings head: 27, bcpl_strings_: 36 Complain head: 107 Concatenate head: 28, bcpl_strings_: 68 ConcatenateArgs head: 104 CONSOLE head: 117 Console head: 134 ConvertFtoS head: 46 ConvertNtoS head: 45 ConvertStoN head: 44 CopyString head: 25, bcpl_strings_: 53, 71 Count bcpl_strings_: 82, 84, 84, 85, 85, 86, 87 CountSize head: 128, bcpl_strings_: 16, 20, 22, 23, 29, 63, 76, 76, 86, 86, 91, 99, 146, 152 d bcpl_strings_: 42, 43, 45, 45, 45, 46, 46, 68 DeleteTempSeg head: 91 e bcpl_strings_: 68 Endofstreamch head: 130 EntryName head: 135 EqualString head: 26, bcpl_strings_: 31, 38 Errcode head: 120 ExpandPathname head: 84 Exponential head: 20 f bcpl_strings_: 68 Findadr head: 65 FindSegment head: 87 First bcpl_strings_: 82, 83, 86 FirstCharsMask bcpl_strings_: 16, 22 Flushinput head: 77 Format head: 74 FormatString head: 75 FormDate head: 49 Fp bcpl_strings_: 111, 113, 114, 114, 115, 117, 118, 119, 119, 121 Freevec head: 63 From bcpl_strings_: 110, 111, 111, 113, 115, 115 g bcpl_strings_: 68 GetCpuUsage head: 96 GetNextCommandArg head: 106 GetPathname head: 89 h bcpl_strings_: 68 i bcpl_strings_: 33, 33, 33, 41, 42, 42, 47, 47, 58, 58, 58, 68, 72, 73, 102, 103, 103 Index head: 34, bcpl_strings_: 92 IndexCh head: 35, bcpl_strings_: 90 INPUT head: 116 InsertEscapes head: 48 IOstatus head: 120 IpowerI head: 14 ItoR head: 43 ITS head: 109 j bcpl_strings_: 68 JoinPathname head: 85 k bcpl_strings_: 68 l bcpl_strings_: 68, 74, 75, 75, 76, 77, 83, 84, 84, 93, 94, 96, 102, 144, 145, 145, 146, 147, 147 LastNonBlank bcpl_strings_: 123, 151 Left head: 129 Len bcpl_strings_: 21, 22, 23, 62, 62, 63, 63, 64, 110, 111, 111, 115, 121, 121, 123, 124, 124, 126, 127, 127, 128, 129, 131, 132, 133, 133, 135, 136, 136, 137, 138, 140, 143, 145, 145, 147, 147, 150, 151, 151, 152, 153 Length head: 31, bcpl_strings_: 20, 29, 39, 39, 58, 70, 74, 83, 91, 93, 96, 144 LengthInWords head: 33, bcpl_strings_: 28, 33, 54 Level head: 53 Logarithm head: 19 Longjump head: 52 Lp bcpl_strings_: 111, 117, 121, 121, 121, 121, 124, 126 m bcpl_strings_: 68 Machine head: 125 MakeBcplString head: 39, bcpl_strings_: 150 MakePl1String head: 38, bcpl_strings_: 143 MakeSegment head: 88 MakeTempSeg head: 90 MaxI head: 7 MaxLen bcpl_strings_: 68, 75, 75 MaxR head: 8 MinI head: 9, bcpl_strings_: 41, 115 MinR head: 10 MONITOR head: 117 Move head: 56, bcpl_strings_: 54 MoveBits head: 57, bcpl_strings_: 63, 76, 86, 115, 121, 128, 137, 146, 152 MultiSegmentFile head: 137 n bcpl_strings_: 68, 70, 75, 75, 76, 77, 77, 79, 96, 98, 99 Nbits bcpl_strings_: 23, 24, 25 Newvec head: 62 NewvecCleanup head: 61 NewvecInit head: 60 Nomatch bcpl_strings_: 103, 105 Null head: 131 NumbArgs head: 59, bcpl_strings_: 72, 84 Nwords bcpl_strings_: 24, 25, 25 o bcpl_strings_: 68 Open head: 68 OptCallOut head: 144 OptConvert head: 143 OptGetNext head: 142 OptionParse head: 105 OptNegatable head: 140 OptNegate head: 141 OUTPUT head: 116 p bcpl_strings_: 68, 73, 74, 76, 99, 100, 101 Packstring head: 23 Pad bcpl_strings_: 110, 147 PathName head: 135 Pattern bcpl_strings_: 92, 93, 95, 103 Pl1ArgPtr head: 100 Pl1ArgString head: 102 Pl1Call head: 55 Pl1Descriptor head: 101 Pl1NumbArgs head: 99 Pl1ReturnString head: 103 Pl1String bcpl_strings_: 150, 151, 152 Pointer head: 134 ProgramID head: 119 q bcpl_strings_: 68 r bcpl_strings_: 68 RandomI head: 17 RandomR head: 18 RawClockTime head: 94 Read head: 136 Readch head: 70 RemoveEscapes head: 47 ResetStream head: 78 RevertHandler head: 112 Right head: 129 RpowerI head: 15 RpowerR head: 16 RtoI head: 42 s bcpl_strings_: 31, 32, 33, 33, 36, 38, 39, 42, 47, 56, 58, 58, 68 ScanChar head: 58, bcpl_strings_: 91, 99 SearchName head: 135 SetBitCount head: 93 SetHandler head: 111 SetLength head: 32, bcpl_strings_: 21, 64, 79, 87, 153 SetOverflowMask head: 110 Space bcpl_strings_: 53, 54, 61, 63, 64, 68, 71, 71, 76, 79, 82, 86, 87, 110, 115, 118, 121, 123, 128, 132, 137, 143, 146, 147, 148, 150, 152, 153 SplitPathname head: 86 SquareRoot head: 13 StreamLength head: 80 StreamName head: 134 StreamOffset head: 79 StreamPointer head: 81 String bcpl_strings_: 20, 20, 21, 22, 22, 25, 25, 26, 28, 29, 53, 54, 54, 82, 83, 86, 90, 91, 91, 92, 96, 99, 103 StringToChar head: 36, bcpl_strings_: 56 Subch head: 30, bcpl_strings_: 42, 42, 47, 47, 58, 95, 103, 103 Substr head: 29, bcpl_strings_: 82 t bcpl_strings_: 31, 32, 33, 36, 38, 39, 42, 47, 68 Terminate head: 92 TimeToSeconds head: 95 u bcpl_strings_: 68 Unpackstring head: 24 v bcpl_strings_: 68 w bcpl_strings_: 68 WordSize head: 126, bcpl_strings_: 20, 22, 24, 24, 25, 29, 29, 62, 63, 128, 137 Write head: 136 Writech head: 71 WriteN head: 73 Writeout head: 76 WriteS head: 72 x bcpl_strings_: 68 y bcpl_strings_: 68 z bcpl_strings_: 68 Trans time 1.4, 814 object words per second. " Begin text of Length aa 000000 000006 114145 zero 6,39013 " Length aa 000001 156147 164150 zero 56423,59496 L1: aa 000002 000000 213000 20 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 700417 620111 eax0 sb|271,x1 aa 000010 777760 360003 anx0 -16,du aa 000011 700025 740100 stx0 sb|21 " end of save sequence aa 000012 700002 760111 lprpap sb|2,x1 " String aa 000013 000000 236100 ldq ap|0 aa 000014 000022 772000 qrl 18 aa 000015 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000016 200000 121100 sblx1 bp|0 aa 000017 700001 764111 lprplp sb|1,x1 aa 000020 200001 710100 tra bp|1 " end of return sequence " Begin text of LengthInWords aa 000021 000015 114145 zero 13,39013 " LengthInWords aa 000022 156147 164150 zero 56423,59496 aa 000023 111156 127157 zero 37486,44655 aa 000024 162144 163000 zero 58468,58880 aa 000025 700003 756111 28 stq sb|3,x1 " temporary L3: aa 000026 000000 213000 epaq 0 " set lp to linkage section aa 000027 700026 764161 lprplp sb|22,*au aa 000030 200000 021100 adlx1 bp|0 " BCPL save aa 000031 700000 542111 sprpbp sb|0,x1 aa 000032 700001 544111 sprplp sb|1,x1 aa 000033 700422 620111 eax0 sb|274,x1 aa 000034 777760 360003 anx0 -16,du aa 000035 700025 740100 stx0 sb|21 " end of save sequence aa 000036 700002 236111 ldq sb|2,x1 " String aa 000037 700014 756111 stq sb|12,x1 aa 000040 777744 272004 tsbbp L1+2 " Length aa 000041 000012 000001 zero 10,1 aa 000042 000011 402007 mpy 9,dl " ByteSize aa 000043 000022 076007 adq 18,dl " CountSize aa 000044 000044 076007 adq 36,dl " WordSize aa 000045 000001 176007 sbq 1,dl " 1 aa 000046 000044 506007 div 36,dl " WordSize aa 000047 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000050 200000 121100 sblx1 bp|0 aa 000051 700001 764111 lprplp sb|1,x1 aa 000052 200001 710100 tra bp|1 " end of return sequence " Begin text of SetLength aa 000053 000011 123145 zero 9,42597 " SetLength aa 000054 164114 145156 zero 59468,51822 aa 000055 147164 150000 zero 52852,53248 aa 000056 700003 756111 21 stq sb|3,x1 " temporary L2: aa 000057 000000 213000 epaq 0 " set lp to linkage section aa 000060 700026 764161 lprplp sb|22,*au aa 000061 200000 021100 adlx1 bp|0 " BCPL save aa 000062 700000 542111 sprpbp sb|0,x1 aa 000063 700001 544111 sprplp sb|1,x1 aa 000064 700417 620111 eax0 sb|271,x1 aa 000065 777760 360003 anx0 -16,du aa 000066 700025 740100 stx0 sb|21 " end of save sequence aa 000067 700003 236111 22 ldq sb|3,x1 " Len aa 000070 000022 736000 qls 18 aa 000071 700002 762111 lprpbp sb|2,x1 " String aa 000072 200000 235100 lda bp|0 aa 000073 777777 375007 ana -1,dl " FirstCharsMask aa 000074 600000 755100 sta sp|0 aa 000075 600000 276100 orq sp|0 aa 000076 700002 761111 lprpab sb|2,x1 " String aa 000077 100000 756100 stq ab|0 aa 000100 700003 236111 23 ldq sb|3,x1 " Len aa 000101 000011 402007 mpy 9,dl " ByteSize aa 000102 000022 076007 adq 18,dl " CountSize aa 000103 700005 756111 stq sb|5,x1 " Nbits aa 000104 700005 236111 24 ldq sb|5,x1 " Nbits aa 000105 000044 076007 adq 36,dl " WordSize aa 000106 000001 176007 sbq 1,dl " 1 aa 000107 000044 506007 div 36,dl " WordSize aa 000110 700006 756111 stq sb|6,x1 " Nwords aa 000111 700006 236111 25 ldq sb|6,x1 " Nwords aa 000112 000001 176007 sbq 1,dl " 1 aa 000113 700006 235111 lda sb|6,x1 " Nwords aa 000114 000001 175007 sba 1,dl " 1 aa 000115 700010 756111 stq sb|8,x1 " temporary aa 000116 700005 236111 ldq sb|5,x1 " Nbits aa 000117 000001 176007 sbq 1,dl " 1 aa 000120 700012 755111 sta sb|10,x1 " temporary aa 000121 000044 506007 div 36,dl " WordSize aa 000122 000001 075007 ada 1,dl " 1 aa 000123 000001 336007 lcq 1,dl " true aa 000124 000000 772005 qrl 0,al aa 000125 000017 676004 erq L11 " true aa 000126 700012 722111 lxl2 sb|10,x1 aa 000127 700002 763111 lprpbb sb|2,x1 " String aa 000130 300000 376112 anq bb|0,x2 aa 000131 700010 723111 lxl3 sb|8,x1 aa 000132 700002 765111 lprplb sb|2,x1 " String aa 000133 500000 756113 stq lb|0,x3 aa 000134 700002 236111 26 ldq sb|2,x1 " String L10: aa 000135 700005 756111 stq sb|5,x1 aa 000136 700005 236111 ldq sb|5,x1 aa 000137 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000140 200000 121100 sblx1 bp|0 aa 000141 700001 764111 lprplp sb|1,x1 aa 000142 200001 710100 tra bp|1 " end of return sequence aa 000143 700004 756111 stq sb|4,x1 " temporary " Literal pool L11: aa 000144 777777 777777 zero -1,-1 " true " Begin text of CompareStrings aa 000145 000016 103157 zero 14,34415 " CompareStrings aa 000146 155160 141162 zero 55920,49778 aa 000147 145123 164162 zero 51795,59506 aa 000150 151156 147163 zero 53870,52851 L13: aa 000151 000000 213000 36 epaq 0 " set lp to linkage section aa 000152 700026 764161 lprplp sb|22,*au aa 000153 200000 021100 adlx1 bp|0 " BCPL save aa 000154 700000 542111 sprpbp sb|0,x1 aa 000155 700001 544111 sprplp sb|1,x1 aa 000156 700423 620111 eax0 sb|275,x1 aa 000157 777760 360003 anx0 -16,du aa 000160 700025 740100 stx0 sb|21 " end of save sequence aa 000161 700002 236111 38 ldq sb|2,x1 " s aa 000162 700024 756111 stq sb|20,x1 aa 000163 700003 236111 ldq sb|3,x1 " t aa 000164 700025 756111 stq sb|21,x1 aa 000165 000203 272004 tsbbp L12+2 " EqualString aa 000166 000022 000002 zero 18,2 aa 000167 000000 116007 cmpq 0,dl aa 000170 000003 600004 tze L17 aa 000171 000000 236007 ldq 0,dl " 0 aa 000172 000161 710004 tra L16 L17: aa 000173 700003 235111 39 lda sb|3,x1 " t aa 000174 700024 755111 sta sb|20,x1 aa 000175 777607 272004 tsbbp L1+2 " Length aa 000176 000022 000001 zero 18,1 aa 000177 700005 756111 stq sb|5,x1 " b aa 000200 700002 236111 ldq sb|2,x1 " s aa 000201 700024 756111 stq sb|20,x1 aa 000202 777602 272004 tsbbp L1+2 " Length aa 000203 000022 000001 zero 18,1 aa 000204 700006 756111 stq sb|6,x1 " a aa 000205 700007 450111 40 stz sb|7,x1 " Case aa 000206 000001 236007 41 ldq 1,dl " 1 aa 000207 700010 756111 stq sb|8,x1 " i aa 000210 700006 236111 ldq sb|6,x1 " a aa 000211 700024 756111 stq sb|20,x1 aa 000212 700005 236111 ldq sb|5,x1 " b aa 000213 700025 756111 stq sb|21,x1 4a 000214 400022 272120 tsbbp lp|L18,* " MinI aa 000215 000022 000002 zero 18,2 aa 000216 700011 756111 stq sb|9,x1 aa 000217 000113 710004 tra L19 L20: aa 000220 700003 236111 42 ldq sb|3,x1 " t aa 000221 700024 756111 stq sb|20,x1 aa 000222 700010 236111 ldq sb|8,x1 " i aa 000223 700025 756111 stq sb|21,x1 4a 000224 400020 272120 tsbbp lp|L21,* " Subch aa 000225 000022 000002 zero 18,2 aa 000226 700014 756111 stq sb|12,x1 " d aa 000227 700002 236111 ldq sb|2,x1 " s aa 000230 700024 756111 stq sb|20,x1 aa 000231 700010 236111 ldq sb|8,x1 " i aa 000232 700025 756111 stq sb|21,x1 4a 000233 400020 272120 tsbbp lp|L21,* " Subch aa 000234 000022 000002 zero 18,2 aa 000235 700013 756111 stq sb|11,x1 " c aa 000236 700013 236111 43 ldq sb|11,x1 " c aa 000237 700014 116111 cmpq sb|12,x1 " d aa 000240 000071 600004 tze L22 aa 000241 000141 235007 44 lda 97,dl " 'a' aa 000242 700013 115111 cmpa sb|11,x1 " c aa 000243 000010 605404 tpnz L23 aa 000244 700013 236111 ldq sb|11,x1 " c aa 000245 000172 116007 cmpq 122,dl " 'z' aa 000246 000005 605404 tpnz L23 aa 000247 700013 235111 lda sb|11,x1 " c aa 000250 000141 175007 sba 97,dl " 'a' aa 000251 000101 075007 ada 65,dl " 'A' aa 000252 700013 755111 sta sb|11,x1 " c L23: aa 000253 000141 235007 45 lda 97,dl " 'a' aa 000254 700014 115111 cmpa sb|12,x1 " d aa 000255 000010 605404 tpnz L24 aa 000256 700014 236111 ldq sb|12,x1 " d aa 000257 000172 116007 cmpq 122,dl " 'z' aa 000260 000005 605404 tpnz L24 aa 000261 700014 235111 lda sb|12,x1 " d aa 000262 000141 175007 sba 97,dl " 'a' aa 000263 000101 075007 ada 65,dl " 'A' aa 000264 700014 755111 sta sb|12,x1 " d L24: aa 000265 700013 235111 46 lda sb|11,x1 " c aa 000266 700014 115111 cmpa sb|12,x1 " d aa 000267 000013 600004 tze L25 aa 000270 700013 236111 ldq sb|11,x1 " c aa 000271 700014 116111 cmpq sb|12,x1 " d aa 000272 000003 605004 tpl L26 aa 000273 000002 335007 lca 2,dl aa 000274 000002 710004 tra L27 L26: aa 000275 000002 235007 lda 2,dl " 2 L27: aa 000276 700016 755111 sta sb|14,x1 aa 000277 700016 235111 lda sb|14,x1 aa 000300 000044 777000 llr 36 " exchange A and Q aa 000301 000052 710004 tra L16 L25: aa 000302 700007 234111 47 szn sb|7,x1 " Case aa 000303 000026 601004 tnz L28 aa 000304 700002 236111 ldq sb|2,x1 " s aa 000305 700024 756111 stq sb|20,x1 aa 000306 700010 236111 ldq sb|8,x1 " i aa 000307 700025 756111 stq sb|21,x1 4a 000310 400020 272120 tsbbp lp|L21,* " Subch aa 000311 000022 000002 zero 18,2 aa 000312 700003 235111 lda sb|3,x1 " t aa 000313 700024 755111 sta sb|20,x1 aa 000314 700010 235111 lda sb|8,x1 " i aa 000315 700025 755111 sta sb|21,x1 aa 000316 700015 756111 stq sb|13,x1 " temporary 4a 000317 400020 272120 tsbbp lp|L21,* " Subch aa 000320 000022 000002 zero 18,2 aa 000321 700015 116111 cmpq sb|13,x1 aa 000322 000003 604404 tmoz L29 aa 000323 000001 336007 lcq 1,dl aa 000324 000002 710004 tra L30 L29: aa 000325 000001 236007 ldq 1,dl " 1 L30: aa 000326 700015 756111 stq sb|13,x1 aa 000327 700015 236111 ldq sb|13,x1 aa 000330 700007 756111 stq sb|7,x1 " Case L28: L22: aa 000331 700010 054111 aos sb|8,x1 " i L19: aa 000332 700010 236111 ldq sb|8,x1 " i aa 000333 700011 116111 cmpq sb|9,x1 aa 000334 777664 604404 tmoz L20 aa 000335 700006 235111 49 lda sb|6,x1 " a aa 000336 700005 115111 cmpa sb|5,x1 " b aa 000337 000013 600004 tze L31 aa 000340 700006 236111 ldq sb|6,x1 " a aa 000341 700005 116111 cmpq sb|5,x1 " b aa 000342 000003 605004 tpl L32 aa 000343 000002 335007 lca 2,dl aa 000344 000002 710004 tra L33 L32: aa 000345 000002 235007 lda 2,dl " 2 L33: aa 000346 700011 755111 sta sb|9,x1 aa 000347 700011 235111 lda sb|9,x1 aa 000350 000044 777000 llr 36 " exchange A and Q aa 000351 000002 710004 tra L16 L31: aa 000352 700007 236111 50 ldq sb|7,x1 " Case L16: aa 000353 700005 756111 stq sb|5,x1 aa 000354 700005 236111 ldq sb|5,x1 aa 000355 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000356 200000 121100 sblx1 bp|0 aa 000357 700001 764111 lprplp sb|1,x1 aa 000360 200001 710100 tra bp|1 " end of return sequence " Begin text of EqualString aa 000361 000013 105161 zero 11,35441 " EqualString aa 000362 165141 154123 zero 60001,55379 aa 000363 164162 151156 zero 59506,53870 aa 000364 147000 000000 zero 52736 aa 000365 700004 756111 31 stq sb|4,x1 " temporary L12: aa 000366 000000 213000 epaq 0 " set lp to linkage section aa 000367 700026 764161 lprplp sb|22,*au aa 000370 200000 021100 adlx1 bp|0 " BCPL save aa 000371 700000 542111 sprpbp sb|0,x1 aa 000372 700001 544111 sprplp sb|1,x1 aa 000373 700422 620111 eax0 sb|274,x1 aa 000374 777760 360003 anx0 -16,du aa 000375 700025 740100 stx0 sb|21 " end of save sequence aa 000376 700002 236111 32 ldq sb|2,x1 " s aa 000377 700003 116111 cmpq sb|3,x1 " t aa 000400 000003 601004 tnz L37 aa 000401 000001 335007 lca 1,dl " true aa 000402 000027 710004 tra L36 L37: aa 000403 700005 450111 33 stz sb|5,x1 " i aa 000404 700002 236111 ldq sb|2,x1 " s aa 000405 700016 756111 stq sb|14,x1 aa 000406 777422 272004 tsbbp L3+2 " LengthInWords aa 000407 000014 000001 zero 12,1 aa 000410 000001 176007 sbq 1,dl " 1 aa 000411 700006 756111 stq sb|6,x1 aa 000412 000013 710004 tra L38 L39: aa 000413 700005 724111 lxl4 sb|5,x1 " i aa 000414 700002 760111 lprpap sb|2,x1 " s aa 000415 000000 236114 ldq ap|0,x4 aa 000416 700005 725111 lxl5 sb|5,x1 " i aa 000417 700003 762111 lprpbp sb|3,x1 " t aa 000420 200000 116115 cmpq bp|0,x5 aa 000421 000003 600004 tze L40 aa 000422 000000 235007 lda 0,dl " false aa 000423 000006 710004 tra L36 L40: aa 000424 700005 054111 aos sb|5,x1 " i L38: aa 000425 700005 236111 ldq sb|5,x1 " i aa 000426 700006 116111 cmpq sb|6,x1 aa 000427 777764 604404 tmoz L39 aa 000430 000001 335007 34 lca 1,dl " true L36: aa 000431 700005 755111 sta sb|5,x1 aa 000432 700005 235111 lda sb|5,x1 aa 000433 000044 777000 llr 36 " exchange A and Q aa 000434 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000435 200000 121100 sblx1 bp|0 aa 000436 700001 764111 lprplp sb|1,x1 aa 000437 200001 710100 tra bp|1 " end of return sequence " Begin text of CopyString aa 000440 000012 103157 zero 10,34415 " CopyString aa 000441 160171 123164 zero 57465,42612 aa 000442 162151 156147 zero 58473,56423 aa 000443 700004 756111 53 stq sb|4,x1 " temporary L41: aa 000444 000000 213000 epaq 0 " set lp to linkage section aa 000445 700026 764161 lprplp sb|22,*au aa 000446 200000 021100 adlx1 bp|0 " BCPL save aa 000447 700000 542111 sprpbp sb|0,x1 aa 000450 700001 544111 sprplp sb|1,x1 aa 000451 700424 620111 eax0 sb|276,x1 aa 000452 777760 360003 anx0 -16,du aa 000453 700025 740100 stx0 sb|21 " end of save sequence aa 000454 700002 236111 54 ldq sb|2,x1 " String aa 000455 700010 756111 stq sb|8,x1 aa 000456 777352 272004 tsbbp L3+2 " LengthInWords aa 000457 000006 000001 zero 6,1 aa 000460 700004 756111 stq sb|4,x1 aa 000461 700003 236111 ldq sb|3,x1 " Space aa 000462 700010 756111 stq sb|8,x1 aa 000463 700002 236111 ldq sb|2,x1 " String aa 000464 700011 756111 stq sb|9,x1 aa 000465 700004 236111 ldq sb|4,x1 aa 000466 700012 756111 stq sb|10,x1 4a 000467 400016 272120 tsbbp lp|L45,* " Move aa 000470 000006 000003 zero 6,3 L44: aa 000471 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000472 200000 121100 sblx1 bp|0 aa 000473 700001 764111 lprplp sb|1,x1 aa 000474 200001 710100 tra bp|1 " end of return sequence " Begin text of StringToChar aa 000475 000014 123164 zero 12,42612 " StringToChar aa 000476 162151 156147 zero 58473,56423 aa 000477 124157 103150 zero 43119,34408 aa 000500 141162 000000 zero 49778 L46: aa 000501 000000 213000 56 epaq 0 " set lp to linkage section aa 000502 700026 764161 lprplp sb|22,*au aa 000503 200000 021100 adlx1 bp|0 " BCPL save aa 000504 700000 542111 sprpbp sb|0,x1 aa 000505 700001 544111 sprplp sb|1,x1 aa 000506 700423 620111 eax0 sb|275,x1 aa 000507 777760 360003 anx0 -16,du aa 000510 700025 740100 stx0 sb|21 " end of save sequence aa 000511 700004 450111 57 stz sb|4,x1 " C aa 000512 000001 236007 58 ldq 1,dl " 1 aa 000513 700005 756111 stq sb|5,x1 " i aa 000514 700002 236111 ldq sb|2,x1 " s aa 000515 700016 756111 stq sb|14,x1 aa 000516 700005 236111 ldq sb|5,x1 " i aa 000517 700017 756111 stq sb|15,x1 aa 000520 777264 272004 tsbbp L1+2 " Length aa 000521 000014 000002 zero 12,2 aa 000522 700006 756111 stq sb|6,x1 aa 000523 000015 710004 tra L51 L52: aa 000524 700002 236111 ldq sb|2,x1 " s aa 000525 700016 756111 stq sb|14,x1 aa 000526 700005 236111 ldq sb|5,x1 " i aa 000527 700017 756111 stq sb|15,x1 4a 000530 400020 272120 tsbbp lp|L21,* " Subch aa 000531 000014 000002 zero 12,2 aa 000532 700004 235111 lda sb|4,x1 " C aa 000533 000011 735000 als 9 aa 000534 600000 755100 sta sp|0 aa 000535 600000 276100 orq sp|0 aa 000536 700004 756111 stq sb|4,x1 " C aa 000537 700005 054111 aos sb|5,x1 " i L51: aa 000540 700005 236111 ldq sb|5,x1 " i aa 000541 700006 116111 cmpq sb|6,x1 aa 000542 777762 604404 tmoz L52 aa 000543 700004 235111 59 lda sb|4,x1 " C L50: aa 000544 700004 755111 sta sb|4,x1 aa 000545 700004 235111 lda sb|4,x1 aa 000546 000044 777000 llr 36 " exchange A and Q aa 000547 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000550 200000 121100 sblx1 bp|0 aa 000551 700001 764111 lprplp sb|1,x1 aa 000552 200001 710100 tra bp|1 " end of return sequence " Begin text of CharToString aa 000553 000014 103150 zero 12,34408 " CharToString aa 000554 141162 124157 zero 49778,43119 aa 000555 123164 162151 zero 42612,58473 aa 000556 156147 000000 zero 56423 aa 000557 700003 756111 61 stq sb|3,x1 " temporary L47: aa 000560 000000 213000 epaq 0 " set lp to linkage section aa 000561 700026 764161 lprplp sb|22,*au aa 000562 200000 021100 adlx1 bp|0 " BCPL save aa 000563 700000 542111 sprpbp sb|0,x1 aa 000564 700001 544111 sprplp sb|1,x1 aa 000565 700426 620111 eax0 sb|278,x1 aa 000566 777760 360003 anx0 -16,du aa 000567 700025 740100 stx0 sb|21 " end of save sequence aa 000570 000011 236007 62 ldq 9,dl " ByteSize aa 000571 700005 756111 stq sb|5,x1 " Len aa 000572 000034 710004 tra L56 L57: aa 000573 700002 236111 ldq sb|2,x1 " Ch aa 000574 700005 726111 lxl6 sb|5,x1 " Len aa 000575 000000 772016 qrl 0,x6 aa 000576 000026 601004 tnz L58 aa 000577 700003 236111 63 ldq sb|3,x1 " Space aa 000600 700014 756111 stq sb|12,x1 aa 000601 000022 236007 ldq 18,dl " CountSize aa 000602 700015 756111 stq sb|13,x1 aa 000603 700002 351511 eapab sb|2,x1 " Ch aa 000604 700016 541111 sprpab sb|14,x1 aa 000605 000044 236007 ldq 36,dl " WordSize aa 000606 700005 176111 sbq sb|5,x1 " Len aa 000607 700017 756111 stq sb|15,x1 aa 000610 700005 236111 ldq sb|5,x1 " Len aa 000611 700020 756111 stq sb|16,x1 4a 000612 400014 272120 tsbbp lp|L59,* " MoveBits aa 000613 000012 000005 zero 10,5 aa 000614 700003 236111 64 ldq sb|3,x1 " Space aa 000615 700014 756111 stq sb|12,x1 aa 000616 700005 236111 ldq sb|5,x1 " Len aa 000617 000011 506007 div 9,dl " ByteSize aa 000620 700015 756111 stq sb|13,x1 aa 000621 777240 272004 tsbbp L2+2 " SetLength aa 000622 000012 000002 zero 10,2 aa 000623 000006 710004 tra L55 L58: aa 000624 000011 236007 ldq 9,dl " ByteSize aa 000625 700005 056111 asq sb|5,x1 " Len L56: aa 000626 700005 236111 ldq sb|5,x1 " Len aa 000627 000044 116007 cmpq 36,dl " WordSize aa 000630 777743 604404 tmoz L57 L55: aa 000631 700005 756111 stq sb|5,x1 aa 000632 700005 236111 ldq sb|5,x1 aa 000633 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000634 200000 121100 sblx1 bp|0 aa 000635 700001 764111 lprplp sb|1,x1 aa 000636 200001 710100 tra bp|1 " end of return sequence " Begin text of Concatenate aa 000637 000013 103157 zero 11,34415 " Concatenate aa 000640 156143 141164 zero 56419,49780 aa 000641 145156 141164 zero 51822,49780 aa 000642 145000 000000 zero 51712 aa 000643 700004 756111 68 stq sb|4,x1 " temporary L60: aa 000644 000000 213000 epaq 0 " set lp to linkage section aa 000645 700026 764161 lprplp sb|22,*au aa 000646 200000 021100 adlx1 bp|0 " BCPL save aa 000647 700000 542111 sprpbp sb|0,x1 aa 000650 700001 544111 sprplp sb|1,x1 aa 000651 700426 620111 eax0 sb|278,x1 aa 000652 777760 360003 anx0 -16,du aa 000653 700025 740100 stx0 sb|21 " end of save sequence aa 000654 700004 236111 70 ldq sb|4,x1 " a aa 000655 700054 756111 stq sb|44,x1 aa 000656 777126 272004 tsbbp L1+2 " Length aa 000657 000052 000001 zero 42,1 aa 000660 700037 756111 stq sb|31,x1 " n aa 000661 700004 236111 71 ldq sb|4,x1 " a aa 000662 700002 116111 cmpq sb|2,x1 " Space aa 000663 000007 600004 tze L64 aa 000664 700004 235111 lda sb|4,x1 " a aa 000665 700054 755111 sta sb|44,x1 aa 000666 700002 235111 lda sb|2,x1 " Space aa 000667 700055 755111 sta sb|45,x1 aa 000670 777556 272004 tsbbp L41+2 " CopyString aa 000671 000052 000002 zero 42,2 L64: aa 000672 000001 235007 72 lda 1,dl " 1 aa 000673 700040 755111 sta sb|32,x1 " i 4a 000674 400012 272120 tsbbp lp|L65,* " NumbArgs aa 000675 000052 000000 zero 42 aa 000676 000003 176007 sbq 3,dl " 3 aa 000677 700041 756111 stq sb|33,x1 aa 000700 000043 710004 tra L66 L67: aa 000701 700040 722111 73 lxl2 sb|32,x1 " i aa 000702 700004 351511 eapab sb|4,x1 aa 000703 100000 236112 ldq ab|0,x2 aa 000704 700044 756111 stq sb|36,x1 " p aa 000705 700044 236111 74 ldq sb|36,x1 " p aa 000706 700054 756111 stq sb|44,x1 aa 000707 777075 272004 tsbbp L1+2 " Length aa 000710 000052 000001 zero 42,1 aa 000711 700045 756111 stq sb|37,x1 " l aa 000712 700037 236111 75 ldq sb|31,x1 " n aa 000713 700045 076111 adq sb|37,x1 " l aa 000714 700003 116111 cmpq sb|3,x1 " MaxLen aa 000715 000004 604004 tmi L68 aa 000716 700003 236111 ldq sb|3,x1 " MaxLen aa 000717 700037 176111 sbq sb|31,x1 " n aa 000720 700045 756111 stq sb|37,x1 " l L68: aa 000721 700002 236111 76 ldq sb|2,x1 " Space aa 000722 700054 756111 stq sb|44,x1 aa 000723 700037 236111 ldq sb|31,x1 " n aa 000724 000011 402007 mpy 9,dl " ByteSize aa 000725 000022 076007 adq 18,dl " CountSize aa 000726 700055 756111 stq sb|45,x1 aa 000727 700044 236111 ldq sb|36,x1 " p aa 000730 700056 756111 stq sb|46,x1 aa 000731 000022 236007 ldq 18,dl " CountSize aa 000732 700057 756111 stq sb|47,x1 aa 000733 700045 236111 ldq sb|37,x1 " l aa 000734 000011 402007 mpy 9,dl " ByteSize aa 000735 700060 756111 stq sb|48,x1 4a 000736 400014 272120 tsbbp lp|L59,* " MoveBits aa 000737 000052 000005 zero 42,5 aa 000740 700045 236111 77 ldq sb|37,x1 " l aa 000741 700037 056111 asq sb|31,x1 " n aa 000742 700040 054111 aos sb|32,x1 " i L66: aa 000743 700040 236111 ldq sb|32,x1 " i aa 000744 700041 116111 cmpq sb|33,x1 aa 000745 777734 604404 tmoz L67 aa 000746 700002 235111 79 lda sb|2,x1 " Space aa 000747 700054 755111 sta sb|44,x1 aa 000750 700037 235111 lda sb|31,x1 " n aa 000751 700055 755111 sta sb|45,x1 aa 000752 777107 272004 tsbbp L2+2 " SetLength aa 000753 000052 000002 zero 42,2 L63: aa 000754 700037 756111 stq sb|31,x1 aa 000755 700037 236111 ldq sb|31,x1 aa 000756 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000757 200000 121100 sblx1 bp|0 aa 000760 700001 764111 lprplp sb|1,x1 aa 000761 200001 710100 tra bp|1 " end of return sequence " Begin text of Substr aa 000762 000006 123165 zero 6,42613 " Substr aa 000763 142163 164162 zero 50291,59506 aa 000764 700036 756111 82 stq sb|30,x1 " temporary L69: aa 000765 000000 213000 epaq 0 " set lp to linkage section aa 000766 700026 764161 lprplp sb|22,*au aa 000767 200000 021100 adlx1 bp|0 " BCPL save aa 000770 700000 542111 sprpbp sb|0,x1 aa 000771 700001 544111 sprplp sb|1,x1 aa 000772 700426 620111 eax0 sb|278,x1 aa 000773 777760 360003 anx0 -16,du aa 000774 700025 740100 stx0 sb|21 " end of save sequence aa 000775 700003 236111 83 ldq sb|3,x1 " String aa 000776 700016 756111 stq sb|14,x1 aa 000777 777005 272004 tsbbp L1+2 " Length aa 001000 000014 000001 zero 12,1 aa 001001 700004 176111 sbq sb|4,x1 " First aa 001002 000001 076007 adq 1,dl " 1 aa 001003 700007 756111 stq sb|7,x1 " l 4a 001004 400012 272120 84 tsbbp lp|L65,* " NumbArgs aa 001005 000014 000000 zero 12 aa 001006 000004 116007 cmpq 4,dl " 4 aa 001007 000004 604004 tmi L74 aa 001010 700005 236111 ldq sb|5,x1 " Count aa 001011 700007 116111 cmpq sb|7,x1 " l aa 001012 000003 604404 tmoz L73 L74: aa 001013 700007 235111 lda sb|7,x1 " l aa 001014 700005 755111 sta sb|5,x1 " Count L73: aa 001015 700005 234111 85 szn sb|5,x1 " Count aa 001016 000002 605004 tpl L75 aa 001017 700005 450111 stz sb|5,x1 " Count L75: aa 001020 700002 235111 86 lda sb|2,x1 " Space aa 001021 700016 755111 sta sb|14,x1 aa 001022 000022 235007 lda 18,dl " CountSize aa 001023 700017 755111 sta sb|15,x1 aa 001024 700003 235111 lda sb|3,x1 " String aa 001025 700020 755111 sta sb|16,x1 aa 001026 700004 235111 lda sb|4,x1 " First aa 001027 000001 175007 sba 1,dl " 1 aa 001030 000044 777000 llr 36 " exchange A and Q aa 001031 000011 402007 mpy 9,dl " ByteSize aa 001032 000022 076007 adq 18,dl " CountSize aa 001033 700021 756111 stq sb|17,x1 aa 001034 700005 236111 ldq sb|5,x1 " Count aa 001035 000011 402007 mpy 9,dl " ByteSize aa 001036 700022 756111 stq sb|18,x1 4a 001037 400014 272120 tsbbp lp|L59,* " MoveBits aa 001040 000014 000005 zero 12,5 aa 001041 700002 236111 87 ldq sb|2,x1 " Space aa 001042 700016 756111 stq sb|14,x1 aa 001043 700005 236111 ldq sb|5,x1 " Count aa 001044 700017 756111 stq sb|15,x1 aa 001045 777014 272004 tsbbp L2+2 " SetLength aa 001046 000014 000002 zero 12,2 L72: aa 001047 700007 756111 stq sb|7,x1 aa 001050 700007 236111 ldq sb|7,x1 aa 001051 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001052 200000 121100 sblx1 bp|0 aa 001053 700001 764111 lprplp sb|1,x1 aa 001054 200001 710100 tra bp|1 " end of return sequence " Begin text of IndexCh aa 001055 000007 111156 zero 7,37486 " IndexCh aa 001056 144145 170103 zero 51301,61507 aa 001057 150000 000000 zero 53248 aa 001060 700006 756111 90 stq sb|6,x1 " temporary L76: aa 001061 000000 213000 epaq 0 " set lp to linkage section aa 001062 700026 764161 lprplp sb|22,*au aa 001063 200000 021100 adlx1 bp|0 " BCPL save aa 001064 700000 542111 sprpbp sb|0,x1 aa 001065 700001 544111 sprplp sb|1,x1 aa 001066 700425 620111 eax0 sb|277,x1 aa 001067 777760 360003 anx0 -16,du aa 001070 700025 740100 stx0 sb|21 " end of save sequence aa 001071 700002 236111 ldq sb|2,x1 " String aa 001072 700014 756111 stq sb|12,x1 aa 001073 776711 272004 tsbbp L1+2 " Length aa 001074 000012 000001 zero 10,1 aa 001075 700007 756111 stq sb|7,x1 aa 001076 700002 236111 ldq sb|2,x1 " String aa 001077 700014 756111 stq sb|12,x1 aa 001100 000002 236007 ldq 2,dl aa 001101 700015 756111 stq sb|13,x1 aa 001102 700007 236111 ldq sb|7,x1 aa 001103 700016 756111 stq sb|14,x1 aa 001104 700003 236111 ldq sb|3,x1 " Ch aa 001105 700017 756111 stq sb|15,x1 4a 001106 400010 272120 tsbbp lp|L79,* " ScanChar aa 001107 000012 000004 zero 10,4 aa 001110 000001 076007 adq 1,dl " 1 aa 001111 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001112 200000 121100 sblx1 bp|0 aa 001113 700001 764111 lprplp sb|1,x1 aa 001114 200001 710100 tra bp|1 " end of return sequence " Begin text of Index aa 001115 000005 111156 zero 5,37486 " Index aa 001116 144145 170000 zero 51301,61440 aa 001117 700004 756111 92 stq sb|4,x1 " temporary L80: aa 001120 000000 213000 epaq 0 " set lp to linkage section aa 001121 700026 764161 lprplp sb|22,*au aa 001122 200000 021100 adlx1 bp|0 " BCPL save aa 001123 700000 542111 sprpbp sb|0,x1 aa 001124 700001 544111 sprplp sb|1,x1 aa 001125 700425 620111 eax0 sb|277,x1 aa 001126 777760 360003 anx0 -16,du aa 001127 700025 740100 stx0 sb|21 " end of save sequence aa 001130 700003 236111 93 ldq sb|3,x1 " Pattern aa 001131 700022 756111 stq sb|18,x1 aa 001132 776652 272004 tsbbp L1+2 " Length aa 001133 000020 000001 zero 16,1 aa 001134 700005 756111 stq sb|5,x1 " l aa 001135 700005 234111 94 szn sb|5,x1 " l aa 001136 000003 601004 tnz L85 aa 001137 000000 236007 ldq 0,dl " 0 aa 001140 000104 710004 tra L84 L85: aa 001141 700003 235111 95 lda sb|3,x1 " Pattern aa 001142 700022 755111 sta sb|18,x1 aa 001143 000001 235007 lda 1,dl " 1 aa 001144 700023 755111 sta sb|19,x1 4a 001145 400020 272120 tsbbp lp|L21,* " Subch aa 001146 000020 000002 zero 16,2 aa 001147 700006 756111 stq sb|6,x1 " Ch aa 001150 700002 236111 96 ldq sb|2,x1 " String aa 001151 700022 756111 stq sb|18,x1 aa 001152 776632 272004 tsbbp L1+2 " Length aa 001153 000020 000001 zero 16,1 aa 001154 700005 176111 sbq sb|5,x1 " l aa 001155 000001 076007 adq 1,dl " 1 aa 001156 700007 756111 stq sb|7,x1 " n aa 001157 700010 450111 97 stz sb|8,x1 " b aa 001160 000060 710004 98 tra L86 L87: aa 001161 700002 236111 99 ldq sb|2,x1 " String aa 001162 700022 756111 stq sb|18,x1 aa 001163 700010 236111 ldq sb|8,x1 " b aa 001164 000002 076007 adq 2,dl aa 001165 700023 756111 stq sb|19,x1 aa 001166 700007 236111 ldq sb|7,x1 " n aa 001167 700010 176111 sbq sb|8,x1 " b aa 001170 700024 756111 stq sb|20,x1 aa 001171 700006 236111 ldq sb|6,x1 " Ch aa 001172 700025 756111 stq sb|21,x1 4a 001173 400010 272120 tsbbp lp|L79,* " ScanChar aa 001174 000020 000004 zero 16,4 aa 001175 700011 756111 stq sb|9,x1 " p aa 001176 700011 234111 100 szn sb|9,x1 " p aa 001177 000044 604004 tmi L88 aa 001200 700010 236111 101 ldq sb|8,x1 " b aa 001201 700011 076111 adq sb|9,x1 " p aa 001202 000001 076007 adq 1,dl " 1 aa 001203 700010 756111 stq sb|8,x1 " b aa 001204 000002 236007 102 ldq 2,dl " 2 aa 001205 700012 756111 stq sb|10,x1 " i aa 001206 700005 236111 ldq sb|5,x1 " l aa 001207 700013 756111 stq sb|11,x1 aa 001210 000023 710004 tra L89 L90: aa 001211 700002 236111 103 ldq sb|2,x1 " String aa 001212 700022 756111 stq sb|18,x1 aa 001213 700010 236111 ldq sb|8,x1 " b aa 001214 700012 076111 adq sb|10,x1 " i aa 001215 000001 176007 sbq 1,dl " 1 aa 001216 700023 756111 stq sb|19,x1 4a 001217 400020 272120 tsbbp lp|L21,* " Subch aa 001220 000020 000002 zero 16,2 aa 001221 700003 235111 lda sb|3,x1 " Pattern aa 001222 700022 755111 sta sb|18,x1 aa 001223 700012 235111 lda sb|10,x1 " i aa 001224 700023 755111 sta sb|19,x1 aa 001225 700014 756111 stq sb|12,x1 " temporary 4a 001226 400020 272120 tsbbp lp|L21,* " Subch aa 001227 000020 000002 zero 16,2 aa 001230 700014 116111 cmpq sb|12,x1 aa 001231 000007 601004 tnz L81 aa 001232 700012 054111 aos sb|10,x1 " i L89: aa 001233 700012 236111 ldq sb|10,x1 " i aa 001234 700013 116111 cmpq sb|11,x1 aa 001235 777754 604404 tmoz L90 aa 001236 700010 236111 104 ldq sb|8,x1 " b aa 001237 000005 710004 105 tra L84 L81: L86: aa 001240 700010 235111 lda sb|8,x1 " b aa 001241 700007 115111 cmpa sb|7,x1 " n aa 001242 777717 604004 tmi L87 L88: aa 001243 000000 236007 107 ldq 0,dl " 0 L84: aa 001244 700005 756111 stq sb|5,x1 aa 001245 700005 236111 ldq sb|5,x1 aa 001246 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001247 200000 121100 sblx1 bp|0 aa 001250 700001 764111 lprplp sb|1,x1 aa 001251 200001 710100 tra bp|1 " end of return sequence " Begin text of LastNonBlank aa 001252 000014 114141 zero 12,39009 " LastNonBlank aa 001253 163164 116157 zero 58996,40047 aa 001254 156102 154141 zero 56386,55393 aa 001255 156153 000000 zero 56427 aa 001256 700004 756111 123 stq sb|4,x1 " temporary L92: aa 001257 000000 213000 epaq 0 " set lp to linkage section aa 001260 700026 764161 lprplp sb|22,*au aa 001261 200000 021100 adlx1 bp|0 " BCPL save aa 001262 700000 542111 sprpbp sb|0,x1 aa 001263 700001 544111 sprplp sb|1,x1 aa 001264 700426 620111 eax0 sb|278,x1 aa 001265 777760 360003 anx0 -16,du aa 001266 700025 740100 stx0 sb|21 " end of save sequence aa 001267 700003 236111 124 ldq sb|3,x1 " Len aa 001270 000004 506007 div 4,dl " 4 aa 001271 700003 175111 sba sb|3,x1 " Len aa 001272 000000 531007 neg 0,dl aa 001273 700005 755111 sta sb|5,x1 " Lp aa 001274 700006 450111 125 stz sb|6,x1 " c aa 001275 000026 710004 126 tra L96 L97: aa 001276 000001 335007 127 lca 1,dl " 1 aa 001277 700003 055111 asa sb|3,x1 " Len aa 001300 700006 351511 128 eapab sb|6,x1 " c aa 001301 700014 541111 sprpab sb|12,x1 aa 001302 000033 235007 lda 27,dl aa 001303 700015 755111 sta sb|13,x1 aa 001304 700002 235111 lda sb|2,x1 " Space aa 001305 700016 755111 sta sb|14,x1 aa 001306 700003 236111 ldq sb|3,x1 " Len aa 001307 000011 402007 mpy 9,dl " ByteSize aa 001310 700017 756111 stq sb|15,x1 aa 001311 000011 236007 ldq 9,dl " ByteSize aa 001312 700020 756111 stq sb|16,x1 4a 001313 400014 272120 tsbbp lp|L59,* " MoveBits aa 001314 000012 000005 zero 10,5 aa 001315 700006 236111 129 ldq sb|6,x1 " c aa 001316 000040 116007 cmpq 32,dl " '*s' aa 001317 000004 600004 tze L98 aa 001320 700003 235111 lda sb|3,x1 " Len aa 001321 000001 075007 ada 1,dl " 1 aa 001322 000051 710004 tra L95 L98: L96: aa 001323 700003 235111 lda sb|3,x1 " Len aa 001324 700005 115111 cmpa sb|5,x1 " Lp aa 001325 777751 605404 tpnz L97 aa 001326 000012 710004 131 tra L99 L100: aa 001327 700003 236111 132 ldq sb|3,x1 " Len aa 001330 000004 506007 div 4,dl " 4 aa 001331 000001 176007 sbq 1,dl " 1 aa 001332 700002 761111 lprpab sb|2,x1 " Space aa 001333 100000 235106 lda ab|0,ql aa 001334 000047 115004 cmpa L102 " BlankWord aa 001335 000005 601004 tnz L101 aa 001336 000004 336007 133 lcq 4,dl " 4 aa 001337 700003 056111 asq sb|3,x1 " Len L99: aa 001340 700003 234111 szn sb|3,x1 " Len aa 001341 777766 605404 tpnz L100 L101: aa 001342 000026 710004 135 tra L103 L104: aa 001343 000001 336007 136 lcq 1,dl " 1 aa 001344 700003 056111 asq sb|3,x1 " Len aa 001345 700006 353511 137 eapbb sb|6,x1 " c aa 001346 700014 543111 sprpbb sb|12,x1 aa 001347 000033 236007 ldq 27,dl aa 001350 700015 756111 stq sb|13,x1 aa 001351 700002 236111 ldq sb|2,x1 " Space aa 001352 700016 756111 stq sb|14,x1 aa 001353 700003 236111 ldq sb|3,x1 " Len aa 001354 000011 402007 mpy 9,dl " ByteSize aa 001355 700017 756111 stq sb|15,x1 aa 001356 000011 236007 ldq 9,dl " ByteSize aa 001357 700020 756111 stq sb|16,x1 4a 001360 400014 272120 tsbbp lp|L59,* " MoveBits aa 001361 000012 000005 zero 10,5 aa 001362 700006 236111 138 ldq sb|6,x1 " c aa 001363 000040 116007 cmpq 32,dl " '*s' aa 001364 000004 600004 tze L105 aa 001365 700003 235111 lda sb|3,x1 " Len aa 001366 000001 075007 ada 1,dl " 1 aa 001367 000004 710004 tra L95 L105: L103: aa 001370 700003 234111 szn sb|3,x1 " Len aa 001371 777752 605404 tpnz L104 aa 001372 700003 235111 140 lda sb|3,x1 " Len L95: aa 001373 700005 755111 sta sb|5,x1 aa 001374 700005 235111 lda sb|5,x1 aa 001375 000044 777000 llr 36 " exchange A and Q aa 001376 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001377 200000 121100 sblx1 bp|0 aa 001400 700001 764111 lprplp sb|1,x1 aa 001401 200001 710100 tra bp|1 " end of return sequence aa 001402 700004 756111 stq sb|4,x1 " temporary " Literal pool L102: aa 001403 040040 040040 zero 16416,16416 " BlankWord " Begin text of Pad aa 001404 000003 120141 zero 3,41057 " Pad aa 001405 144000 000000 zero 51200 L91: aa 001406 000000 213000 110 epaq 0 " set lp to linkage section aa 001407 700026 764161 lprplp sb|22,*au aa 001410 200000 021100 adlx1 bp|0 " BCPL save aa 001411 700000 542111 sprpbp sb|0,x1 aa 001412 700001 544111 sprplp sb|1,x1 aa 001413 700426 620111 eax0 sb|278,x1 aa 001414 777760 360003 anx0 -16,du aa 001415 700025 740100 stx0 sb|21 " end of save sequence aa 001416 700004 236111 111 ldq sb|4,x1 " Len aa 001417 000004 506007 div 4,dl " 4 aa 001420 700004 175111 sba sb|4,x1 " Len aa 001421 000000 531007 neg 0,dl aa 001422 700006 755111 sta sb|6,x1 " Lp aa 001423 700003 236111 ldq sb|3,x1 " From aa 001424 000004 506007 div 4,dl " 4 aa 001425 700003 175111 sba sb|3,x1 " From aa 001426 000000 531007 neg 0,dl aa 001427 700005 755111 sta sb|5,x1 " Fp aa 001430 777753 235004 112 lda L102 " BlankWord aa 001431 700007 755111 sta sb|7,x1 " Blanks aa 001432 700005 235111 113 lda sb|5,x1 " Fp aa 001433 700003 115111 cmpa sb|3,x1 " From aa 001434 000030 600004 tze L109 aa 001435 000004 236007 114 ldq 4,dl " 4 aa 001436 700005 056111 asq sb|5,x1 " Fp aa 001437 700005 236111 115 ldq sb|5,x1 " Fp aa 001440 700020 756111 stq sb|16,x1 aa 001441 700004 236111 ldq sb|4,x1 " Len aa 001442 700021 756111 stq sb|17,x1 4a 001443 400022 272120 tsbbp lp|L18,* " MinI aa 001444 000016 000002 zero 14,2 aa 001445 700003 176111 sbq sb|3,x1 " From aa 001446 000011 402007 mpy 9,dl " ByteSize aa 001447 700010 756111 stq sb|8,x1 aa 001450 700002 236111 ldq sb|2,x1 " Space aa 001451 700020 756111 stq sb|16,x1 aa 001452 700003 236111 ldq sb|3,x1 " From aa 001453 000011 402007 mpy 9,dl " ByteSize aa 001454 700021 756111 stq sb|17,x1 aa 001455 700007 353511 eapbb sb|7,x1 " Blanks aa 001456 700022 543111 sprpbb sb|18,x1 aa 001457 700023 450111 stz sb|19,x1 aa 001460 700010 236111 ldq sb|8,x1 aa 001461 700024 756111 stq sb|20,x1 4a 001462 400014 272120 tsbbp lp|L59,* " MoveBits aa 001463 000016 000005 zero 14,5 L109: aa 001464 000010 710004 117 tra L110 L111: aa 001465 700005 236111 118 ldq sb|5,x1 " Fp aa 001466 000004 506007 div 4,dl " 4 aa 001467 777714 235004 lda L102 " BlankWord aa 001470 700002 763111 lprpbb sb|2,x1 " Space aa 001471 300000 755106 sta bb|0,ql aa 001472 000004 236007 119 ldq 4,dl " 4 aa 001473 700005 056111 asq sb|5,x1 " Fp L110: aa 001474 700005 236111 ldq sb|5,x1 " Fp aa 001475 700006 116111 cmpq sb|6,x1 " Lp aa 001476 777767 604004 tmi L111 aa 001477 700006 235111 121 lda sb|6,x1 " Lp aa 001500 700004 115111 cmpa sb|4,x1 " Len aa 001501 000022 600004 tze L112 aa 001502 700005 236111 ldq sb|5,x1 " Fp aa 001503 700006 116111 cmpq sb|6,x1 " Lp aa 001504 000017 605404 tpnz L112 aa 001505 700002 235111 lda sb|2,x1 " Space aa 001506 700020 755111 sta sb|16,x1 aa 001507 700006 236111 ldq sb|6,x1 " Lp aa 001510 000011 402007 mpy 9,dl " ByteSize aa 001511 700021 756111 stq sb|17,x1 aa 001512 700007 371511 eaplb sb|7,x1 " Blanks aa 001513 700022 545111 sprplb sb|18,x1 aa 001514 700023 450111 stz sb|19,x1 aa 001515 700004 236111 ldq sb|4,x1 " Len aa 001516 700006 176111 sbq sb|6,x1 " Lp aa 001517 000011 402007 mpy 9,dl " ByteSize aa 001520 700024 756111 stq sb|20,x1 4a 001521 400014 272120 tsbbp lp|L59,* " MoveBits aa 001522 000016 000005 zero 14,5 L112: L108: aa 001523 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001524 200000 121100 sblx1 bp|0 aa 001525 700001 764111 lprplp sb|1,x1 aa 001526 200001 710100 tra bp|1 " end of return sequence " Begin text of MakePl1String aa 001527 000015 115141 zero 13,39521 " MakePl1String aa 001530 153145 120154 zero 54885,41068 aa 001531 061123 164162 zero 25171,59506 aa 001532 151156 147000 zero 53870,52736 L113: aa 001533 000000 213000 143 epaq 0 " set lp to linkage section aa 001534 700026 764161 lprplp sb|22,*au aa 001535 200000 021100 adlx1 bp|0 " BCPL save aa 001536 700000 542111 sprpbp sb|0,x1 aa 001537 700001 544111 sprplp sb|1,x1 aa 001540 700426 620111 eax0 sb|278,x1 aa 001541 777760 360003 anx0 -16,du aa 001542 700025 740100 stx0 sb|21 " end of save sequence aa 001543 700002 236111 144 ldq sb|2,x1 " BcplString aa 001544 700012 756111 stq sb|10,x1 aa 001545 776237 272004 tsbbp L1+2 " Length aa 001546 000010 000001 zero 8,1 aa 001547 700006 756111 stq sb|6,x1 " l aa 001550 700006 236111 145 ldq sb|6,x1 " l aa 001551 700004 116111 cmpq sb|4,x1 " Len aa 001552 000003 604404 tmoz L117 aa 001553 700004 235111 lda sb|4,x1 " Len aa 001554 700006 755111 sta sb|6,x1 " l L117: aa 001555 700003 235111 146 lda sb|3,x1 " Space aa 001556 700012 755111 sta sb|10,x1 aa 001557 700013 450111 stz sb|11,x1 aa 001560 700002 235111 lda sb|2,x1 " BcplString aa 001561 700014 755111 sta sb|12,x1 aa 001562 000022 235007 lda 18,dl " CountSize aa 001563 700015 755111 sta sb|13,x1 aa 001564 700006 236111 ldq sb|6,x1 " l aa 001565 000011 402007 mpy 9,dl " ByteSize aa 001566 700016 756111 stq sb|14,x1 4a 001567 400014 272120 tsbbp lp|L59,* " MoveBits aa 001570 000010 000005 zero 8,5 aa 001571 700004 236111 147 ldq sb|4,x1 " Len aa 001572 700006 116111 cmpq sb|6,x1 " l aa 001573 000011 604404 tmoz L118 aa 001574 700003 235111 lda sb|3,x1 " Space aa 001575 700012 755111 sta sb|10,x1 aa 001576 700006 235111 lda sb|6,x1 " l aa 001577 700013 755111 sta sb|11,x1 aa 001600 700004 235111 lda sb|4,x1 " Len aa 001601 700014 755111 sta sb|12,x1 aa 001602 777606 272004 tsbbp L91+2 " Pad aa 001603 000010 000003 zero 8,3 L118: aa 001604 700003 235111 148 lda sb|3,x1 " Space L116: aa 001605 700006 755111 sta sb|6,x1 aa 001606 700006 235111 lda sb|6,x1 aa 001607 000044 777000 llr 36 " exchange A and Q aa 001610 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001611 200000 121100 sblx1 bp|0 aa 001612 700001 764111 lprplp sb|1,x1 aa 001613 200001 710100 tra bp|1 " end of return sequence " Begin text of MakeBcplString aa 001614 000016 115141 zero 14,39521 " MakeBcplString aa 001615 153145 102143 zero 54885,33891 aa 001616 160154 123164 zero 57452,42612 aa 001617 162151 156147 zero 58473,56423 aa 001620 700005 756111 150 stq sb|5,x1 " temporary L119: aa 001621 000000 213000 epaq 0 " set lp to linkage section aa 001622 700026 764161 lprplp sb|22,*au aa 001623 200000 021100 adlx1 bp|0 " BCPL save aa 001624 700000 542111 sprpbp sb|0,x1 aa 001625 700001 544111 sprplp sb|1,x1 aa 001626 700426 620111 eax0 sb|278,x1 aa 001627 777760 360003 anx0 -16,du aa 001630 700025 740100 stx0 sb|21 " end of save sequence aa 001631 700002 236111 151 ldq sb|2,x1 " Pl1String aa 001632 700012 756111 stq sb|10,x1 aa 001633 700003 236111 ldq sb|3,x1 " Len aa 001634 700013 756111 stq sb|11,x1 aa 001635 777424 272004 tsbbp L92+2 " LastNonBlank aa 001636 000010 000002 zero 8,2 aa 001637 700003 756111 stq sb|3,x1 " Len aa 001640 700004 236111 152 ldq sb|4,x1 " Space aa 001641 700012 756111 stq sb|10,x1 aa 001642 000022 236007 ldq 18,dl " CountSize aa 001643 700013 756111 stq sb|11,x1 aa 001644 700002 236111 ldq sb|2,x1 " Pl1String aa 001645 700014 756111 stq sb|12,x1 aa 001646 700015 450111 stz sb|13,x1 aa 001647 700003 236111 ldq sb|3,x1 " Len aa 001650 000011 402007 mpy 9,dl " ByteSize aa 001651 700016 756111 stq sb|14,x1 4a 001652 400014 272120 tsbbp lp|L59,* " MoveBits aa 001653 000010 000005 zero 8,5 aa 001654 700004 236111 153 ldq sb|4,x1 " Space aa 001655 700012 756111 stq sb|10,x1 aa 001656 700003 236111 ldq sb|3,x1 " Len aa 001657 700013 756111 stq sb|11,x1 aa 001660 776201 272004 tsbbp L2+2 " SetLength aa 001661 000010 000002 zero 8,2 L122: aa 001662 700006 756111 stq sb|6,x1 aa 001663 700006 236111 ldq sb|6,x1 aa 001664 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001665 200000 121100 sblx1 bp|0 aa 001666 700001 764111 lprplp sb|1,x1 aa 001667 200001 710100 tra bp|1 " end of return sequence " Definition section part one - external entry points 5a 000000 000067 000000 " pointer to first definition aa 000001 000000 600000 " flags: new format, ignore header aa 000002 000000 000000 " list terminator aa 000003 015142 143160 " "bcpl_strings_" aa 000004 154137 163164 aa 000005 162151 156147 aa 000006 163137 000000 aa 000007 016115 141153 " "MakeBcplString" aa 000010 145102 143160 aa 000011 154123 164162 aa 000012 151156 147000 aa 000013 015115 141153 " "MakePl1String" aa 000014 145120 154061 aa 000015 123164 162151 aa 000016 156147 000000 aa 000017 005111 156144 " "Index" aa 000020 145170 000000 aa 000021 007111 156144 " "IndexCh" aa 000022 145170 103150 aa 000023 006123 165142 " "Substr" aa 000024 163164 162000 aa 000025 013103 157156 " "Concatenate" aa 000026 143141 164145 aa 000027 156141 164145 aa 000030 014103 150141 " "CharToString" aa 000031 162124 157123 aa 000032 164162 151156 aa 000033 147000 000000 aa 000034 014123 164162 " "StringToChar" aa 000035 151156 147124 aa 000036 157103 150141 aa 000037 162000 000000 aa 000040 012103 157160 " "CopyString" aa 000041 171123 164162 aa 000042 151156 147000 aa 000043 016103 157155 " "CompareStrings" aa 000044 160141 162145 aa 000045 123164 162151 aa 000046 156147 163000 aa 000047 013105 161165 " "EqualString" aa 000050 141154 123164 aa 000051 162151 156147 aa 000052 015114 145156 " "LengthInWords" aa 000053 147164 150111 aa 000054 156127 157162 aa 000055 144163 000000 aa 000056 011123 145164 " "SetLength" aa 000057 114145 156147 aa 000060 164150 000000 aa 000061 006114 145156 " "Length" aa 000062 147164 150000 aa 000063 014163 171155 " "symbol_table" aa 000064 142157 154137 aa 000065 164141 142154 aa 000066 145000 000000 " Segname definition for bcpl_strings_ 55 000067 000072 000002 " forward, backward threads 5a 000070 000002 400003 " value defined, class flags 55 000071 000003 000072 " name pointer, first entry def " Definition for MakeBcplString 55 000072 000075 000067 " forward, backward threads 0a 000073 001621 500000 " value defined, class flags 55 000074 000007 000067 " name pointer, segname def pointer " Definition for MakePl1String 55 000075 000100 000072 " forward, backward threads 0a 000076 001533 500000 " value defined, class flags 55 000077 000013 000067 " name pointer, segname def pointer " Definition for Index 55 000100 000103 000075 " forward, backward threads 0a 000101 001120 500000 " value defined, class flags 55 000102 000017 000067 " name pointer, segname def pointer " Definition for IndexCh 55 000103 000106 000100 " forward, backward threads 0a 000104 001061 500000 " value defined, class flags 55 000105 000021 000067 " name pointer, segname def pointer " Definition for Substr 55 000106 000111 000103 " forward, backward threads 0a 000107 000765 500000 " value defined, class flags 55 000110 000023 000067 " name pointer, segname def pointer " Definition for Concatenate 55 000111 000114 000106 " forward, backward threads 0a 000112 000644 500000 " value defined, class flags 55 000113 000025 000067 " name pointer, segname def pointer " Definition for CharToString 55 000114 000117 000111 " forward, backward threads 0a 000115 000560 500000 " value defined, class flags 55 000116 000030 000067 " name pointer, segname def pointer " Definition for StringToChar 55 000117 000122 000114 " forward, backward threads 0a 000120 000501 500000 " value defined, class flags 55 000121 000034 000067 " name pointer, segname def pointer " Definition for CopyString 55 000122 000125 000117 " forward, backward threads 0a 000123 000444 500000 " value defined, class flags 55 000124 000040 000067 " name pointer, segname def pointer " Definition for CompareStrings 55 000125 000130 000122 " forward, backward threads 0a 000126 000151 500000 " value defined, class flags 55 000127 000043 000067 " name pointer, segname def pointer " Definition for EqualString 55 000130 000133 000125 " forward, backward threads 0a 000131 000366 500000 " value defined, class flags 55 000132 000047 000067 " name pointer, segname def pointer " Definition for LengthInWords 55 000133 000136 000130 " forward, backward threads 0a 000134 000026 500000 " value defined, class flags 55 000135 000052 000067 " name pointer, segname def pointer " Definition for SetLength 55 000136 000141 000133 " forward, backward threads 0a 000137 000057 500000 " value defined, class flags 55 000140 000056 000067 " name pointer, segname def pointer " Definition for Length 55 000141 000144 000136 " forward, backward threads 0a 000142 000002 500000 " value defined, class flags 55 000143 000061 000067 " name pointer, segname def pointer " Definition for symbol_table 55 000144 000002 000141 " forward, backward threads 6a 000145 000000 400002 " value defined, class flags 55 000146 000063 000067 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000147 022142 143160 " "bcpl_machine_code_" aa 000150 154137 155141 aa 000151 143150 151156 aa 000152 145137 143157 aa 000153 144145 137000 aa 000154 010123 143141 " "ScanChar" aa 000155 156103 150141 aa 000156 162000 000000 5a 000157 000160 000000 aa 000160 000004 000000 55 000161 000147 000154 aa 000162 010116 165155 " "NumbArgs" aa 000163 142101 162147 aa 000164 163000 000000 5a 000165 000166 000000 aa 000166 000004 000000 55 000167 000147 000162 aa 000170 010115 157166 " "MoveBits" aa 000171 145102 151164 aa 000172 163000 000000 5a 000173 000174 000000 aa 000174 000004 000000 55 000175 000147 000170 aa 000176 004115 157166 " "Move" aa 000177 145000 000000 5a 000200 000201 000000 aa 000201 000004 000000 55 000202 000147 000176 aa 000203 005123 165142 " "Subch" aa 000204 143150 000000 5a 000205 000206 000000 aa 000206 000004 000000 55 000207 000147 000203 aa 000210 020142 143160 " "bcpl_arithmetic_" aa 000211 154137 141162 aa 000212 151164 150155 aa 000213 145164 151143 aa 000214 137000 000000 aa 000215 004115 151156 " "MinI" aa 000216 111000 000000 5a 000217 000220 000000 aa 000220 000004 000000 55 000221 000210 000215 " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 001670 000000 " address of defs aa 000002 000000 000000 aa 000003 000000 000000 aa 000004 000000 000000 aa 000005 000000 000000 2a 000006 000010 000024 " offset to links, total length aa 000007 000000 000024 " obsolete length " External link pairs L79: 3a 000010 777770 000046 " "bcpl_machine_code_$ScanChar" 5a 000011 000157 000000 L65: 3a 000012 777766 000046 " "bcpl_machine_code_$NumbArgs" 5a 000013 000165 000000 L59: 3a 000014 777764 000046 " "bcpl_machine_code_$MoveBits" 5a 000015 000173 000000 L45: 3a 000016 777762 000046 " "bcpl_machine_code_$Move" 5a 000017 000200 000000 L21: 3a 000020 777760 000046 " "bcpl_machine_code_$Subch" 5a 000021 000205 000000 L18: 3a 000022 777756 000046 " "bcpl_arithmetic_$MinI" 5a 000023 000217 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 440450 264011 " 01/24/75 0700.9 mst Fri aa 000010 142143 160154 " "bcpl " aa 000011 040040 040040 aa 000012 000036 000035 " compiler version name - pointer, length aa 000013 000046 000024 " user id - pointer, length aa 000014 000053 000043 " comment string - pointer, length aa 000015 000002 000002 " text and linkage boundaries aa 000016 000024 000000 " source map, symbol tree root 7a 000017 000000 000106 " section header pointer, block size aa 000020 000000 000106 " next block pointer, rel_text aa 000021 000000 000126 " rel_def, rel_link aa 000022 000133 000106 " rel_symbol, default truncate aa 000023 000024 000000 " optional truncate, unused aa 000024 000000 000001 " source files map: version number aa 000025 000000 000002 " number of files aa 000026 000064 000054 " bcpl_strings_ aa 000027 023333 611431 " last modified on aa 000030 000000 102333 " 01/24/75 0647.2 mst Fri aa 000031 432367 000000 aa 000032 000077 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 102103 120114 " "BCPL version 3.4, August 1973" aa 000037 040166 145162 aa 000040 163151 157156 aa 000041 040063 056064 aa 000042 054040 101165 aa 000043 147165 163164 aa 000044 040061 071067 aa 000045 063040 040040 aa 000046 115141 162164 " "Martinson.SysMaint.a" aa 000047 151156 163157 aa 000050 156056 123171 aa 000051 163115 141151 aa 000052 156164 056141 aa 000053 163157 165162 " "source xref alist optimize 6180" aa 000054 143145 040040 aa 000055 170162 145146 aa 000056 040040 141154 aa 000057 151163 164040 aa 000060 040157 160164 aa 000061 151155 151172 aa 000062 145040 040066 aa 000063 061070 060040 aa 000064 076062 056061 " ">2.1spec>online>mib083074>bcpl_strings_.bcpl" aa 000065 163160 145143 aa 000066 076157 156154 aa 000067 151156 145076 aa 000070 155151 142060 aa 000071 070063 060067 aa 000072 064076 142143 aa 000073 160154 137163 aa 000074 164162 151156 aa 000075 147163 137056 aa 000076 142143 160154 aa 000077 076154 144144 " ">ldd>include>head.incl.bcpl" aa 000100 076151 156143 aa 000101 154165 144145 aa 000102 076150 145141 aa 000103 144056 151156 aa 000104 143154 056142 aa 000105 143160 154040 " Relocation information " text section relocation bits aa 000106 000000 000002 " version number of rel-bits structure aa 000107 000000 000751 " length in bits aa 000110 744305 000001 aa 000111 200001 236054 aa 000112 640000 247431 aa 000113 751702 032360 aa 000114 616474 143517 aa 000115 020723 604564 aa 000116 740655 170233 aa 000117 236036 647405 aa 000120 351701 172000 aa 000121 012360 646474 aa 000122 111517 031323 aa 000123 601664 740755 aa 000124 170227 236062 aa 000125 647403 300000 l " inkage relocation bits aa 000126 000000 000002 " version number of rel-bits structure aa 000127 000000 000140 " length in bits aa 000130 100002 204652 aa 000131 465246 524652 aa 000132 465246 520000 s " ymbol relocation bits aa 000133 000000 000002 " version number of rel-bits structure aa 000134 000000 000043 " length in bits aa 000135 740365 770332 " Object map aa 002274 000000 000001 " version number of object_map structure aa 002275 157142 152137 " "obj_map " aa 002276 155141 160040 aa 002277 000000 001670 " text offset, length aa 002300 001670 000222 " def offset, length aa 002301 002112 000024 " link offset, length aa 002302 002136 000136 " symbol offset, length aa 002303 000000 000000 " break map offset, length aa 002304 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 002305 002274 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