*start* 00291 00024 US Date: 19 Nov. 1980 2:30 pm PST (Wednesday) From: Stewart.PA Subject: Real Example To: "@[Ivy]<Cedarlib>Real>Users.dl" cc: Stewart [Ivy]<Cedarlib>Real> RealExampleImpl.mesa and RealExample.config are an example of a simple program which uses floating point. -Larry *start* 01153 00024 US Date: 5 Dec. 1980 5:02 pm PST (Friday) From: Stewart.PA Subject: Pilot floating point status To: Levin, Fiala cc: Morris, Boyce, Wyatt, Taft, Stewart Here is the current situation. The released Dolphin Pilot microcode does not support the traps required to make floating point work by trapping; nor does it include Jim Boyce's fast floating point microcode. Ed Fiala is going to poke the Pilot people and see about fixing the first part (making MISC opcodes trap correctly). Jim's microcode will need some modifications to handle the Pilot trapping strategy (should be simple). We can get along with just the trapping for a while (slowly). Roy Levin is working on the mesa stuff that will intercept traps for all unimplemented instructions, including floating point. I will modifiy the mesa part of the floating point package to mesh smoothly with the new trap handler. (I will need some help in getting the compilation done and testing under Pilot...) There may be desirable changes to the interface Real for Cedar/Pilot: the RealException SIGNAL returns a POINTER to an exception record. Is this ok? REF? or what? *start* 00800 00024 US Date: 8 Dec. 1980 3:14 pm PST (Monday) From: Stewart.PA Subject: Trap Handler comments To: Levin cc: Stewart SpecialTraps looks fine. Comment: There is no provision for a client of the (monolithic) released Cedar to override (say) the floating point handler with one of his own, then replace the original. Perhaps either there could be an enumeration procedure or RegisterOpcodeHandler could return whatever was there before. Either method would allow me to slip in my own handler for some instruction, then later on restore the original, without knowing what it was in advance. (The new handler could just watch the traps going by and count them, before passing control to the original trap handler; this might be of interest to future statistics gatherers.) Larry *start* 01457 00024 US Date: 12 Dec. 1980 10:02 pm PST (Friday) From: Stewart.PA Subject: Pilot Floating Point To: CedarImplementors↑ [Ivy]<Cedarlib>Real>Pilot> contains the usual stuff. Defs files: Real.bcd RealFns.bcd Ieee.bcd RealOps.bcd Impl: RealImpl.bcd RealImpl.symbols In order to avoid hanging on the trap handler and pilot microcode, I have changed Real to use procedure calls rather than microcode (INLINEs). This means that you must compile your programs with the compiler switch -f. This switch causes the compiler to use SD-style procedure calls for the FP operations. This will all be fixed whenever the microcode and trap hander are ready. At that time, you will have to recompile floating point stuff with a new defs file. For now, floating point will be very slow, both because of the procedure calls and because there is as yet no microcode. Notes: Files with no source on [Ivy]<Cedarlib>Real>Pilot> have their source on [Ivy]<Cedarlib>Real> (no change from Alto world) The only test program I have tried is an equivalent of IeeeRandomTest. It is IeeeRT.bcd (from IeeeRT.config and PIeeeRandomTestImpl.*). It works under Tajo, rather than Cascade (IMPORTS Process, String, Time, TTY). CAVEAT I have noticed that the compiler switches set up with the options sheet in CascadeExec go away under some circumstances that I don't understand. You are advised to check. If you don't use -f, your code will break horribly. *start* 00616 00024 US Date: 28 Jan. 1981 10:13 pm PST (Wednesday) From: Teitelman.PA Subject: reals To: baskett Reply-To: Teitelman cc: stewart I use AppendReal (to do my outputting of reals to my own stream). I have hokeyed it up to add a .0 in the case that there is no decimal point in the resulting characters. I do this by searching through the string for a decimal point. (a) it would be more efficient if I could do this simply by testing the fractional part of the real to see if it was zero. How do I do this? (b) if and when you fix appendreal, please let me know so I can take this kluge out. warren *start* 00586 00024 US Date: 29 Jan. 1981 9:52 am PST (Thursday) From: Stewart.PA Subject: Reals To: Teitelman Reply-To: Stewart cc: Baskett,Stewart (Try again, fixing the bug.) FracPart: [r: REAL] RETURNS [rr: REAL] = { InternalFracPart: [rrr: REAL] RETURNS [REAL] = { RETURN [rrr-Real.Fix[rrr]]; }; rr ← InternalFracPart[x ! Real.RealException => { IF flags[fixOverflow] THEN { y ← 0; CONTINUE; } ELSE REJECT; }]; }; REAL-Fix[REAL] is the key part, the rest is to handle overflow. The second level of procedure is to cover up a bug in Mesa SIGNALs. *start* 00505 00024 US Date: 29 Jan. 1981 8:55 am PST (Thursday) From: Baskett.PA Subject: Re: reals In-reply-to: Your message of 28 Jan. 1981 10:13 pm PST (Wednesday) To: Teitelman cc: Stewart,Baskett I worked on, with Larry's help, the real part of the write formatted and cedar write formatted package so that it would do better in putting out 5.0, etc. I'm not sure what this has to do with appendreal. If appendreal derives from the same code then I can add my partial fixes to it also. Forest *start* 00939 00024 US Date: 31 Jan. 1981 6:23 pm PST (Saturday) From: Stewart.PA Subject: New RealImpl, TrappingNaN To: "@[Ivy]<Cedarlib>Real>Users.dl" Reply-To: "@[Ivy]<Cedarlib>Real>Support.dl" I found a low-frequency bug in the Mesa implementation of REALs, multiplications or divisions with a result smaller in magnitude than 2↑(-278) or so caused an uncaught ERROR. A fixed version of [Ivy]<Cedarlib>Real>RealImpl.bcd, .symbols is out there now. -Larry There is also a dreadfuil sloppiness in Real.mesa, which probably won't be fixed for the Mesa 6 world, but will be for Cedar/Pilot: Real.TrappingNaN is supposed to be a value that you can use to initialize storage. If picked up as an operand of a floating point operation (other than assignment), it should raise Real.RealException[invalidOperation]. Unortunately, it doesn't. A working version would be NotANumber: REAL = LOOPHOLE[17740000002B]; -- unREAL number *start* 00521 00024 US Date: 20 Feb. 1981 3:56 pm PST (Friday) From: Stewart.PA Subject: New WFRealImpl To: "@[Ivy]<Cedarlib>WF>Users.dl","@[Ivy]<Cedarlib>Real>Users.dl" Reply-To: Stewart cc: Baskett, Stewart I have incorporated the changes Forrest made in CWFRealImpl back into WFRealImpl, so both should behave the same and with luck, more correctly than before. WFRealImpl is on [Ivy]<Cedarlib>WF>WFRealImpl.bcd and .mesa. WFReal.bcd did not change. Forrest will be putting CWFRealImpl on Cedarlib soon. -Larry *start* 01722 00024 US Date: 11 March 1981 8:53 am PST (Wednesday) From: Ayers.PA Subject: Floating Point in 8000 Series? To: Evans, Newlin Reply-To: Ayers cc: Irby, Nikora.ES (fyi) cc: Karlton, Wick, Stewart, Johnsson, Sandman, Lipkie.ES (fyi) cc: Ayers I have investigated the supports for REAL arithmetic to see if it might be appropriate for use within the 8044 printer software. [The alternative is 32-bit arithmetic, which is partly implemented in software.] An ieee-style floating point package which runs on Alto-style d0lphins is available on ivy<cedarlib>. This package runs either with or without the presence of several "misc" microcode implementations. A Rubicon version is apparently not available. Timings: I computed the expression Ax + By + C for precalculated A & B & C [they were 0.5, 2.0, and -0.3333333] and for x ← y ← [0..999]. There are thus 1000 calculations of the expression per test. REALs with microcode assist: 0.2 seconds per thousand "Rational" representation (fractions: long integer/long cardinal): 1.8 seconds REALs without microcode assist: 30.1 seconds per thousand The "rational" arithmetic timing would be considerably worse if post-scaling was required (observe that the numerators and denominators in the test case are all small). A little playing with larger values suggests that post-scaling might quadruple the average running time. Conclusion: for 8044 printing software, running on a Dandelion without microcode assist, REAL arithmetic is too slow to be utilized. (Consider that there is an Ax + By + C, tho perhaps with A or B zero, about twice per text line. At an incremental cost of 20 milliseconds per, that is about two seconds per page.) Bob *start* 01274 00024 US Date: 11 March 1981 9:36 am PST (Wednesday) From: Stewart.PA Subject: REAL arithmetic To: Ayers cc: Stewart, Warnock, Lampson REALs work in Mokolumne and I expect to make them work in Rubicon with little to no difficulty, whenever Rubicon appears over here. It is a little unfair to judge the potential performance of REALs by the performance of RealImpl.bcd. That particular package is NOT designed to run fast. It could be greatly sped up by application of modest effort. The intended application of RealImpl was to handle the cases not supported by microcode (traps, denormalized numbers, FixI[-32768], etc.). In comparing rationals (exponent word plus LONG INTEGER) to REALs, depending on whether you do post-normalization or not, the difference in speed will be primarily due to packing and unpacking the 32 bit REAL representation. As far as post normalization goes, I believe it is the case that the number of normalization shifts required is roughly exponentially distributed with mean 1, so it is not a big deal anyway. It may be that a reasonable compromise is REAL arithmetic with an unpacked representation and a fairly tight implementation (which RealImpl is not). -Larry PS RealImpl does Divide in a loop, one bit at a time... *start* 01157 00024 US Date: 11 March 1981 12:55 pm EST (Wednesday) From: Lampson.PA Subject: Re: Real msg from Ayers In-reply-to: Stewart's message of 11 March 1981 9:37 am PST (Wednesday) To: Ayers cc: Warnock, Stewart, Lampson, Wick Wait! The current intention is that you won't need to do either real or rational arithmetic for transforming a coordinate from the user's CS to the device CS -- 32-bit fixed point will be more than sufficient, i.e., 32-bit integers with a fixed scaling. This means that add and subtract are identical to integer add and subtract, and multiply is identical to integer multiply except for a scaling of the result. For the 8044 putting the binary point in the middle of the 32 bits should be fine. The multiply can be done with 4 16x16->32 multiplies and 3 32 bit adds. Furthermore, if the client coordinates are integers (probably the case to be favored by the encoding) there are 2 16x16 multiplies and 1 add. Either reals or rationals will be needed ONLY for concatenating transformation matrices, or for doing arithmetic explicitly specified by the arithmetic operations. Presumably these are rare operations. *start* 01008 00024 US Date: 11 March 1981 10:14 am PST (Wednesday) From: Ayers.PA Subject: Re: "Wait!" and Real msg from Ayers In-reply-to: Lampson's message of 11 March 1981 12:55 pm EST (Wednesday) To: Lampson cc: Ayers, Warnock, Stewart, Wick The message from Stewart mentioned a "Rational" as a 32-bit thingie with a power-of-two scale factor. But I did not. I am doing 32-bit integer arithmetic and plan to continue. I investigated REALs for two reasons: Concatenating transformations, which is rare in the normal case but may be un-rare in a heavy graphics environment. (Graphics guys are considering CallConcat for displaying arrowheads by scaling and rotating the ideal unit arrowhead.) Because I was asked about REALs for the possible use of Star's workstation graphics code. I agree with all of Butler's point about the required precision. There are a few uglies that one might mention, chiefly concerned with mischevious user behavior, but they are in the noise. Bob *start* 01187 00024 US Date: 10 March 1981 11:40 am PST (Tuesday) From: Stewart.PA Subject: Re: REAL via SOFTware To: Ayers cc: Stewart They still exist... I dropped explicit support of the Procedure call versions because they require a separate DEFs file and people were always confused about what versions they had or needed. These days, my position is that Alto I's don't exist and any newer machines should handle the REAL Misc opcodes -- at least by trapping to software. The present situation is that while the Alto II, Dolphin, and Dorado all have REAL microcode, that code only speeds up the easy cases. At any time, the microcode can trap to software. Rather than try to untangle partially completed operations, the Mesa code starts over from the original operands, thus RealImpl is actually a complete implementation. If we have a processor around that is unable to handle MISC even far enough to trap immediately, it would be no problem to build a version of Real.mesa that has procedures instead of INLINEs and then use /-f to compile. (I did this for the first Pilot REALs, but deleted it later.) In fact, RealOps.mesa is pretty close to what is needed. -Larry *start* 01173 00024 US Date: 30 March 1981 5:15 pm PST (Monday) From: Smeltzer.ES Subject: Mesa 6 Floating Point Package To: Stewart.PA cc: Smeltzer Please add me to [Ivy]<CedarLib>Real>Users.dl as suggested in the Memo to Mesa Floating Point Users dated Nov 4, 1980. I may be a very short-lived user unless I can get past a hurdle which has bugged me for a day. To Wit: I brought in all the requisite .bcd's and RealExample.config and RealExampleImpl.Mesa from <CedarLib>Real>. The latter compiled OK, but the .config required a change of StringDefs to String and the addition of FrameDefs for it to bind without errors. Running RealExample results in a freezing of the screen requiring a boot to recover. By debugging, it was determined that this happens after the last statement in RealControl but before getting to the first message in RealExampleImpl. I have a 64K Alto II for which the board with the Mesa ROM's has just been changed to one with Mesa 6.0 ROM's. Its highly probable that it is a simple procedural goof on my part. Any suggestions would be greatly appreciated. Jack Smeltzer, PSD, working on simulation of the 9700 and its enhancements. *start* 01010 00024 US Date: 30 March 1981 8:55 pm PST (Monday) From: Stewart.PA Subject: Re: Mesa 6 Floating Point Package In-reply-to: Your message of 30 March 1981 5:15 pm PST (Monday) To: Smeltzer.ES cc: Stewart I have added you to [Ivy]<CedarLib>Real>Users.dl. I will look into RealExample I think. The difficulties you cite with String and FrameDefs are my fault. RealImpl has changed since RealExample was last tried I'm afraid. The hanging of your Alto II sounds like trouble with the microcode, since you needed to boot to recover. The first thing to check is to try "Runmesa/v<cr>" which will print the version number of your microcode. If it doesn't say "41" somewhere in the string (the alternative is 39 I think), then you have the wrong ROMS. Also, be sure that you got the stuff from [Ivy]<Cedarlib>Real> but NOT from [Ivy]<Cedarlib>Real>Pilot> or Real>Rubicon> as those are pilot versions, which work very differently. More later when I look at RealImpl -- probably tomorrow. -Larry *start* 00802 00024 US Date: 23 April 1981 3:21 pm PST (Thursday) From: Jarvis Subject: Floating Point IO To: LStewart cc: Jarvis May I suggest that you either change the character that ReadReal and AppendReal use to indicate the power of 10 or make it an optional argument? I use all of your floating point software as part of the Calculator tool, but must use my own version of IeeeIOB. The Calculator uses "↑" instead of "E" because "E" is a perfectly good hex digit. For example, 1E1 is ambiguous; it can either be a fixed or floating point number. I realize that this is not a big deal, but it grates. I also have Cordic algorithm implementations for RealFns. These are much faster when there is not microcode support for floating point and probably about the same with microcode assist. *start* 00561 00024 US Date: 23 APR 1981 1606-PST From: STEWART Subject: Re: Floating Point IO To: Jarvis cc: STEWART In response to your message sent 23 April 1981 3:21 pm PST (Thursday) I am a bit reluctant to add an argument to appendreal. You may find RealToPair more to your liking. (Also, scanning the returned string for 'e and replacing it by '↑ seems reasonable!.) I'd like to look at your realFns sometime. Also, I will be working on the ouput routines sometime soon, since they don't work very well. Will keep you informed. -Larry ------- *start* 00307 00024 US Date: 24 April 1981 10:08 am PST (Friday) From: Jarvis Subject: Re: Floating Point IO In-reply-to: Your message of 23 APR 1981 1606-PST To: STEWART cc: Jarvis Take a look at the following files on [Iris]<Jarvis>: Cordic.mesa CordicImpl.mesa CordicFns.mesa and CordicConstants.mesa *start* 01184 00024 US Date: 21-May-81 11:16:37 PDT (Thursday) From: Karlton.PA Subject: Re: Floating Point In-reply-to: STEWART's message of 20 MAY 1981 1831-PDT To: Stewart cc: Taft, Fiala, Murray, Guarino, Neely, Frandeen, Sandman, Johnsson, Karlton Hal Murray forwarded your message to me that said that floating point works fine on Dolphins and Dorados. I asked around a little over here and got very confused. Some people said that the CSL microcode was different than the released Rubicon microcode and others weren't sure. I was also told that, as of the latest update, the Dandelion microcode has been fixed so that the Misc alphabyte from 20B to 37B trap through SD[137B] with the opcode as the trap parameter. (I don't know what that means, but it may be useful to you.) What I really want is a package I can load in my PreCascade world (on any of Dandelion, Dolphin or Dorado) and be able to do floating point arithmetic. What switch do I give the compiler to make sure it invokes the floating point operations the correct way? PK p.s. I was just told that the Rubicon Dolphin microcode gets an unimplemented instruction trap for Misc alpha-bytes in [20B..37B]. *start* 02685 00024 US Date: 21 May 1981 2:56 pm PDT (Thursday) From: Stewart.PA Subject: Re: Floating Point In-reply-to: Karlton's message of 21-May-81 11:16:37 PDT (Thursday) To: Karlton cc: Stewart, Taft, Fiala, Murray, Guarino, Neely, Frandeen, Sandman, Johnsson Here is the Pilot FP situation as I understand it: Mokolumne is dead. Procedure Call FP is dead. zESC (MISC) 20B-37B are the only way to get at floating point operations. SD[130B]-SD[136B] will not be used. The Compiler default FP switch is /f, which generates zESC. The only version of Real.bcd includes MACHINE CODE for Real.Fix, etc. which generate zESC. Rubicon floating point: [Ivy]<Cedarlib>Real>Rubicon>RealImpl.bcd with defs files Real, Ieee and RealFns works fine on Dorados and CSL Dolphins. SDD Dolphins run some other microcode, and FP does not work at all. FP does not work on Dandelions at all. How can this situation be changed so that SDD Dolphins and Dandelions will work? Change microcode or change the FP software. 1) Changing the microcode seems more reasonable to me. The FP world is set up so that microcode can handle as little or as much of the work as there is control-store room for, leaving the difficult cases or remaining opcodes to trap to software (RealImpl.bcd). The way that CSL Dolphins and Dorados handle (Cedar) traps is described in Roy Levin's memo [Ivy]<CSL-Notebook>Entries>81CSLN-0004.press and in Ed Taft's implementation [Ivy]<Cedarlib>Trap>*. (For the FP implementation, see [Ivy]<Cedarlib>Real>Rubicon>PilotRealControl.mesa.) If SDD Dolphins and Dandelions follow these trap conventions, then the existing FP stuff will all work. Fine Points: The CSL FP Dolphin microcode is ~440B words, but could be made smaller by de-implementing some of the opcodes, so that they always trap to software. The Dandelion apparently traps ESC 20B-37B through SD[137B] with the alpha byte as trap parameter, this is the (old) Mesa 6 FP trap mechanism as implemented by Altos, and D-machines emulating Altos. A minimal amount of space would be used by having all of ESC 20B-37B trapping as per Levin's memo and none of the FP instructions handled by microcode. 2) Modify the software. It is always possible to produce machine dependent versions of RealImpl.bcd (or a bigger version that looks to see what kind of machine it is), that will handle whatever trap conventions are being used. I suppose it is even possible to use SD[130]-SD[137] together with the /-f compiler switch, (if it still works...), but that would require a different version of the Defs file because the defs file (Real) had some MACHINE CODE inlines in it that would have to change. -Larry *start* 00849 00024 US Date: 11 May 1981 12:35 pm PDT (Monday) From: Stewart.PA Subject: Re: Real Mesa In-reply-to: Your message of 11 May 1981 12:19 pm PDT (Monday) To: SMiller.ES cc: Stewart Yes. Everything is wonderful. Read [Ivy]<Cedarlib>Real>Doc>MesaFloat60.press Trig functions are inside RealFns.bcd, which is implemented, along with the REALs themselves, by RealImpl.bcd. It is all Mesa 6. The way to check your proms is to run Runmesa/v. If you get version 41, you are OK. If you get version 39 (XMesa5), you lose. The REAL microcode goes in the Ram, but the ROMs you have must be correct in order to transfer control over there. The debugger will print out REALs, but you cannot type one in: x ← 5.6 doesn't work. John Warnock (Warnock.PA) has rotation software as part of CedarGraphics, you might give him a shout. -Larry *start* 00891 00024 US Date: 22 MAY 1981 1214-PDT From: FIALA Subject: Re: Floating Point To: Karlton, Stewart cc: FIALA In response to the message sent 21-May-81 11:16:37 PDT (Thursday) from Karlton.PA Floating point microcode exists for Dolphins running Cedar, a variant of Rubicon Pilot. It would be a trivial matter to make this microcode available to ordinary Rubicon Pilot, but there is insufficient microstore available for using it in combination with all the things currently supported. It might be desirable to either replace or overlay some of the existing Pilot io drivers on Dolphins, so that space would become available for floating point and other additions. At the moment, good candidates for overlay/replacement are as follows: 1) Overlay the 10 mb and 3 mb ethernet drivers; 2) Overlay the RS232 and MIOC drivers; 3) Overlay the IFDC and RDC drivers; ------- *start* 00671 00024 US Date: 22 May 1981 1:02 pm PDT (Friday) From: Neely.PA Subject: Re: Floating Point In-reply-to: FIALA's message of 21-May-81 11:16:37 PDT (Thursday) To: FIALA cc: Karlton, Stewart, Johnsson, Sandman, Frandeen, Neely Ed, I assume that "3) Overlay the IFDC and RDC drivers" means swapping the IFDC and RDC microcode. This is not feasible because the floppy is not an alternate system disk. It's for user file I/O on a system that is using an RDC as a system disk. In addition to performance considerations, if the RDC ucode was overlaid by the floppy ucode, there would be no way to get the RDC ucode back in. Did you mean something else? ev. *start* 02006 00024 US Date: 22 May 1981 1:17 pm PDT (Friday) From: Neely.PA Subject: Overlaying communications microcode To: Danielson cc: Karlton, Stewart, Fiala, Johnsson, Sandman, Frandeen, Neely Bill, The forwarded message below sets the context for these questions. Currently - 1. When does communications microcode get put into microstore? 2. Is there selective loading based on subsets of communications hardware? 3. If there is no communiation hardware on a system, does the microcode still get loaded? 4. Do many D0s have communication hardware? 5. What about TOR D0s? Possibilities - 6. Are there fairly straight forward things that could be done to allow other uses of the D0 control store currently allocated to communications. ev. --------------------------- Date: 22-May-81 12:17:50 PDT (Friday) From: Karlton.PA Subject: FYI: re: microcode for Dolphins To: Johnsson, Sandman, Frandeen, Neely I though you would be interested in this. ------------------------------ Date: 22 MAY 1981 1214-PDT From: FIALA Subject: Re: Floating Point To: Karlton, Stewart cc: FIALA In response to the message sent 21-May-81 11:16:37 PDT (Thursday) from Karlton.PA Floating point microcode exists for Dolphins running Cedar, a variant of Rubicon Pilot. It would be a trivial matter to make this microcode available to ordinary Rubicon Pilot, but there is insufficient microstore available for using it in combination with all the things currently supported. It might be desirable to either replace or overlay some of the existing Pilot io drivers on Dolphins, so that space would become available for floating point and other additions. At the moment, good candidates for overlay/replacement are as follows: 1) Overlay the 10 mb and 3 mb ethernet drivers; 2) Overlay the RS232 and MIOC drivers; 3) Overlay the IFDC and RDC drivers; ------ ---------------------------------------------------------------- ------------------------------------------------------------ *start* 00849 00024 US Date: 22 MAY 1981 1348-PDT From: STEWART Subject: Re: Overlaying communications microcode To: Neely, Danielson cc: Karlton, Fiala, Johnsson, Sandman, Frandeen, STEWART In response to the message sent 22 May 1981 1:17 pm PDT (Friday) from Neely.PA Remember in all this that the minimum required microcode to handle floating point is very small. All it need do is trap according to the Cedar trap convention ([ivy]<cedarlib>trap>81csln-0004.press). The software part of the FP package will then all work. If additional control store is available, all that will happen is that FP will run faster. -Larry (It seems like all this talk of swapping microcode is making too much out of the initial problem of making FP work in PreCascade. Presumably not too many operations are done, so why worry about the speed?) ------- *start* 01924 00024 US Date: 22 May 1981 2:14 pm PDT (Friday) From: Danielson.PA Subject: Re: Overlaying communications microcode In-reply-to: Neely's message of 22 May 1981 1:17 pm PDT (Friday) To: Neely cc: Danielson, Karlton, Stewart, Fiala, Johnsson, Sandman, Frandeen, Schwartz Here are the answer to your questions: (My comment refer to RS232C microcode rather any of the Ethernet stuff) [1]. When does communications microcode get put into microstore?] Most of the RS232C microcode is loaded when the client creates the RS232C.Channel although there is a stub that is loaded at boot time. [2. Is there selective loading based on subsets of communications hardware?] Yes, by the Channel code. If no RS232C hardware exists, the channel Create call won't get far enough to load the RS232C microcode variant before it realizes no RS232C hardware exists and tells the client. [3. If there is no communiation hardware on a system, does the microcode still get loaded?]. Only the stub gets loaded. See 1. and 2. answers. [4. Do many D0s have communication hardware?]. There were around 15-25 MIOC boards built, I think. [5. What about TOR D0s?]. Tor has its own RS232C hardware, etc. It is part of the SCB board and works in a similar manner to the Dandelion IOP... that is, it has an 8080 processor on the board which does most of the low level RS232 work. [6. Are there fairly straight forward things that could be done to allow other uses of the D0 control store currently allocated to communications.] Yes, there are. One could probably change the microcode/head so the stub was not needed. Then the microcode page for the RS232C could be used for other things. However, it is important to make sure that this new microcode is indeed used only for optional things. We have been screwed before where RS232C overlay space was used for optional things, which later became mandatory. BRD *start* 00615 00024 US Date: 29 May 1981 5:36 pm PDT (Friday) From: Stewart.PA Subject: AltoI REALs To: Dobkin,Brotz cc: Stewart See [Ivy]<Cedarlib>Real>AltoI>AltoIReal.press Basically, the defs files are the same as the microcode world, but there is a different RealImpl.bcd. The interface RealOps is the one that works (procedure calls). This version actually works anywhere, it just isn't as capable as the microcode version of RealImpl. I was going to use SegmentDefs.GetMemoryConfig, but that would require importing SegmentDefs and I didn't want to force people to change their outer configs. -Larry *start* 00779 00024 US Date: 1 June 1981 6:14 pm PDT (Monday) From: Fiala.PA Subject: Dolphin Floating Point To: Stewart.PA,Warnock.PA cc: Fiala I have prepared a new version of the Alto-compatible Dolphin microcode which is on [Ivy]<D0>Test>InitialAlto.Eb. I would appreciate if you could test it for me and report any problems (also report lack of problems if you test it). Its main virtue is that it is about 60% faster than the last released version. The microcode has already been tested on Larry Stewart's IEEERandomTest for awhile without any problems, so the bugs, if any, are likely to be in dealing with zeroes and limit values of various types. The same floating point microcode will be installed in the Cedar microcode when it is certified on the Alto system. *start* 00681 00024 US Date: 24 June 1981 5:57 pm PDT (Wednesday) From: Barth.PA Subject: Floating Point Performance To: Stewart cc: Barth Do you know what sort of performance the floating point microcode on the Dolphin and the Dorado deliver in the form of n secs per floating point add, multiply or divide? Is there anyone that you know of that is interested in and/or is actually doing something about improving that performance? Rumor has it that the floating point board that was underway for Dolphins has been dropped because the net increase in throughput would be so small. Could you tell me anything about that? I'd appreciate whatever info you can give me. Rick