Compilation listing of file >2.1spec>online>mib083074>bcpl_arithmetic_.bcpl. Compilation performed for Martinson.SysMaint.a at 01/24/75 0648.8 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 // Functions to perform mathematical operations not provided by the language. 2 // Last modified on 06/03/74 at 12:02:56 by R F Mabee. 3 // Reinstalled with no material change in June 1974 by R F Mabee. 4 // This module first installed on 6180 Multics in June 1973 by R F Mabee. 5 // Formed from bcpl_lib_, first installed 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 $( LogEofTwo = 0.6931471806 $) 17 18 let MaxI (a, b) = a < b -> b, a 19 and MinI (a, b) = a < b -> a, b 20 and MaxR (a, b) = a .< b -> b, a 21 and MinR (a, b) = a .< b -> a, b 22 and AbsI (a) = a < 0 -> -a, a 23 and AbsR (a) = a .< 0.0 -> .-a, a 24 25 let RandomI () = valof // Return random positive integer. Borrowed from Roger Schell's version. 26 $( static $( Seed = 0 $) 27 if Seed = 0 do // Get unique initial value. 28 $( let v = vec 2 29 RawClockTime (v) 30 Seed := v!1 // Time in microseconds up to about 20 hours. 31 $) 32 Seed := Seed neqv (Seed rshift 11) 33 Seed := Seed neqv (Seed lshift 25) 34 resultis Seed rshift 1 // Make sure result is positive. 35 $) 36 and RandomR () = ItoR (RandomI ()) ./ ItoR (true rshift 1) // Return random floating-point number between 0 and 1. 37 38 let SquareRoot (x) = valof // Return square root of a floating-point number. 39 $( let p = x / 2 & (true lshift 36 - 8) | (1 lshift 36 - 8 - 2) // Let x = m * 2**n where .5 <_ m < 1. 40 unless (x & (1 lshift 36 - 8)) = 0 do p := p .* 1.414213557 // Now p**2 = 2**n / 2. 41 let m = x & (true rshift 8 + 1) 42 let y = p .* (m .* 0.586 .+ 0.42) .* 2.0 // Interpolate square root of m. y is first estimate of result. 43 for i = 0 to 2 do y := (y .+ x ./ y) .* 0.5 // Improve estimate by Newton-Raphson approximation. 44 resultis y 45 $) 46 and Exponential (x) = valof // Return e ** x (x is a floating-point number). 47 $( manifest 48 $( A = 87.4175034 49 B = .- 617.972360 50 C = 0.0346573560 51 D = 9.95459586 52 $) 53 test x .ge 0.0 54 then test x .< 1.0E-8 55 then resultis 1.0 // This close to zero result is always 1.0. 56 or if x .> 88.028 resultis 0.17014118E39 // Too big, return largest possible number. 57 or test x .> .- 1.0E-8 58 then resultis 1.0 // Close to zero, result is always 1.0. 59 or if x .< .- 88.028 resultis 0.0 // Too small, return smallest possible number (zero). 60 61 x := x .* (1.0 ./ LogEofTwo) // x is now log base two of desired result. 62 let n = RtoI (x) 63 let r = x .- ItoR (n) // Result is 2**r * 2**n, where 0 <_ r < 1. 64 let y = 1.0 .+ r .* 2.0 ./ (D .- r .+ C .* r .* r .+ B ./ (r .* r .+ A)) // Polynomial interpolation. 65 resultis y + (n lshift 36 - 8) // Add n to binary exponent. 66 $) 67 and Logarithm (x) = valof // Return natural logarithm of floating-point number x. 68 $( manifest 69 $( C1 = 0.10764273 70 C2 = 1.21873057 71 C3 = .- 1.091870621 72 C4 = .- 1.39755978 73 B1 = 1.0 ./ 128.0 74 B2 = .- 0.5 .- 3.0 ./ 262144.0 75 B3 = 1.414213557 ./ 2.0 76 $) 77 let z = x .- 1.0 78 if .- B1 .< z .< B1 resultis z .+ B2 .* z .* z .+ z .* z .* z .* z ./ 3.0 // For x near one use polynomial. 79 let p = ItoR (((x rshift 36 - 8) neqv (1 lshift 8 - 1)) - (1 lshift 8 - 1)) 80 p := (p .- 0.5) .* LogEofTwo // Logarithm of exponent. 81 let m = x & (true rshift 8 + 1) // Fractional part. 82 z := (m .- B3) ./ (m .+ B3) 83 resultis (p .+ z .* (C1 .* z .* z .+ C2 .+ C3 ./ (z .* z .+ C4))) 84 $) 85 86 let IpowerI (Integer, Exp) = valof // Return Integer ** Exp (both integers). 87 $( let Result = 1 88 if Exp < 0 resultis 0 // Get rid of this case right away. 89 until Exp = 0 do 90 $( unless (Exp & 1) = 0 do Result := Result * Integer 91 Integer := Integer * Integer 92 Exp := Exp rshift 1 93 $) 94 resultis Result 95 $) 96 and RpowerI (Real, Exp) = valof // Return Real ** Exp (Exp integer). 97 $( let Result = 1.0 98 if Exp < 0 do Real, Exp := 1.0 ./ Real, - Exp 99 until Exp = 0 do 100 $( unless (Exp & 1) = 0 do Result := Result .* Real 101 Real := Real .* Real 102 Exp := Exp rshift 1 103 $) 104 resultis Result 105 $) 106 and RpowerR (Real, Exp) = valof // Return Real ** Exp (both reals). 107 $( let x = Logarithm (Real) 108 resultis Exponential (x .* Exp) 109 $) CAE time 2.9, 87 source lines per second. cross reference table A bcpl_arithmetic_: 48, 64 a bcpl_arithmetic_: 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23 AbsI head: 11, bcpl_arithmetic_: 22 AbsR head: 12, bcpl_arithmetic_: 23 Allocate head: 64 Append head: 136 ArgIndex head: 121 B bcpl_arithmetic_: 49, 64 b bcpl_arithmetic_: 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21 B1 bcpl_arithmetic_: 73, 78, 78 B2 bcpl_arithmetic_: 74, 78 B3 bcpl_arithmetic_: 75, 82, 82 Bcall head: 54 BCPLaddr head: 108 ByteSize head: 127 C bcpl_arithmetic_: 50, 64 C1 bcpl_arithmetic_: 69, 83 C2 bcpl_arithmetic_: 70, 83 C3 bcpl_arithmetic_: 71, 83 C4 bcpl_arithmetic_: 72, 83 Ch head: 118 CharToString head: 37 Close head: 69 CompareStrings head: 27 Complain head: 107 Concatenate head: 28 ConcatenateArgs head: 104 CONSOLE head: 117 Console head: 134 ConvertFtoS head: 46 ConvertNtoS head: 45 ConvertStoN head: 44 CopyString head: 25 CountSize head: 128 D bcpl_arithmetic_: 51, 64 DeleteTempSeg head: 91 Endofstreamch head: 130 EntryName head: 135 EqualString head: 26 Errcode head: 120 Exp bcpl_arithmetic_: 86, 88, 89, 90, 92, 92, 96, 98, 98, 98, 99, 100, 102, 102, 106, 108 ExpandPathname head: 84 Exponential head: 20, bcpl_arithmetic_: 46, 108 Findadr head: 65 FindSegment head: 87 Flushinput head: 77 Format head: 74 FormatString head: 75 FormDate head: 49 Freevec head: 63 GetCpuUsage head: 96 GetNextCommandArg head: 106 GetPathname head: 89 i bcpl_arithmetic_: 43 Index head: 34 IndexCh head: 35 INPUT head: 116 InsertEscapes head: 48 Integer bcpl_arithmetic_: 86, 90, 91, 91, 91 IOstatus head: 120 IpowerI head: 14, bcpl_arithmetic_: 86 ItoR head: 43, bcpl_arithmetic_: 36, 36, 63, 79 ITS head: 109 JoinPathname head: 85 Left head: 129 Length head: 31 LengthInWords head: 33 Level head: 53 Logarithm head: 19, bcpl_arithmetic_: 67, 107 LogEofTwo bcpl_arithmetic_: 16, 61, 80 Longjump head: 52 m bcpl_arithmetic_: 41, 42, 81, 82, 82 Machine head: 125 MakeBcplString head: 39 MakePl1String head: 38 MakeSegment head: 88 MakeTempSeg head: 90 MaxI head: 7, bcpl_arithmetic_: 18 MaxR head: 8, bcpl_arithmetic_: 20 MinI head: 9, bcpl_arithmetic_: 19 MinR head: 10, bcpl_arithmetic_: 21 MONITOR head: 117 Move head: 56 MoveBits head: 57 MultiSegmentFile head: 137 n bcpl_arithmetic_: 62, 63, 65 Newvec head: 62 NewvecCleanup head: 61 NewvecInit head: 60 Null head: 131 NumbArgs head: 59 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_arithmetic_: 39, 40, 40, 42, 79, 80, 80, 83 Packstring head: 23 PathName head: 135 Pl1ArgPtr head: 100 Pl1ArgString head: 102 Pl1Call head: 55 Pl1Descriptor head: 101 Pl1NumbArgs head: 99 Pl1ReturnString head: 103 Pointer head: 134 ProgramID head: 119 r bcpl_arithmetic_: 63, 64, 64, 64, 64, 64, 64 RandomI head: 17, bcpl_arithmetic_: 25, 36 RandomR head: 18, bcpl_arithmetic_: 36 RawClockTime head: 94, bcpl_arithmetic_: 29 Read head: 136 Readch head: 70 Real bcpl_arithmetic_: 96, 98, 98, 100, 101, 101, 101, 106, 107 RemoveEscapes head: 47 ResetStream head: 78 Result bcpl_arithmetic_: 87, 90, 90, 94, 97, 100, 100, 104 RevertHandler head: 112 Right head: 129 RpowerI head: 15, bcpl_arithmetic_: 96 RpowerR head: 16, bcpl_arithmetic_: 106 RtoI head: 42, bcpl_arithmetic_: 62 ScanChar head: 58 SearchName head: 135 Seed bcpl_arithmetic_: 26, 27, 30, 32, 32, 32, 33, 33, 33, 34 SetBitCount head: 93 SetHandler head: 111 SetLength head: 32 SetOverflowMask head: 110 SplitPathname head: 86 SquareRoot head: 13, bcpl_arithmetic_: 38 StreamLength head: 80 StreamName head: 134 StreamOffset head: 79 StreamPointer head: 81 StringToChar head: 36 Subch head: 30 Substr head: 29 Terminate head: 92 TimeToSeconds head: 95 Unpackstring head: 24 v bcpl_arithmetic_: 28, 29, 30 WordSize head: 126 Write head: 136 Writech head: 71 WriteN head: 73 Writeout head: 76 WriteS head: 72 x bcpl_arithmetic_: 38, 39, 40, 41, 43, 46, 53, 54, 56, 57, 59, 61, 61, 62, 63, 67, 77, 79, 81, 107, 108 y bcpl_arithmetic_: 42, 43, 43, 43, 44, 64, 65 z bcpl_arithmetic_: 77, 78, 78, 78, 78, 78, 78, 78, 78, 82, 83, 83, 83, 83, 83 Trans time 1.0, 759 object words per second. " Begin text of MinI aa 000000 000004 115151 zero 4,39529 " MinI aa 000001 156111 000000 zero 56393 L2: aa 000002 000000 213000 19 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 236111 ldq sb|2,x1 " a aa 000013 700003 116111 cmpq sb|3,x1 " b aa 000014 000003 605004 tpl L9 aa 000015 700002 235111 lda sb|2,x1 " a aa 000016 000002 710004 tra L10 L9: aa 000017 700003 235111 lda sb|3,x1 " b L10: aa 000020 700005 755111 sta sb|5,x1 aa 000021 700005 235111 lda sb|5,x1 aa 000022 000044 777000 llr 36 " exchange A and Q aa 000023 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000024 200000 121100 sblx1 bp|0 aa 000025 700001 764111 lprplp sb|1,x1 aa 000026 200001 710100 tra bp|1 " end of return sequence " Begin text of MaxR aa 000027 000004 115141 zero 4,39521 " MaxR aa 000030 170122 000000 zero 61522 aa 000031 700004 756111 20 stq sb|4,x1 " temporary L3: aa 000032 000000 213000 epaq 0 " set lp to linkage section aa 000033 700026 764161 lprplp sb|22,*au aa 000034 200000 021100 adlx1 bp|0 " BCPL save aa 000035 700000 542111 sprpbp sb|0,x1 aa 000036 700001 544111 sprplp sb|1,x1 aa 000037 700417 620111 eax0 sb|271,x1 aa 000040 777760 360003 anx0 -16,du aa 000041 700025 740100 stx0 sb|21 " end of save sequence aa 000042 700002 431111 fld sb|2,x1 " a aa 000043 700003 515111 fcmp sb|3,x1 " b aa 000044 000003 605004 tpl L13 aa 000045 700003 236111 ldq sb|3,x1 " b aa 000046 000002 710004 tra L14 L13: aa 000047 700002 236111 ldq sb|2,x1 " a L14: aa 000050 700005 756111 stq sb|5,x1 aa 000051 700005 236111 ldq sb|5,x1 aa 000052 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000053 200000 121100 sblx1 bp|0 aa 000054 700001 764111 lprplp sb|1,x1 aa 000055 200001 710100 tra bp|1 " end of return sequence " Begin text of AbsR aa 000056 000004 101142 zero 4,33378 " AbsR aa 000057 163122 000000 zero 58962 aa 000060 700004 756111 23 stq sb|4,x1 " temporary L6: aa 000061 000000 213000 epaq 0 " set lp to linkage section aa 000062 700026 764161 lprplp sb|22,*au aa 000063 200000 021100 adlx1 bp|0 " BCPL save aa 000064 700000 542111 sprpbp sb|0,x1 aa 000065 700001 544111 sprplp sb|1,x1 aa 000066 700417 620111 eax0 sb|271,x1 aa 000067 777760 360003 anx0 -16,du aa 000070 700025 740100 stx0 sb|21 " end of save sequence aa 000071 700002 431111 fld sb|2,x1 " a aa 000072 400000 515003 fcmp -131072,du " 0.0 aa 000073 000004 605004 tpl L17 aa 000074 700002 431111 fld sb|2,x1 " a aa 000075 000000 513007 fneg 0,dl aa 000076 000002 710004 tra L18 L17: aa 000077 700002 431111 fld sb|2,x1 " a L18: aa 000100 700005 470111 fstr sb|5,x1 aa 000101 700005 236111 ldq sb|5,x1 aa 000102 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000103 200000 121100 sblx1 bp|0 aa 000104 700001 764111 lprplp sb|1,x1 aa 000105 200001 710100 tra bp|1 " end of return sequence " Begin text of AbsI aa 000106 000004 101142 zero 4,33378 " AbsI aa 000107 163111 000000 zero 58953 aa 000110 700003 756111 22 stq sb|3,x1 " temporary L5: aa 000111 000000 213000 epaq 0 " set lp to linkage section aa 000112 700026 764161 lprplp sb|22,*au aa 000113 200000 021100 adlx1 bp|0 " BCPL save aa 000114 700000 542111 sprpbp sb|0,x1 aa 000115 700001 544111 sprplp sb|1,x1 aa 000116 700417 620111 eax0 sb|271,x1 aa 000117 777760 360003 anx0 -16,du aa 000120 700025 740100 stx0 sb|21 " end of save sequence aa 000121 700002 234111 szn sb|2,x1 " a aa 000122 000003 605004 tpl L21 aa 000123 700002 336111 lcq sb|2,x1 " a aa 000124 000002 710004 tra L22 L21: aa 000125 700002 236111 ldq sb|2,x1 " a L22: aa 000126 700005 756111 stq sb|5,x1 aa 000127 700005 236111 ldq sb|5,x1 aa 000130 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000131 200000 121100 sblx1 bp|0 aa 000132 700001 764111 lprplp sb|1,x1 aa 000133 200001 710100 tra bp|1 " end of return sequence " Begin text of MinR aa 000134 000004 115151 zero 4,39529 " MinR aa 000135 156122 000000 zero 56402 aa 000136 700003 756111 21 stq sb|3,x1 " temporary L4: aa 000137 000000 213000 epaq 0 " set lp to linkage section aa 000140 700026 764161 lprplp sb|22,*au aa 000141 200000 021100 adlx1 bp|0 " BCPL save aa 000142 700000 542111 sprpbp sb|0,x1 aa 000143 700001 544111 sprplp sb|1,x1 aa 000144 700417 620111 eax0 sb|271,x1 aa 000145 777760 360003 anx0 -16,du aa 000146 700025 740100 stx0 sb|21 " end of save sequence aa 000147 700002 431111 fld sb|2,x1 " a aa 000150 700003 515111 fcmp sb|3,x1 " b aa 000151 000003 605004 tpl L25 aa 000152 700002 236111 ldq sb|2,x1 " a aa 000153 000002 710004 tra L26 L25: aa 000154 700003 236111 ldq sb|3,x1 " b L26: aa 000155 700005 756111 stq sb|5,x1 aa 000156 700005 236111 ldq sb|5,x1 aa 000157 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000160 200000 121100 sblx1 bp|0 aa 000161 700001 764111 lprplp sb|1,x1 aa 000162 200001 710100 tra bp|1 " end of return sequence " Begin text of MaxI aa 000163 000004 115141 zero 4,39521 " MaxI aa 000164 170111 000000 zero 61513 aa 000165 700004 756111 18 stq sb|4,x1 " temporary L1: aa 000166 000000 213000 epaq 0 " set lp to linkage section aa 000167 700026 764161 lprplp sb|22,*au aa 000170 200000 021100 adlx1 bp|0 " BCPL save aa 000171 700000 542111 sprpbp sb|0,x1 aa 000172 700001 544111 sprplp sb|1,x1 aa 000173 700417 620111 eax0 sb|271,x1 aa 000174 777760 360003 anx0 -16,du aa 000175 700025 740100 stx0 sb|21 " end of save sequence aa 000176 700002 236111 ldq sb|2,x1 " a aa 000177 700003 116111 cmpq sb|3,x1 " b aa 000200 000003 605004 tpl L29 aa 000201 700003 235111 lda sb|3,x1 " b aa 000202 000002 710004 tra L30 L29: aa 000203 700002 235111 lda sb|2,x1 " a L30: aa 000204 700005 755111 sta sb|5,x1 aa 000205 700005 235111 lda sb|5,x1 aa 000206 000044 777000 llr 36 " exchange A and Q aa 000207 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000210 200000 121100 sblx1 bp|0 aa 000211 700001 764111 lprplp sb|1,x1 aa 000212 200001 710100 tra bp|1 " end of return sequence " Begin text of RandomI aa 000213 000007 122141 zero 7,42081 " RandomI aa 000214 156144 157155 zero 56420,56941 aa 000215 111000 000000 zero 37376 aa 000216 700004 756111 25 stq sb|4,x1 " temporary L31: aa 000217 000000 213000 epaq 0 " set lp to linkage section aa 000220 700026 764161 lprplp sb|22,*au aa 000221 200000 021100 adlx1 bp|0 " BCPL save aa 000222 700000 542111 sprpbp sb|0,x1 aa 000223 700001 544111 sprplp sb|1,x1 aa 000224 700422 620111 eax0 sb|274,x1 aa 000225 777760 360003 anx0 -16,du aa 000226 700025 740100 stx0 sb|21 " end of save sequence 9a 000227 400010 234100 27 szn lp|8 " Seed aa 000230 000012 601004 tnz L36 aa 000231 700004 350111 28 eapap sb|4,x1 " a vector aa 000232 700003 540111 sprpap sb|3,x1 " v aa 000233 700003 236111 29 ldq sb|3,x1 " v aa 000234 700012 756111 stq sb|10,x1 4a 000235 400016 272120 tsbbp lp|L37,* " RawClockTime aa 000236 000010 000001 zero 8,1 aa 000237 700003 760111 30 lprpap sb|3,x1 " v aa 000240 000001 236100 ldq ap|1 9a 000241 400010 756100 stq lp|8 " Seed L36: 9a 000242 400010 236100 32 ldq lp|8 " Seed aa 000243 000013 772000 qrl 11 9a 000244 400010 656100 ersq lp|8 " Seed 9a 000245 400010 236100 33 ldq lp|8 " Seed aa 000246 000031 736000 qls 25 9a 000247 400010 656100 ersq lp|8 " Seed 9a 000250 400010 236100 34 ldq lp|8 " Seed aa 000251 000001 772000 qrl 1 L35: aa 000252 700003 756111 stq sb|3,x1 aa 000253 700003 236111 ldq sb|3,x1 aa 000254 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000255 200000 121100 sblx1 bp|0 aa 000256 700001 764111 lprplp sb|1,x1 aa 000257 200001 710100 tra bp|1 " end of return sequence " Begin text of RandomR aa 000260 000007 122141 zero 7,42081 " RandomR aa 000261 156144 157155 zero 56420,56941 aa 000262 122000 000000 zero 41984 aa 000263 700002 756111 36 stq sb|2,x1 " temporary L32: aa 000264 000000 213000 epaq 0 " set lp to linkage section aa 000265 700026 764161 lprplp sb|22,*au aa 000266 200000 021100 adlx1 bp|0 " BCPL save aa 000267 700000 542111 sprpbp sb|0,x1 aa 000270 700001 544111 sprplp sb|1,x1 aa 000271 700422 620111 eax0 sb|274,x1 aa 000272 777760 360003 anx0 -16,du aa 000273 700025 740100 stx0 sb|21 " end of save sequence aa 000274 777725 272004 tsbbp L31+2 " RandomI aa 000275 000010 000000 zero 8 aa 000276 700005 756111 stq sb|5,x1 aa 000277 700005 236111 ldq sb|5,x1 aa 000300 700012 756111 stq sb|10,x1 4a 000301 400014 272120 tsbbp lp|L40,* " ItoR aa 000302 000010 000001 zero 8,1 aa 000303 000016 235004 lda L41 aa 000304 700012 755111 sta sb|10,x1 aa 000305 700003 756111 stq sb|3,x1 " temporary 4a 000306 400014 272120 tsbbp lp|L40,* " ItoR aa 000307 000010 000001 zero 8,1 aa 000310 700005 756111 stq sb|5,x1 " temporary aa 000311 700003 431111 fld sb|3,x1 aa 000312 700005 565111 fdv sb|5,x1 aa 000313 700002 470111 fstr sb|2,x1 " temporary aa 000314 700002 236111 ldq sb|2,x1 aa 000315 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000316 200000 121100 sblx1 bp|0 aa 000317 700001 764111 lprplp sb|1,x1 aa 000320 200001 710100 tra bp|1 " end of return sequence " Literal pool L41: aa 000321 377777 777777 zero 131071,-1 " Begin text of SquareRoot aa 000322 000012 123161 zero 10,42609 " SquareRoot aa 000323 165141 162145 zero 60001,58469 aa 000324 122157 157164 zero 42095,56948 L42: aa 000325 000000 213000 38 epaq 0 " set lp to linkage section aa 000326 700026 764161 lprplp sb|22,*au aa 000327 200000 021100 adlx1 bp|0 " BCPL save aa 000330 700000 542111 sprpbp sb|0,x1 aa 000331 700001 544111 sprplp sb|1,x1 aa 000332 700417 620111 eax0 sb|271,x1 aa 000333 777760 360003 anx0 -16,du aa 000334 700025 740100 stx0 sb|21 " end of save sequence aa 000335 700002 236111 39 ldq sb|2,x1 " x aa 000336 000002 506007 div 2,dl " 2 aa 000337 776000 376003 anq -1024,du aa 000340 000400 276003 orq 256,du aa 000341 700004 756111 stq sb|4,x1 " p aa 000342 700002 236111 40 ldq sb|2,x1 " x aa 000343 002000 376003 anq 1024,du aa 000344 000004 600004 tze L48 aa 000345 700004 431111 fld sb|4,x1 " p aa 000346 000042 461004 fmp L49 " 1.414213557 aa 000347 700004 470111 fstr sb|4,x1 " p L48: aa 000350 700002 236111 41 ldq sb|2,x1 " x aa 000351 000036 376004 anq L50 aa 000352 700005 756111 stq sb|5,x1 " m aa 000353 700005 431111 42 fld sb|5,x1 " m aa 000354 000032 461004 fmp L51 " 0.586 aa 000355 000030 475004 fad L52 " 0.42 aa 000356 700004 461111 fmp sb|4,x1 " p aa 000357 004400 461003 fmp 2304,du " 2.0 aa 000360 700006 470111 fstr sb|6,x1 " y aa 000361 700007 450111 43 stz sb|7,x1 " i aa 000362 000007 710004 tra L53 L54: aa 000363 700002 431111 fld sb|2,x1 " x aa 000364 700006 565111 fdv sb|6,x1 " y aa 000365 700006 475111 fad sb|6,x1 " y aa 000366 000400 461003 fmp 256,du " 0.5 aa 000367 700006 470111 fstr sb|6,x1 " y aa 000370 700007 054111 aos sb|7,x1 " i L53: aa 000371 700007 236111 ldq sb|7,x1 " i aa 000372 000002 116007 cmpq 2,dl " 2 aa 000373 777770 604404 tmoz L54 aa 000374 700006 235111 44 lda sb|6,x1 " y L47: aa 000375 700004 755111 sta sb|4,x1 aa 000376 700004 235111 lda sb|4,x1 aa 000377 000044 777000 llr 36 " exchange A and Q aa 000400 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000401 200000 121100 sblx1 bp|0 aa 000402 700001 764111 lprplp sb|1,x1 aa 000403 200001 710100 tra bp|1 " end of return sequence aa 000404 700003 756111 stq sb|3,x1 " temporary " Literal pool L52: aa 000405 776656 050754 zero -594,20972 " 0.42 L51: aa 000406 000454 020305 zero 300,8389 " 0.586 L50: aa 000407 000777 777777 zero 511,-1 L49: aa 000410 002552 023631 zero 1386,10137 " 1.414213557 " Begin text of Exponential aa 000411 000013 105170 zero 11,35448 " Exponential aa 000412 160157 156145 zero 57455,56421 aa 000413 156164 151141 zero 56436,53857 aa 000414 154000 000000 zero 55296 L43: aa 000415 000000 213000 46 epaq 0 " set lp to linkage section aa 000416 700026 764161 lprplp sb|22,*au aa 000417 200000 021100 adlx1 bp|0 " BCPL save aa 000420 700000 542111 sprpbp sb|0,x1 aa 000421 700001 544111 sprplp sb|1,x1 aa 000422 700422 620111 eax0 sb|274,x1 aa 000423 777760 360003 anx0 -16,du aa 000424 700025 740100 stx0 sb|21 " end of save sequence aa 000425 700002 431111 53 fld sb|2,x1 " x aa 000426 400000 515003 fcmp -131072,du " 0.0 aa 000427 000014 604004 tmi L58 aa 000430 700002 431111 54 fld sb|2,x1 " x aa 000431 000112 515004 fcmp L62 " 1.0E-8 aa 000432 000003 605004 tpl L60 aa 000433 002400 236003 55 ldq 1280,du " 1.0 aa 000434 000067 710004 tra L57 L60: aa 000435 700002 431111 56 fld sb|2,x1 " x aa 000436 000104 515004 fcmp L64 " 88.028 aa 000437 000003 604404 tmoz L63 aa 000440 000101 236004 ldq L65 " 0.17014118E39 aa 000441 000062 710004 tra L57 L63: L61: aa 000442 000013 710004 tra L59 L58: aa 000443 700002 431111 57 fld sb|2,x1 " x aa 000444 000074 515004 fcmp L68 aa 000445 000003 604404 tmoz L66 aa 000446 002400 236003 58 ldq 1280,du " 1.0 aa 000447 000054 710004 tra L57 L66: aa 000450 700002 431111 59 fld sb|2,x1 " x aa 000451 000066 515004 fcmp L70 aa 000452 000003 605004 tpl L69 aa 000453 400000 236003 ldq -131072,du " 0.0 aa 000454 000047 710004 tra L57 L69: L67: L59: aa 000455 700002 431111 61 fld sb|2,x1 " x aa 000456 000060 461004 fmp L71 aa 000457 700002 470111 fstr sb|2,x1 " x aa 000460 700002 235111 62 lda sb|2,x1 " x aa 000461 700024 755111 sta sb|20,x1 4a 000462 400012 272120 tsbbp lp|L72,* " RtoI aa 000463 000022 000001 zero 18,1 aa 000464 700004 756111 stq sb|4,x1 " n aa 000465 700004 236111 63 ldq sb|4,x1 " n aa 000466 700024 756111 stq sb|20,x1 4a 000467 400014 272120 tsbbp lp|L40,* " ItoR aa 000470 000022 000001 zero 18,1 aa 000471 700006 756111 stq sb|6,x1 " temporary aa 000472 700002 431111 fld sb|2,x1 " x aa 000473 700006 575111 fsb sb|6,x1 aa 000474 700005 470111 fstr sb|5,x1 " r aa 000475 000040 431004 64 fld L73 " D aa 000476 700005 575111 fsb sb|5,x1 " r aa 000477 700012 470111 fstr sb|10,x1 " temporary aa 000500 000034 431004 fld L74 " C aa 000501 700005 461111 fmp sb|5,x1 " r aa 000502 700005 461111 fmp sb|5,x1 " r aa 000503 700012 475111 fad sb|10,x1 aa 000504 700011 470111 fstr sb|9,x1 " temporary aa 000505 700005 431111 fld sb|5,x1 " r aa 000506 700005 461111 fmp sb|5,x1 " r aa 000507 000024 475004 fad L75 " A aa 000510 000022 525004 fdi L76 " B aa 000511 700011 475111 fad sb|9,x1 aa 000512 700010 470111 fstr sb|8,x1 " temporary aa 000513 700005 431111 fld sb|5,x1 " r aa 000514 004400 461003 fmp 2304,du " 2.0 aa 000515 700010 565111 fdv sb|8,x1 aa 000516 002400 475003 fad 1280,du " 1.0 aa 000517 700006 470111 fstr sb|6,x1 " y aa 000520 700004 236111 65 ldq sb|4,x1 " n aa 000521 000034 736000 qls 28 aa 000522 700006 076111 adq sb|6,x1 " y L57: aa 000523 700004 756111 stq sb|4,x1 aa 000524 700004 236111 ldq sb|4,x1 aa 000525 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000526 200000 121100 sblx1 bp|0 aa 000527 700001 764111 lprplp sb|1,x1 aa 000530 200001 710100 tra bp|1 " end of return sequence aa 000531 700003 756111 stq sb|3,x1 " temporary " Literal pool L76: aa 000532 025313 007047 zero 10955,3623 " B L75: aa 000533 016535 527030 zero 7517,-86504 " A L74: aa 000534 770433 723371 zero -3813,-22791 " C L73: aa 000535 010476 430062 zero 4414,-118734 " D L71: aa 000536 002561 250730 zero 1393,86488 L70: aa 000537 017237 706520 zero 7839,-29360 L68: aa 000540 715250 316114 zero -25944,105548 L65: aa 000541 376777 777774 zero 130559,-4 " 0.17014118E39 L64: aa 000542 016540 071260 zero 7520,29360 " 88.028 L62: aa 000543 714527 461664 zero -26281,-105548 " 1.0E-8 " Begin text of Logarithm aa 000544 000011 114157 zero 9,39023 " Logarithm aa 000545 147141 162151 zero 52833,58473 aa 000546 164150 155000 zero 59496,55808 L44: aa 000547 000000 213000 67 epaq 0 " set lp to linkage section aa 000550 700026 764161 lprplp sb|22,*au aa 000551 200000 021100 adlx1 bp|0 " BCPL save aa 000552 700000 542111 sprpbp sb|0,x1 aa 000553 700001 544111 sprplp sb|1,x1 aa 000554 700422 620111 eax0 sb|274,x1 aa 000555 777760 360003 anx0 -16,du aa 000556 700025 740100 stx0 sb|21 " end of save sequence aa 000557 700002 431111 77 fld sb|2,x1 " x aa 000560 002400 575003 fsb 1280,du " 1.0 aa 000561 700004 470111 fstr sb|4,x1 " z aa 000562 763000 431003 78 fld -6656,du aa 000563 700004 515111 fcmp sb|4,x1 " z aa 000564 000020 605004 tpl L80 aa 000565 700004 431111 fld sb|4,x1 " z aa 000566 764400 515003 fcmp -5888,du " B1 aa 000567 000015 605004 tpl L80 aa 000570 000073 431004 fld L81 " B2 aa 000571 700004 461111 fmp sb|4,x1 " z aa 000572 700004 461111 fmp sb|4,x1 " z aa 000573 700004 475111 fad sb|4,x1 " z aa 000574 700006 470111 fstr sb|6,x1 " temporary aa 000575 700004 431111 fld sb|4,x1 " z aa 000576 700004 461111 fmp sb|4,x1 " z aa 000577 700004 461111 fmp sb|4,x1 " z aa 000600 700004 461111 fmp sb|4,x1 " z aa 000601 004600 565003 fdv 2432,du " 3.0 aa 000602 700006 475111 fad sb|6,x1 aa 000603 000043 710004 tra L79 L80: aa 000604 700002 236111 79 ldq sb|2,x1 " x aa 000605 000034 772000 qrl 28 aa 000606 000200 676007 erq 128,dl aa 000607 000200 176007 sbq 128,dl aa 000610 700022 756111 stq sb|18,x1 4a 000611 400014 272120 tsbbp lp|L40,* " ItoR aa 000612 000020 000001 zero 16,1 aa 000613 700005 756111 stq sb|5,x1 " p aa 000614 700005 431111 80 fld sb|5,x1 " p aa 000615 000400 575003 fsb 256,du " 0.5 aa 000616 000044 461004 fmp L82 " LogEofTwo aa 000617 700005 470111 fstr sb|5,x1 " p aa 000620 700002 236111 81 ldq sb|2,x1 " x aa 000621 777566 376004 anq L50 aa 000622 700006 756111 stq sb|6,x1 " m aa 000623 700006 431111 82 fld sb|6,x1 " m aa 000624 000035 475004 fad L83 " B3 aa 000625 700007 470111 fstr sb|7,x1 " temporary aa 000626 700006 431111 fld sb|6,x1 " m aa 000627 000032 575004 fsb L83 " B3 aa 000630 700007 565111 fdv sb|7,x1 aa 000631 700004 470111 fstr sb|4,x1 " z aa 000632 700004 431111 83 fld sb|4,x1 " z aa 000633 700004 461111 fmp sb|4,x1 " z aa 000634 000024 475004 fad L84 " C4 aa 000635 000022 525004 fdi L85 " C3 aa 000636 700012 470111 fstr sb|10,x1 " temporary aa 000637 000017 431004 fld L86 " C1 aa 000640 700004 461111 fmp sb|4,x1 " z aa 000641 700004 461111 fmp sb|4,x1 " z aa 000642 000013 475004 fad L87 " C2 aa 000643 700012 475111 fad sb|10,x1 aa 000644 700004 461111 fmp sb|4,x1 " z aa 000645 700005 475111 fad sb|5,x1 " p L79: aa 000646 700004 470111 fstr sb|4,x1 aa 000647 700004 236111 ldq sb|4,x1 aa 000650 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000651 200000 121100 sblx1 bp|0 aa 000652 700001 764111 lprplp sb|1,x1 aa 000653 200001 710100 tra bp|1 " end of return sequence aa 000654 700003 756111 stq sb|3,x1 " temporary " Literal pool L87: aa 000655 002467 775350 zero 1335,-1304 " C2 L86: aa 000656 772670 717125 zero -2632,-25003 " C1 L85: aa 000657 003350 366253 zero 1768,126123 " C3 L84: aa 000660 003232 163027 zero 1690,58903 " C4 L83: aa 000661 000552 023631 zero 362,10137 " B3 L82: aa 000662 000542 710301 zero 354,-28479 " LogEofTwo L81: aa 000663 001377 775000 zero 767,-1536 " B2 " Begin text of RpowerR aa 000664 000007 122160 zero 7,42096 " RpowerR aa 000665 157167 145162 zero 56951,51826 aa 000666 122000 000000 zero 41984 L90: aa 000667 000000 213000 106 epaq 0 " set lp to linkage section aa 000670 700026 764161 lprplp sb|22,*au aa 000671 200000 021100 adlx1 bp|0 " BCPL save aa 000672 700000 542111 sprpbp sb|0,x1 aa 000673 700001 544111 sprplp sb|1,x1 aa 000674 700422 620111 eax0 sb|274,x1 aa 000675 777760 360003 anx0 -16,du aa 000676 700025 740100 stx0 sb|21 " end of save sequence aa 000677 700002 236111 107 ldq sb|2,x1 " Real aa 000700 700014 756111 stq sb|12,x1 aa 000701 777650 272004 tsbbp L44+2 " Logarithm aa 000702 000012 000001 zero 10,1 aa 000703 700005 756111 stq sb|5,x1 " x aa 000704 700005 431111 108 fld sb|5,x1 " x aa 000705 700003 461111 fmp sb|3,x1 " Exp aa 000706 700014 470111 fstr sb|12,x1 aa 000707 777510 272004 tsbbp L43+2 " Exponential aa 000710 000012 000001 zero 10,1 L93: aa 000711 700005 756111 stq sb|5,x1 aa 000712 700005 236111 ldq sb|5,x1 aa 000713 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000714 200000 121100 sblx1 bp|0 aa 000715 700001 764111 lprplp sb|1,x1 aa 000716 200001 710100 tra bp|1 " end of return sequence " Begin text of RpowerI aa 000717 000007 122160 zero 7,42096 " RpowerI aa 000720 157167 145162 zero 56951,51826 aa 000721 111000 000000 zero 37376 aa 000722 700004 756111 96 stq sb|4,x1 " temporary L89: aa 000723 000000 213000 epaq 0 " set lp to linkage section aa 000724 700026 764161 lprplp sb|22,*au aa 000725 200000 021100 adlx1 bp|0 " BCPL save aa 000726 700000 542111 sprpbp sb|0,x1 aa 000727 700001 544111 sprplp sb|1,x1 aa 000730 700417 620111 eax0 sb|271,x1 aa 000731 777760 360003 anx0 -16,du aa 000732 700025 740100 stx0 sb|21 " end of save sequence aa 000733 002400 236003 97 ldq 1280,du " 1.0 aa 000734 700005 756111 stq sb|5,x1 " Result aa 000735 700003 234111 98 szn sb|3,x1 " Exp aa 000736 000006 605004 tpl L97 aa 000737 002400 431003 fld 1280,du " 1.0 aa 000740 700002 565111 fdv sb|2,x1 " Real aa 000741 700002 470111 fstr sb|2,x1 " Real aa 000742 000000 236007 ldq 0,dl aa 000743 700003 156111 ssq sb|3,x1 " Exp L97: aa 000744 000015 710004 99 tra L98 L99: aa 000745 700003 236111 100 ldq sb|3,x1 " Exp aa 000746 000001 376007 anq 1,dl " 1 aa 000747 000004 600004 tze L100 aa 000750 700005 431111 fld sb|5,x1 " Result aa 000751 700002 461111 fmp sb|2,x1 " Real aa 000752 700005 470111 fstr sb|5,x1 " Result L100: aa 000753 700002 431111 101 fld sb|2,x1 " Real aa 000754 700002 461111 fmp sb|2,x1 " Real aa 000755 700002 470111 fstr sb|2,x1 " Real aa 000756 700003 236111 102 ldq sb|3,x1 " Exp aa 000757 000001 772000 qrl 1 aa 000760 700003 756111 stq sb|3,x1 " Exp L98: aa 000761 700003 234111 szn sb|3,x1 " Exp aa 000762 777763 601004 tnz L99 aa 000763 700005 236111 104 ldq sb|5,x1 " Result L96: aa 000764 700005 756111 stq sb|5,x1 aa 000765 700005 236111 ldq sb|5,x1 aa 000766 700000 762111 lprpbp sb|0,x1 " bcpl return aa 000767 200000 121100 sblx1 bp|0 aa 000770 700001 764111 lprplp sb|1,x1 aa 000771 200001 710100 tra bp|1 " end of return sequence " Begin text of IpowerI aa 000772 000007 111160 zero 7,37488 " IpowerI aa 000773 157167 145162 zero 56951,51826 aa 000774 111000 000000 zero 37376 aa 000775 700004 756111 86 stq sb|4,x1 " temporary L88: aa 000776 000000 213000 epaq 0 " set lp to linkage section aa 000777 700026 764161 lprplp sb|22,*au aa 001000 200000 021100 adlx1 bp|0 " BCPL save aa 001001 700000 542111 sprpbp sb|0,x1 aa 001002 700001 544111 sprplp sb|1,x1 aa 001003 700417 620111 eax0 sb|271,x1 aa 001004 777760 360003 anx0 -16,du aa 001005 700025 740100 stx0 sb|21 " end of save sequence aa 001006 000001 236007 87 ldq 1,dl " 1 aa 001007 700005 756111 stq sb|5,x1 " Result aa 001010 700003 234111 88 szn sb|3,x1 " Exp aa 001011 000003 605004 tpl L104 aa 001012 000000 236007 ldq 0,dl " 0 aa 001013 000021 710004 tra L103 L104: aa 001014 000015 710004 89 tra L105 L106: aa 001015 700003 235111 90 lda sb|3,x1 " Exp aa 001016 000001 375007 ana 1,dl " 1 aa 001017 000004 600004 tze L107 aa 001020 700005 236111 ldq sb|5,x1 " Result aa 001021 700002 402111 mpy sb|2,x1 " Integer aa 001022 700005 756111 stq sb|5,x1 " Result L107: aa 001023 700002 236111 91 ldq sb|2,x1 " Integer aa 001024 700002 402111 mpy sb|2,x1 " Integer aa 001025 700002 756111 stq sb|2,x1 " Integer aa 001026 700003 236111 92 ldq sb|3,x1 " Exp aa 001027 000001 772000 qrl 1 aa 001030 700003 756111 stq sb|3,x1 " Exp L105: aa 001031 700003 234111 szn sb|3,x1 " Exp aa 001032 777763 601004 tnz L106 aa 001033 700005 236111 94 ldq sb|5,x1 " Result L103: aa 001034 700005 756111 stq sb|5,x1 aa 001035 700005 236111 ldq sb|5,x1 aa 001036 700000 762111 lprpbp sb|0,x1 " bcpl return aa 001037 200000 121100 sblx1 bp|0 aa 001040 700001 764111 lprplp sb|1,x1 aa 001041 200001 710100 tra bp|1 " end of return sequence " Definition section part one - external entry points 5a 000000 000053 000000 " pointer to first definition aa 000001 000000 600000 " flags: new format, ignore header aa 000002 000000 000000 " list terminator aa 000003 020142 143160 " "bcpl_arithmetic_" aa 000004 154137 141162 aa 000005 151164 150155 aa 000006 145164 151143 aa 000007 137000 000000 aa 000010 007122 160157 " "RpowerR" aa 000011 167145 162122 aa 000012 007122 160157 " "RpowerI" aa 000013 167145 162111 aa 000014 007111 160157 " "IpowerI" aa 000015 167145 162111 aa 000016 011114 157147 " "Logarithm" aa 000017 141162 151164 aa 000020 150155 000000 aa 000021 013105 170160 " "Exponential" aa 000022 157156 145156 aa 000023 164151 141154 aa 000024 012123 161165 " "SquareRoot" aa 000025 141162 145122 aa 000026 157157 164000 aa 000027 007122 141156 " "RandomR" aa 000030 144157 155122 aa 000031 007122 141156 " "RandomI" aa 000032 144157 155111 aa 000033 004101 142163 " "AbsR" aa 000034 122000 000000 aa 000035 004101 142163 " "AbsI" aa 000036 111000 000000 aa 000037 004115 151156 " "MinR" aa 000040 122000 000000 aa 000041 004115 141170 " "MaxR" aa 000042 122000 000000 aa 000043 004115 151156 " "MinI" aa 000044 111000 000000 aa 000045 004115 141170 " "MaxI" aa 000046 111000 000000 aa 000047 014163 171155 " "symbol_table" aa 000050 142157 154137 aa 000051 164141 142154 aa 000052 145000 000000 " Segname definition for bcpl_arithmetic_ 55 000053 000056 000002 " forward, backward threads 5a 000054 000002 400003 " value defined, class flags 55 000055 000003 000056 " name pointer, first entry def " Definition for RpowerR 55 000056 000061 000053 " forward, backward threads 0a 000057 000667 500000 " value defined, class flags 55 000060 000010 000053 " name pointer, segname def pointer " Definition for RpowerI 55 000061 000064 000056 " forward, backward threads 0a 000062 000723 500000 " value defined, class flags 55 000063 000012 000053 " name pointer, segname def pointer " Definition for IpowerI 55 000064 000067 000061 " forward, backward threads 0a 000065 000776 500000 " value defined, class flags 55 000066 000014 000053 " name pointer, segname def pointer " Definition for Logarithm 55 000067 000072 000064 " forward, backward threads 0a 000070 000547 500000 " value defined, class flags 55 000071 000016 000053 " name pointer, segname def pointer " Definition for Exponential 55 000072 000075 000067 " forward, backward threads 0a 000073 000415 500000 " value defined, class flags 55 000074 000021 000053 " name pointer, segname def pointer " Definition for SquareRoot 55 000075 000100 000072 " forward, backward threads 0a 000076 000325 500000 " value defined, class flags 55 000077 000024 000053 " name pointer, segname def pointer " Definition for RandomR 55 000100 000103 000075 " forward, backward threads 0a 000101 000264 500000 " value defined, class flags 55 000102 000027 000053 " name pointer, segname def pointer " Definition for RandomI 55 000103 000106 000100 " forward, backward threads 0a 000104 000217 500000 " value defined, class flags 55 000105 000031 000053 " name pointer, segname def pointer " Definition for AbsR 55 000106 000111 000103 " forward, backward threads 0a 000107 000061 500000 " value defined, class flags 55 000110 000033 000053 " name pointer, segname def pointer " Definition for AbsI 55 000111 000114 000106 " forward, backward threads 0a 000112 000111 500000 " value defined, class flags 55 000113 000035 000053 " name pointer, segname def pointer " Definition for MinR 55 000114 000117 000111 " forward, backward threads 0a 000115 000137 500000 " value defined, class flags 55 000116 000037 000053 " name pointer, segname def pointer " Definition for MaxR 55 000117 000122 000114 " forward, backward threads 0a 000120 000032 500000 " value defined, class flags 55 000121 000041 000053 " name pointer, segname def pointer " Definition for MinI 55 000122 000125 000117 " forward, backward threads 0a 000123 000002 500000 " value defined, class flags 55 000124 000043 000053 " name pointer, segname def pointer " Definition for MaxI 55 000125 000130 000122 " forward, backward threads 0a 000126 000166 500000 " value defined, class flags 55 000127 000045 000053 " name pointer, segname def pointer " Definition for symbol_table 55 000130 000002 000125 " forward, backward threads 6a 000131 000000 400002 " value defined, class flags 55 000132 000047 000053 " name pointer, segname def pointer " Definition section part two - symbolic info for external references aa 000133 022142 143160 " "bcpl_machine_code_" aa 000134 154137 155141 aa 000135 143150 151156 aa 000136 145137 143157 aa 000137 144145 137000 aa 000140 004122 164157 " "RtoI" aa 000141 111000 000000 5a 000142 000143 000000 aa 000143 000004 000000 55 000144 000133 000140 aa 000145 004111 164157 " "ItoR" aa 000146 122000 000000 5a 000147 000150 000000 aa 000150 000004 000000 55 000151 000133 000145 aa 000152 014122 141167 " "RawClockTime" aa 000153 103154 157143 aa 000154 153124 151155 aa 000155 145000 000000 5a 000156 000157 000000 aa 000157 000004 000000 55 000160 000133 000152 aa 000161 000000 000000 " padding " Linkage section - static variables and external links aa 000000 000000 000000 " linkage header 0a 000001 001042 000000 " address of defs aa 000002 000000 000000 aa 000003 000000 000000 aa 000004 000000 000000 aa 000005 000000 000000 2a 000006 000012 000020 " offset to links, total length aa 000007 000000 000020 " obsolete length " Static variables aa 000010 000000 000000 zero 0 " Seed aa 000011 000000 000000 " External link pairs L72: 3a 000012 777766 000046 " "bcpl_machine_code_$RtoI" 5a 000013 000142 000000 L40: 3a 000014 777764 000046 " "bcpl_machine_code_$ItoR" 5a 000015 000147 000000 L37: 3a 000016 777762 000046 " "bcpl_machine_code_$RawClockTime" 5a 000017 000156 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 433134 143606 " 01/24/75 0648.8 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 000107 " section header pointer, block size aa 000020 000000 000107 " next block pointer, rel_text aa 000021 000000 000117 " rel_def, rel_link aa 000022 000123 000107 " 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 000057 " bcpl_arithmetic_ aa 000027 023333 611376 " last modified on aa 000030 000000 102333 " 01/24/75 0647.2 mst Fri aa 000031 432366 400000 aa 000032 000100 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_arithmetic_.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 137141 aa 000074 162151 164150 aa 000075 155145 164151 aa 000076 143137 056142 aa 000077 143160 154040 aa 000100 076154 144144 " ">ldd>include>head.incl.bcpl" aa 000101 076151 156143 aa 000102 154165 144145 aa 000103 076150 145141 aa 000104 144056 151156 aa 000105 143154 056142 aa 000106 143160 154040 " Relocation information " text section relocation bits aa 000107 000000 000002 " version number of rel-bits structure aa 000110 000000 000271 " length in bits aa 000111 744566 200024 aa 000112 003131 062621 aa 000113 454760 306400 aa 000114 051706 572000 aa 000115 247424 351711 aa 000116 420000 000000 l " inkage relocation bits aa 000117 000000 000002 " version number of rel-bits structure aa 000120 000000 000100 " length in bits aa 000121 100002 200232 aa 000122 523252 325000 s " ymbol relocation bits aa 000123 000000 000002 " version number of rel-bits structure aa 000124 000000 000043 " length in bits aa 000125 740365 770336 " Object map aa 001372 000000 000001 " version number of object_map structure aa 001373 157142 152137 " "obj_map " aa 001374 155141 160040 aa 001375 000000 001042 " text offset, length aa 001376 001042 000161 " def offset, length aa 001377 001224 000020 " link offset, length aa 001400 001244 000126 " symbol offset, length aa 001401 000000 000000 " break map offset, length aa 001402 340000 000000 " flags: ^bound, relocatable, procedure, standard aa 001403 001372 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