*start* 00322 00024 US Date: 1 Oct. 1980 2:18 am PDT (Wednesday) From: Stewart.PA Subject: Real mail To: "@[Ivy]Real>Users.dl" cc: Stewart I have stored the accumulation of mail about Mesa 6 floating point as [Ivy]Real>Real01.mail. Historians may be interested. This is a Laurel mail file. -Larry *start* 00720 00024 US Date: 1 Oct. 1980 1:18 am PDT (Wednesday) From: Stewart Subject: Reals for Cedar To: Morris cc: Stewart Everything needed for Real numbers to work is in [Ivy]Real>. The documentation is Doc>MesaFloat60.press on that directory. The major defs files are Real and RealFns, implementations are RealImpl (A config) and RealFnsImpl. I guess I don't care too much about putting a release version for Cedar in some subdirectory of Cedar, provided that I don't have to do the work! (Brownie can do it.) However, we are short on disk space these days and why have multiple copies around? If things inside cedar should be in subdirectories, why not change cedarlib into Cedar>lib? Larry *start* 00342 00024 US Date: 1 Oct. 1980 11:27 am PDT (Wednesday) From: Stewart Subject: STARTing Reals To: Morris cc: Stewart (As in the Documentation) You can either call Real.InitReals[], or START Real.RealControl, or just load RealImpl on the command line. InitReals is idempotent, but RealControl isn't (Should I fix that?) -Larry *start* 00357 00024 US Date: 2 Oct. 1980 12:08 am PDT (Thursday) From: Morris Subject: Reals package To: Stewart cc: Teitelman I am using Warren's config as a guide in building the 6.0m version of Cedar and have the following confusions: He uses a module called Reals. Should that be RealImpl now? What about the D0 micro-code? Who purveys that now? *start* 01029 00024 US Date: 2 Oct. 1980 12:16 am PDT (Thursday) From: MBrown Subject: IEEE floating point IO To: LStewart I made an inquiry a few months ago when the format for the text representation of floating point numbers (and the problem of "stable" conversions) was being debated. I just got this response... ------------------------------------------------------------ Mail-from: Arpanet host SUMEX-AIM rcvd at 25-SEP-80 1051-PDT Date: 25 Sep 1980 1053-PDT From: Grosse at SUMEX-AIM Subject: IEEE floating point IO To: mbrown at PARC-MAXC cc: grosse, dlb at SU-AI Mark By now you are presumably finished with your floating point project, but just in case you are still interested: Jerome Coonen wrote a paper on "Binary<->decimal conversion in KCS arithmetic" published as document P754/80-4.15 of the IEEE floating point standards committee. Such documents are available from David Hough, Box 561, Cupertino CA 95015. Best wishes Eric ------- ------------------------------------------------------------ *start* 00458 00024 US Date: 14 Oct. 1980 11:51 am PDT (Tuesday) From: Stewart.PA Subject: New RealImpl To: "@[Ivy]Real>Users.dl" cc: Stewart There is a new RealImpl.bcd and a new RealImpl.symbols out on [Ivy]Real>. There are no recompilations. The only idfference is that this RealImpl.bcd includes (and EXPORTS) RealFns. Thought it would be more convenient. You might have to twiddle your .configs to avoid duplications. -Larry *start* 01002 00024 US Date: 27 Oct. 1980 8:32 am PST (Monday) From: Satterthwaite Subject: Code for Floating Point Operations To: LStewart cc: Warnock, Wyatt, Geschke, Sweet, Satterthwaite While looking for something else in the code generators of the Mesa compiler, I noticed that ALL floating-point operations appear to be compiled "minimal stack" for ALL machines, i.e., when such an operation is invoked, only its operands are on the register stack. This strategy is guaranteed to dump and reload intermediate results during evalution of an expression such as a*x+b*y (but I believe the compiler does understand commutativity of floating +, * now). It is my vague impression that this strategy is no longer necessary, at least for some machine/microcode/hardware combinations. Could one of you let me know what the relevant (Mesa 6) combinations are, and just what is assumed in each case about the code generated by compiling /f (i.e., the MISC operations for floating point). Thanks. Ed *start* 01091 00024 US Date: 27 Oct. 1980 9:17 am PST (Monday) From: Stewart Subject: Re: Code for Floating Point Operations In-reply-to: Satterthwaite's message of 27 Oct. 1980 8:32 am PST (Monday) To: Satterthwaite cc: Stewart, Warnock, Wyatt, Geschke, Sweet,"@[Ivy]Real>Support.dl" Here's the current state of the world: Dorados, Dolphins (CSL flavor anyway), Alto II 3K, and Alto II 2K w/Mesa >=41 all support MISC floating point operations. None of these machines even bother to fill in SD, so /-f will not work. None of the machines have any stack requirements for the main operations +, *, -, /, compare, float, or any of the Fixes or Rounds. The Alto does require minimal stack for the FSticky instruction, which only used by the Mesa part of the floating point code. If the microcode ever decides to trap or give up, it restores the stack to its state at the beginning of the instruction, puts the MISC alpha byte into OTPReg, and traps through SD[137B]. (This is in fact a general mechanism for trapping on MISC instructions, if anyone wants to use it.) Larry *start* 00699 00024 US Date: 27 Oct. 1980 9:21 am PST (Monday) From: Stewart Subject: Floating Point Modes To: "@[Ivy]Real>Support.dl" cc: Stewart Looks like I screwed up when I rearranged the format of floating point modes for eventual use with the class of instructions that get their modes off the stack. I meant for the default modes to have all 0's in the left byte so that an LIB could be used, but it looks like I forgot to fix up the field specifications in the MACHINE DEPENDENT record. This makes no particular difference, but it is something to remember to do on the next recompilation of RealOps. Is it true that I can recompile RealOps without bothering anyone? Larry *start* 00496 00024 US Date: 27 OCT 1980 1304-PST From: STEWART Subject: IeeeTest.mesa To: Taft, Boyce cc: Stewart If you have a copy of this file hidden away somewhere, please save it for me. The master copy on [Ivy]Real> is truncated at length 2660. I have a retreive request in for an archived copy from Mesa 6.0u, but I don't know yet whether or not it will be intact. Probably this represents a Formatter screw-up that I didn't notice, but I'm not sure... -Larry ------- *start* 00565 00024 US Date: 27 Oct. 1980 1:15 pm PST (Monday) From: Stewart.PA Subject: New RealImpl, RealConvertImpl To: "@[Ivy]Real>Users.dl", Stewart [Ivy]Real>RealImpl.bcd and RealImpl.symbols are now updated to Mesa 6.0f, as are the other implementation files. The main defs file, Real, was not recompiled, but the secondary defs files, Ieee, and RealOps, were. If anyone out there has a copy of the file IeeeTest.mesa, please let me know it's whereabouts. All my copies seem to have gotten smashed somewhere along the line. -Larry *start* 00601 00024 US Date: 30 OCT 1980 1538-PST From: STEWART Subject: Pilot and Floating point To: Levin, Fiala, Taft cc: Stewart As far as I know, the only thing that needs doing is making sure that the MISC opcodes are handled reasonably. Ed Fiala and I talked briefly. Here is what we would like: All unimplemented MISC opcodes store the alpha byte in OTPReg and call KFC 137B with the stack unchanged. Not too remarkably, this is just what happens now in the Alto world. Any problems? What needs doing? (I think Fiala is going to talk to Frandeen sooner or later.) -Larry ------- *start* 00610 00024 US Date: 30 Oct. 1980 5:51 pm PST (Thursday) From: Taft Subject: Re: Pilot and Floating point In-reply-to: STEWART's message of 30 OCT 1980 1538-PST To: STEWART cc: Levin, Fiala, Taft I'm happy to do it that way if you want. But do you really want all undefined opcodes to pour through SD[137], as opposed to just unimplemented floating point opcodes? How is the use of SD[137] going to be resolved between competing trap handlers for various unimplemented opcodes? A more general solution might be for all undefined MISC opcodes to trap through SD[k+alpha], for some constant k. Ed *start* 00614 00024 US Date: 31 Oct. 1980 8:48 am PST (Friday) From: Levin Subject: Re: Pilot and Floating point In-reply-to: STEWART's message of 30 OCT 1980 1538-PST In-reply-to: Taft's message of 30 Oct. 1980 5:51 pm PST To: STEWART cc: Levin, Fiala, Taft I'm inclined to agree with Ed; SD[137] should be just for the floating point opcodes. Furthermore, OTPReg is an undefined concept in the Pilot world, since trap handlers get their parameters in a more reasonable way. I also think we should try not to be too profligate in the use of SD slots -- they are not an indefinitely extendable resource. Roy *start* 01190 00024 US Date: 31 Oct. 1980 9:54 am PST (Friday) From: Stewart Subject: Re: Pilot and Floating point To: Taft cc: Stewart, Levin, Fiala I may have screwed up my message (doubtless). Ed Fiala and I think that MISC should trap tgrough 137B and everything else should trap through 5 (sUnimplemented) or whatever happens now. It is obviously necessary to be able to tell which instruction was executed, and for MISC, to get the alpha byte value. I don't think that each misc should trap through a different place, as that would lead to proliferation of the STATE_ and other ControlDefs stuff that is used to decode the stack. Currently there is a CASE statement underneath SD[137B] that dispatches on the alpha byte after saving away the stack. What is used instead of OTPReg in Pilot? I guess there is no particular reason to have compatible implementations for Alto and Pilot. All the FP stuff needs is the Alpha byte. Incidently. SD[130B] through [136B], which are listed as FP (/-f switch in Compiler) are no longer used. Should we return them to the pool? I stuff UnboundLink in there at the moment. I also never got official permission to use 137B... -Larry *start* 01362 00024 US Date: 31 OCT 1980 1429-PST From: FIALA Subject: Unimp. Mesa opcodes To: Taft, Levin, Stewart cc: Fiala My concern is that we establish now a uniform procedure for dealing with opcodes that are presently unimplemented so that during periods of transition (i.e., when some versions of microcode implement an opcode, others not) it will be possible to produce programs that contain the new opcode but trap to a procedure instead of the microcode isn't there. I am not sure how Mesa presently handles this. Apparently, everything not implemented traps through SD[5], but Larry Stewart used SD[137] for his floating point opcodes. With respect to efficiency, it seems that most of the changes in the opcode set are in the MISC opcodes, so that the method used to trap unimplemented MISC opcodes should be an efficient one. This suggests a separate trap for the MISC opcodes or a table with one entry for each of the 256 values of the Alpha byte, as Taft suggested. Whatever method is used in the microcode, the conventions employed by the Mesa system should be such that one module can seize the trap for one unimplemented opcode, while another module seizes the trap for some other one. Given this constraint, the dispatch table suggested by Taft seems like a good choice, even though it wastes 256 or 512 words of storage. ------- *start* 00938 00024 US Date: 3 Nov. 1980 9:04 am PST (Monday) From: Levin Subject: Re: Unimp. Mesa opcodes In-reply-to: FIALA's message of 31 OCT 1980 1429-PST To: FIALA cc: Taft, Levin, Stewart The Mesa PrincOps (version 3.0c) specifies that all unimplemented opcodes, including undefined MISC alpha values, trap through SD[5]. Although this trap is specified to supply no information about the bytecode that caused it, we can compatibly extend it pass the bytecode that failed (and alpha value). The trap handler can then dispatch as it pleases. This removes the dispatch table and logic from the realm of the microcode, which seems proper to me. I don't buy the efficiency argument, since presumably the trap is being taken at all because the microcode needed to implement the desired function efficiently has not yet been written. Under these circumstances, the cost of an additional software dispatch seems acceptable. Roy *start* 00520 00024 US Date: 3 Nov. 1980 9:12 am PST (Monday) From: Levin Subject: Re: Unimp. Mesa opcodes In-reply-to: FIALA's message of 31 OCT 1980 1429-PST To: FIALA cc: Taft, Levin, Stewart Another small observation: in the Mesa PrincOps, traps appear to occur between instructions. Therefore, at the time an OpcodeTrap (SD[5]) occurs, the PC is pointing to the initial byte of the instruction. Given this, the trap handler doesn't really need a parameter at all in order to dispatch to a software routine. *start* 01502 00024 US Date: 3 Nov. 1980 3:37 pm PST (Monday) From: Stewart Subject: Pilot FP opcodes To: Levin,Fiala,Taft cc: Stewart Per our discussion today (Levin/Taft/Me). In Pilot, all unimplemented opcodes trap to SD[5] without disturbing the machine state and without updating the PC. Unimplemented opcodes, in particular, do not currently have any 'parameter' (Pilot does not use OTPReg, but stores the parameter in the local frame of the instruction that traps -- but this is irrelevant, since unimplemented doesn't need a parameter.). This mechanism includes the fp opcodes that may run for awhile and then give up. (probably this means that a floating point instruction that gives up near the end of execution (after picking up the alpha byte etc.) will have to back up the pc so that it points at the MISC instruction again. The code underneath SD[5] will look at the code stream by hand and figure out what instruction was being executed. Some software dispatch mechanism will be provided to call the right pice of code for a particular instruction or group of instructions (e.g. FP as a class probably). In the case of an unimplemented instruction being emulated, the Mesa software will be responsible for bumping the PC for return to the instruction following the one that trapped. The Alto world will stay the way it is - FP via SD[137B] and alpha in OTPReg. We didn't talk about future MISC instructions in the Alto world. Maybe no-one will want to implement any. -Larry *start* 00714 00024 US Date: 5 Nov. 1980 12:24 pm PST (Wednesday) From: Stevens Subject: Floating Point Distribution List To: Stewart cc: Tremain, Stevens Larry, Please add my name to your Floating Point "Real" dl. I work with Bob Tremain and we intend to make extensive use of this capability starting immediately or as soon as possible. Where can we obtain a document describing how to bind the appropriate files into a Mesa program? I'm sure there's nothing to it but copying someones example is easier than trial and error. I dont see any direct reference in the messages Bob has received in the last two months. Also, how does one convert a text string to a REAL representation and visa versa. Jim *start* 00700 00024 US Date: 5 Nov. 1980 2:59 pm PST (Wednesday) From: Stewart.PA Subject: Re: Floating Point In-reply-to: wu.ES's message of 5 Nov. 1980 11:43 am PST (Wednesday) To: wu.ES cc: LSTEWART The Mesa 5 floating point stuff may be found on [maxc]. The documentation is in Float.press (or possibly MesaFloat.press). Depending on whether you have an Alto I or an Alto II you may want the Mesa version of the package Mesa-Float.dm, or the microcoded version UCode-Float.dm. Sources are in FloatSources.dm. Some of this stuff may be in the directory down in ES -Larry Let me know if you need anything else. The Mesa 6 stuff is all different. *start* 01013 00024 US Date: 5 Nov. 1980 3:09 pm PST (Wednesday) From: Stewart Subject: Re: Floating Point Distribution List In-reply-to: Stevens's message of 5 Nov. 1980 12:24 pm PST (Wednesday) To: Stevens cc: Stewart, Tremain You are on the list now. For an example config, you might want to look at [Ivy]std>Standard.config (You might also want to look at [Ivy]Std>MiscIO.mesa). The relevant parts are to IMPORT StringDefs (for RealImpl), and to EXPORT Real (If you need it outside the config). If your program does not explicitly call Real.InitReals[] then you may wish to have RealImpl listed as one of your CONTROL modules. For string conversion, Real.StringToReal does the job. The other direction is Real.AppendReal, see page 4 of [Ivy]Real>Doc>MesaFloat60.press. (I am advertising the WriteFormatted package for output also. It's REAL conversion stuff works although the field width specifications don't. -- see [Ivy]WF>WriteFormatted.press ). -Larry *start* 00531 00024 US Date: 6 Nov. 1980 10:53 am PST (Thursday) From: Karlton Subject: Re: FP In-reply-to: Your message of 4 Nov. 1980 2:40 pm PST (Tuesday) To: Stewart Larry, If you EXPORT RealControl out of RealImpl.config, then I could start the module as one of the control modules in my config. One small nit: at the top of page 3 of your "Mesa 6 Floating Point Package" of September 29, in the fine point, you say "... the configuration Reals by ..." when I think you mean "... the configuration RealImpl by ...". PK *start* 00596 00024 US Date: 6 Nov. 1980 11:38 am PST (Thursday) From: Stewart Subject: Re: FP In-reply-to: Your message of 6 Nov. 1980 10:53 am PST (Thursday) To: Karlton cc: Stewart Yesterday I modified MesaFloat60.press for just that reason. I think I have now found all instances of "Reals". RealControl: PROGRAM is already declared in the defs file Real, which is exported by RealImpl, so there shouldn't be any problem. Anyway, if RealImpl is nested in another config, the outer config can just say CONTROL xxx, RealImpl, xxx and start it that way. Or have I misunderstood? -Larry *start* 00485 00024 US Date: 6 Nov. 1980 12:13 pm PST (Thursday) From: Karlton Subject: Re: FP In-reply-to: Your message of 6 Nov. 1980 11:38 am PST (Thursday) To: Stewart It was my intention to put in "CONTROL RealControl, MyModule" in my config, but unfortunately, RealControl, is not EXPORTed by RealImpl. The list following the CONTROL must contain only modules, not other configs. The key phrase is "control module". It is not legal to put a config on the CONTROL list. PK *start* 00883 00024 US Date: 8 Nov. 1980 6:14 pm PST (Saturday) From: Stewart.PA Subject: New RealImpl To: "@[Ivy]Real>Users.dl", Stewart There is a new RealImpl.bcd and RealImpl.symbols on [Ivy]Real> No defs file recompilations. There are two changes: RealFns.AlmostZero now works, and RealImpl EXPORTS the module RealControl. The latter change permits you to arrange for the real stuff to be started in an outer config, like so: Foo: CONFIGURATION IMPORTS StringDefs -- Used by RealImpl CONTROL RealControl, FooImpl = BEGIN RealImpl; FooImpl; END. When this configuration is started, first RealControl in RealImpl will be STARTed, then FooImpl will be STARTed. Since RealImpl is STARTed first, FooImpl can use FP operations at will (including initialization of REALs in the global frame of FooImpl). (This change per suggestion by Karlton) -Larry *start* 00364 00024 US Date: 10 Nov. 1980 10:10 am PST (Monday) From: McKeeman Subject: Re: New RealImpl In-reply-to: Stewart's message of 8 Nov. 1980 6:14 pm PST (Saturday) To: Stewart Larry, Tom Pittman of the IEEE standards group would be very interested in anything you can send him about your packages. I'll take care of the delivery if you like. Bill *start* 00913 00024 US Date: 11 Nov. 1980 2:20 pm PST (Tuesday) From: Stevens Subject: Floating Point sample program To: Stewart cc: Tremain, Stevens Larry, I have a very simple mesa program which uses mesa floating point software. A few moments ago you helped me to run it for the first time. This may make a good programming example after it is cleaned up a little more. The relevant files are [Ivy]Calculate.mesa,bcd. When you run the program it asks for a 'multiplier' and 'multiplicand' using ReadReal for input, then prints back the 'product' using WriteReal. I do not yet know why the input is not echoed to the display. If you look at the source I'm sure you'll see some simplifications to the first few statements that would make this an even better sample program. I look forward to learning from your comments. Thanks for your help. I'm off to write some Real applications. Jim *start* 00502 00024 US Date: 17 Nov. 1980 3:39 pm PST (Monday) From: Stewart.PA Subject: FP bug To: "@[Ivy]Real>Users.dl" cc: Stewart Gene McDaniel and I have found a bug in the floating point stuff that will get you to the debugger if an interrupt arrives in a small interval during the handling of a floating point trap from microcode to mesa (This does not happen very often anyway). I will be fixing it on Wednesday and will announce a new wversion of RealImpl at that time. -Larry *start* 00290 00024 US Date: 18 Nov. 1980 1:43 am PST (Tuesday) From: Stewart Subject: New FP To: McDaniel,Stone cc: Stewart [Ivy]Real>RealImpl.bcd is new. It should fix the problem with Griffin and the spy. If so (would you check?) I will announce it to the world. -Larry