<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
   <channel>
      <title>Planet F#</title>
      <description>Planet F#</description>
      <link>http://feedproxy.google.com/planet_fsharp</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=daa116255b4fe0d0ee562882e1b96933&amp;_render=rss&amp;page=2" />
      <pubDate>Fri, 10 Feb 2012 16:07:22 +0000</pubDate>
      
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/planet_fsharp" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="planet_fsharp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>Circle packing in AutoCAD: creating an Apollonian gasket using F#  Part 1</title>
         <link>http://feedproxy.google.com/~r/typepad/walmsleyk/through_the_interface/~3/N0NGlxUCu3E/circle-packing-in-autocad-creating-an-apollonian-gasket-using-f-part-1.html</link>
         <author>Kean Walmsley</author>
         <guid isPermaLink="false">tag:typepad.com,2003:post-6a00d83452464869e20168e71545fe970c</guid>
         <pubDate>Fri, 10 Feb 2012 06:44:51 +0000</pubDate>
      <description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DCoYtIZB_C03dOBsd3Lc3IclM_A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DCoYtIZB_C03dOBsd3Lc3IclM_A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DCoYtIZB_C03dOBsd3Lc3IclM_A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DCoYtIZB_C03dOBsd3Lc3IclM_A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fsoGzVAUKX0:-9hiOKXnwWI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fsoGzVAUKX0:-9hiOKXnwWI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=fsoGzVAUKX0:-9hiOKXnwWI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fsoGzVAUKX0:-9hiOKXnwWI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=fsoGzVAUKX0:-9hiOKXnwWI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fsoGzVAUKX0:-9hiOKXnwWI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=fsoGzVAUKX0:-9hiOKXnwWI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/fsoGzVAUKX0" height="1" width="1"/&gt;</description></item>
      <item>
         <title>Why do we need partial application? – Part 2 of n – Simulating type classes in C# and F#</title>
         <link>http://www.navision-blog.de/2012/01/31/why-do-we-need-partial-application-part-2-of-n-simulating-type-classes-in-c-and-f/</link>
         <description>&lt;p&gt;This is yet another blog post in my &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Currying"&gt;Currying&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Partial_application"&gt;Partial application&lt;/a&gt; series. This is what I have posted so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/27/partial-application-if-f-and-c/"&gt;Partial application in F# and C#&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/29/why-do-we-need-partial-application-part-1-of-n-fluent-interfaces-and-piping/"&gt;Why do we need partial application? – Part 1 of n – Fluent interfaces and piping&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/30/currying-and-uncurrying-in-c-and-f/"&gt;Currying and uncurrying in C# and F#&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this post I want to show you a way to simulate &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Type_class"&gt;type classes&lt;/a&gt; in C# and F#. Type classes are this wonderful feature in Haskell which allow you to specify constraints on your polymorphic types. We don’t have this in C# nor F#.&lt;/p&gt;
&lt;p&gt;Let’s start with the following problem: We want to compute the sum of the squares of arbitrary numbers. We want to write something like this:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/images/Simulating-type-classes-in-C-and-F_F1D3/image.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.navision-blog.de/images/Simulating-type-classes-in-C-and-F_F1D3/image_thumb.png" width="489" height="169"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The problem is we don’t have a generic * function and of course we’d also need a generic + operator and maybe a generic zero. Obviously we need a constraint on the generic parameter T since + might not be defined for any type. So let’s define an interface for numbers:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;Nothing special here, so let&amp;#8217;s get straight to the implementation for integers and doubles:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;So far so good. With this in our pocket we rewrite SumOfSquares() into this:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;The trick is that we pass the concrete implementation as the first parameter into our function. This works exactly like a type constraint or as &lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/en-us/people/simonpj/"&gt;Simon Peyton-Jones&lt;/a&gt; would say: the &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Virtual_method_table"&gt;vtable&lt;/a&gt; travels into the function. Notice that we don’t have access to the definition of in nor double. There is no way for us to express that int or double implement a number interface.&lt;/p&gt;
&lt;p&gt;Now let’s try this out:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;As you can see, this is perfectly type safe. We now have a way for poor man’s type classes in C#. Yay!&lt;/p&gt;
&lt;p&gt;Now what has this to do with partial application? Let’s look at the same thing in F#:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;We&amp;#8217;re using a lot of partial application here. Exercise: Try to spot all the places.&lt;/p&gt;
&lt;p&gt;Ok, you’re right. This post might be a little bit far away from the partial application stuff, but it’s still related. Somehow.&lt;/p&gt;
&lt;p&gt;&amp;copy;2012 &lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de"&gt;Rash thoughts about .NET, C#, F# and Dynamics NAV.&lt;/a&gt;. All Rights Reserved.&lt;/p&gt;.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MWrUfQ99xqW_DzMA4UosxAC4xJY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MWrUfQ99xqW_DzMA4UosxAC4xJY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MWrUfQ99xqW_DzMA4UosxAC4xJY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MWrUfQ99xqW_DzMA4UosxAC4xJY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=2YdV_LP3img:Zm5BzYDxSPs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=2YdV_LP3img:Zm5BzYDxSPs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=2YdV_LP3img:Zm5BzYDxSPs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=2YdV_LP3img:Zm5BzYDxSPs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=2YdV_LP3img:Zm5BzYDxSPs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=2YdV_LP3img:Zm5BzYDxSPs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=2YdV_LP3img:Zm5BzYDxSPs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/2YdV_LP3img" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.navision-blog.de/?p=1149</guid>
         <pubDate>Tue, 31 Jan 2012 16:48:58 +0000</pubDate>
      </item>
      <item>
         <title>F#/C# Contract Position for Silverlight/HTML 5 User Interface Development at Microsoft Research, Cambridge, UK</title>
         <link>http://blogs.msdn.com/b/dsyme/archive/2012/01/30/f-contract-position-for-silverlight-html-5-user-interface-development-at-microsoft-research-cambridge-uk.aspx</link>
         <description>&lt;p&gt;Microsoft Research Cambridge has available a 6-month contract position for development of web-based user interfaces for designing and simulating computer models of biological systems. We are looking for an experienced and highly-motivated individual to produce easy-to-use interfaces for the software tools developed by our Computational Science Lab. The aim of the post is to produce user interfaces to simplify and encourage the trial and adoption of our research prototypes within the wider research community, and the initial focus of the work will be on software for Biological Computation (&lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/biology"&gt;http://research.microsoft.com/biology&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The user interfaces will be for a family of modelling languages, which are being used in a number of key scientific projects, from building computational circuits in DNA (&lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/dna"&gt;http://research.microsoft.com/dna&lt;/a&gt;), to genetic engineering of living cells (&lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/gec"&gt;http://research.microsoft.com/gec&lt;/a&gt;), to understanding and predicting the response of the human immune system (&lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/spim"&gt;http://research.microsoft.com/spim&lt;/a&gt;). The candidate will be working in an exciting new field at the intersection of computer science and biology, and the results of the project could potentially have an impact on a broad community of researchers, both in academia and industry.&lt;/p&gt;
&lt;p&gt;The first phase of the project will involve investigating the feasibility of translating existing computational modelling software from Silverlight to HTML5, with the help of existing translation tools such as Websharper (&lt;a rel="nofollow" target="_blank" href="http://www.websharper.com/"&gt;http://www.websharper.com&lt;/a&gt;) and Sharpkit (&lt;a rel="nofollow" target="_blank" href="http://sharpkit.net"&gt;http://sharpkit.net&lt;/a&gt;).&lt;/p&gt;
&lt;p class="Default"&gt;The second phase of the project will involve investigating the feasibility of translating a Silverlight visual editor to HTML5. The visual editor relies on a C# library for graph layout, developed within Microsoft Research (&lt;a rel="nofollow" target="_blank" href="http://research.microsoft.com/msagl"&gt;http://research.microsoft.com/msagl&lt;/a&gt;). There is also an opportunity to extend the C# library to improve its visual editing capabilities.&lt;/p&gt;
&lt;p&gt;This is an exciting opportunity to work at the intersection of cutting-edge software development, visual programming language design, and research into computational modelling of complex natural systems The&amp;nbsp; candidate must be willing to work in Cambridge, UK, and the contract is for 6 months with the possibility of extending this to 2 years. Interested candidates should contact Andrew Phillips (&lt;a rel="nofollow" target="_blank" href="mailto:firstname.lastname@microsoft.com"&gt;firstname.lastname@microsoft.com&lt;/a&gt;) with a CV. The start date is flexible, however the position is available from February 2012.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Duration:&lt;/b&gt; 6 months&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Location:&lt;/b&gt; Cambridge, UK&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Required skills:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTML5, Silverlight, WPF, C# programming&lt;/li&gt;
&lt;li&gt;User interface development&lt;/li&gt;
&lt;li&gt;Ability to capture user requirements and translate these into easy-to-use tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Additional desired skills:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Knowledge of automatic graph layout algorithms&lt;/li&gt;
&lt;li&gt;Experience in developing visual editors&lt;/li&gt;
&lt;li&gt;Experience in F# programming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10261794" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bphHN7WUQwQo3xKDcxq_5hH9Wgc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bphHN7WUQwQo3xKDcxq_5hH9Wgc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bphHN7WUQwQo3xKDcxq_5hH9Wgc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bphHN7WUQwQo3xKDcxq_5hH9Wgc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=e2F7ZUKz11A:FH_FOJDmjQM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=e2F7ZUKz11A:FH_FOJDmjQM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=e2F7ZUKz11A:FH_FOJDmjQM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=e2F7ZUKz11A:FH_FOJDmjQM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=e2F7ZUKz11A:FH_FOJDmjQM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=e2F7ZUKz11A:FH_FOJDmjQM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=e2F7ZUKz11A:FH_FOJDmjQM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/e2F7ZUKz11A" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10261794</guid>
         <pubDate>Mon, 30 Jan 2012 17:32:00 +0000</pubDate>
      </item>
      <item>
         <title>Currying and uncurrying in C# and F#</title>
         <link>http://www.navision-blog.de/2012/01/30/currying-and-uncurrying-in-c-and-f/</link>
         <description>&lt;p&gt;In the last couple of days I started to write some posts about &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Currying"&gt;Currying&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Partial_application"&gt;Partial application&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/27/partial-application-if-f-and-c/"&gt;Partial application in F# and C#&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/29/why-do-we-need-partial-application-part-1-of-n-fluent-interfaces-and-piping/"&gt;Why do we need partial application? – Part 1 of n – Fluent interfaces and piping&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This time I want to show you how we can write a &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Higher-order_function"&gt;higher-order function&lt;/a&gt; which allows us to curry another function. Remember the multiplication function from the &lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/27/partial-application-if-f-and-c/"&gt;first post&lt;/a&gt; and it’s curried form:&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&lt;h5&gt;Currying&lt;/h5&gt;
&lt;p&gt;The question is: how can we automate this transformation process? Remember we want to have the curryied form for partial application:&lt;/p&gt; 
&lt;p&gt;Let’s look at the signature of the desired Curry-function: in our case it has to take &lt;font color="#333333"&gt;&lt;strong&gt;Func&amp;lt;int, int, int&amp;gt;&lt;/strong&gt;&lt;/font&gt; and returns &lt;font color="#333333"&gt;&lt;strong&gt;Func&amp;lt;int, Func&amp;lt;int, int&amp;gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;. &lt;/p&gt;
&lt;p&gt;If we generalize the &lt;strong&gt;ints&lt;/strong&gt; to generic parameters and fix the signature then the implementation is trivial (Compiler Driven Programming). There is exactly one way to make this work:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;The F# implementation does exactly the same, but without all the annoying the type hints:&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&lt;h5&gt;Uncurrying&lt;/h5&gt;
&lt;p&gt;Of course you can undo the currying by applying a generic Uncurry-function:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;And in F# this looks like this:&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&lt;h5&gt;Libraries&lt;/h5&gt;
&lt;p&gt;Currying and Uncurrying are two very important concepts in functional programming so they are included in a couple of libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can find it at the top of the &lt;a rel="nofollow" target="_blank" href="https://github.com/fsharp/fsharpx/blob/master/src/FSharpx.Core/Prelude.fs"&gt;Prelude&lt;/a&gt; in FSharpx (&lt;a rel="nofollow" target="_blank" href="http://bugsquash.blogspot.com/2011/10/introducing-fsharpx.html"&gt;read more&lt;/a&gt;). &lt;/li&gt;
&lt;li&gt;You can find it in the &lt;a rel="nofollow" target="_blank" href="http://www.haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html"&gt;Haskell Prelude&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;You can find similar functions in &lt;a rel="nofollow" target="_blank" href="https://github.com/scalaz/scalaz"&gt;Scalaz&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Adrian Lang wrote a library called &lt;a rel="nofollow" target="_blank" href="https://github.com/adrianlang/partial-js"&gt;partial-js&lt;/a&gt; which allows to do something similar in JavaScript. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;copy;2012 &lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de"&gt;Rash thoughts about .NET, C#, F# and Dynamics NAV.&lt;/a&gt;. All Rights Reserved.&lt;/p&gt;.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xxs9zS6ThJBs1fWTntI2KZRTNeg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xxs9zS6ThJBs1fWTntI2KZRTNeg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xxs9zS6ThJBs1fWTntI2KZRTNeg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xxs9zS6ThJBs1fWTntI2KZRTNeg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=zdXgknRrTko:8gGJxAidWgY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=zdXgknRrTko:8gGJxAidWgY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=zdXgknRrTko:8gGJxAidWgY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=zdXgknRrTko:8gGJxAidWgY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=zdXgknRrTko:8gGJxAidWgY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=zdXgknRrTko:8gGJxAidWgY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=zdXgknRrTko:8gGJxAidWgY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/zdXgknRrTko" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.navision-blog.de/?p=1144</guid>
         <pubDate>Mon, 30 Jan 2012 17:00:29 +0000</pubDate>
      </item>
      <item>
         <title>Why do we need partial application? – Part 1 of n – Fluent interfaces and piping</title>
         <link>http://www.navision-blog.de/2012/01/29/why-do-we-need-partial-application-part-1-of-n-fluent-interfaces-and-piping/</link>
         <description>&lt;p&gt;My last &lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2012/01/27/partial-application-if-f-and-c/"&gt;blog post&lt;/a&gt; was yet another introduction to &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Currying"&gt;Currying&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Partial_application"&gt;Partial application&lt;/a&gt;. Now I want to put the focus more on the &lt;font color="#333333"&gt;&lt;strong&gt;why&lt;/strong&gt;&lt;/font&gt; part. Why do we want to have our functions in curryied form most of the time? This is the first part of a small blog post series and shows partial application in F# pipelines.&lt;/p&gt;
&lt;p&gt;Using “&lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Fluent_interface"&gt;Fluent interfaces&lt;/a&gt;” is a popular technique to write code in a more readable form. In languages like C# they also provide a way to create the code much faster. On every . we get IntelliSense and this gives us a “fluid” way of writing.&lt;/p&gt;
&lt;p&gt;Let’s consider the following task: we want to compute the sum of the square roots of all odd numbers between 1 and 100. In C# we can use the LINQ method chaining approach in order to do something like this:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_thumb.png" width="494" height="248"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now how does this look in F#? It’s basically the same. We replace every . with the |&amp;gt; operator and use the analogous Seq.* functions:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_thumb_3.png" width="494" height="85"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oups! What happened here? The F# compiler noticed a type error. &lt;strong&gt;Math.Sqrt&lt;/strong&gt; needs a float as input but we gave it an int. C# uses implicit casts between int and float so we didn’t noticed the problem there. Implicit casts are a little bit problematic, at least if you want to have proper &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Type_inference"&gt;type inference&lt;/a&gt; so F# doesn’t have this feature. No problem, we are programmers so let’s add the conversion manually:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;Notice that &lt;strong&gt;float&lt;/strong&gt; is a function from int to float and not a cast. &lt;/p&gt;
&lt;p&gt;Now you might ask: how does this all relate to partial application? The answer is simple: In every pipeline step we use a higher-order function (Seq.*) and apply the first parameter with a lambda. The second parameter is given via the |&amp;gt; operator from the line above.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_thumb_4.png" width="494" height="99"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By applying our rule of thumb from the last post were are able to remove the x parameters:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;Now let’s step back to C#. Keeping this knowledge in mind we try to apply the same rule in order to get rid of the x parameters:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.navision-blog.de/images/ffe2881d8ffb_81AF/image_thumb_5.png" width="494" height="302"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oups again! Now we see same error in C#. In this case it doesn’t know how to apply the implicit cast. As I said they are “problematic”, but we know how to fix this:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&amp;copy;2012 &lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de"&gt;Rash thoughts about .NET, C#, F# and Dynamics NAV.&lt;/a&gt;. All Rights Reserved.&lt;/p&gt;.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZF0EZ2qn1HCkZXjyuaslGbYjtqA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZF0EZ2qn1HCkZXjyuaslGbYjtqA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZF0EZ2qn1HCkZXjyuaslGbYjtqA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZF0EZ2qn1HCkZXjyuaslGbYjtqA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=48z0ZQGDVdo:uyUU-c5GOcI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=48z0ZQGDVdo:uyUU-c5GOcI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=48z0ZQGDVdo:uyUU-c5GOcI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=48z0ZQGDVdo:uyUU-c5GOcI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=48z0ZQGDVdo:uyUU-c5GOcI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=48z0ZQGDVdo:uyUU-c5GOcI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=48z0ZQGDVdo:uyUU-c5GOcI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/48z0ZQGDVdo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.navision-blog.de/?p=1140</guid>
         <pubDate>Sun, 29 Jan 2012 10:34:35 +0000</pubDate>
      </item>
      <item>
         <title>Partial application in F# and C#</title>
         <link>http://www.navision-blog.de/2012/01/27/partial-application-if-f-and-c/</link>
         <description>&lt;p&gt;Today I had a conversation on twitter about partial application and type inference in F#. Partial application is a very important and useful concept and there are a lot of resources out there. Here is a short list of related material:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://screencasts.chariotsolutions.com/webpage/uncovering-the-unknown-principles-of-type-inference-"&gt;Uncovering the Unknown: Principles of Type Inference (video)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Wikipedia: &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Currying"&gt;Currying&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Partial_application"&gt;Partial application&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Type_inference"&gt;Type inference&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;StackOverflow: &lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/218025/what-is-the-difference-between-currying-and-partial-application"&gt;What is the difference between currying and partial application&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;HaskellWiki: &lt;a rel="nofollow" target="_blank" href="http://www.haskell.org/haskellwiki/Partial_application"&gt;Partial application&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de/2009/06/17/f-bootcamp-questions-and-answers-part-ii-currying/"&gt;F# BootCamp Q&amp;amp;A on this blog&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I promised to show a small sample and I hope this clarifies some of my points on twitter. Let&amp;#8217;s consider a multiplication function in C#:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;This function allows us to compute the product of two ints. But what can I do when I need a function which doubles its input? The solutions is easy: I just create a new function:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;And when I need a function which triples its input? Same thing, just create another method. But can we do better?&lt;/p&gt;
&lt;p&gt;Let’s transform the multiplication function into the curryied version. The transformation process is very easy once you see the pattern. It’s actually possible to write a function which curryies another function, but that’s something for another post. Anyway, here’s the curryied version:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;It&amp;#8217;s a little bit noisy with all the funky Funcs, but Ok. We can still write the double function in terms of multiply:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;And of course we can use multiply directly (which might look a bit weird at first):&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;But we can also use it in another way, which we couldn&amp;#8217;t really do before:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;How cool is this? We just applied a single parameter and we got a new function without writing any method declarations. Unfortunately we wrote a lot of weird type declarations in order to get here, but hey.&lt;/p&gt;
&lt;p&gt;Let’s move to a language which has type inference. Here’s the uncurryied version of multiply in F#:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;The type signature tells us, that we have to give it a tuple of ints and then we get an int back. That’s exactly the same as in C#. Notice that we think about x1,x2 as only one parameter – a tuple. How can we get to the curryied form? It couldn’t be easier: just remove the parentheses and you’re done:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;As you can see the type signature changes a little bit. The * is now just another arrow. This means we have basically the same as Func&amp;lt;int, Func&amp;lt;int, int&amp;gt;&amp;gt; but in a much nicer syntax. There is also another way to write this:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;This looks like the C# version, but notice how nicely the arrows align to the type signature. If we want to use the multiply function than we can write something like this:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;It’s also very easy to create partially applied functions:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;And finally the point which made me write this post. There is a simple rule: whenever we have the same parameter as the last parameter of the left and the right side of a function definition, we can remove it. This leads us to:&lt;/p&gt;
&lt;p&gt; 
&lt;p&gt;Isn&amp;#8217;t this beautiful?&lt;/p&gt;
&lt;p&gt;&amp;copy;2012 &lt;a rel="nofollow" target="_blank" href="http://www.navision-blog.de"&gt;Rash thoughts about .NET, C#, F# and Dynamics NAV.&lt;/a&gt;. All Rights Reserved.&lt;/p&gt;.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1V5PjrM8MlVIpZSAIL9Mu1pY1wY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1V5PjrM8MlVIpZSAIL9Mu1pY1wY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1V5PjrM8MlVIpZSAIL9Mu1pY1wY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1V5PjrM8MlVIpZSAIL9Mu1pY1wY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=f0QjH3Oq8rY:jgjXovefQuI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=f0QjH3Oq8rY:jgjXovefQuI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=f0QjH3Oq8rY:jgjXovefQuI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=f0QjH3Oq8rY:jgjXovefQuI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=f0QjH3Oq8rY:jgjXovefQuI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=f0QjH3Oq8rY:jgjXovefQuI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=f0QjH3Oq8rY:jgjXovefQuI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/f0QjH3Oq8rY" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.navision-blog.de/?p=1128</guid>
         <pubDate>Fri, 27 Jan 2012 18:55:18 +0000</pubDate>
      </item>
      <item>
         <title>Undertone &amp;ndash; Programmable music in F#</title>
         <link>http://strangelights.com/blog/archive/2012/01/27/undertone-ndash-programmable-music-in-f.aspx</link>
         <description>&lt;p&gt;Recently I sent a bit of time playing with &lt;a rel="nofollow" target="_blank" href="http://overtone.github.com/"&gt;Overtone&lt;/a&gt;. I’ve always been interested in music, but have little talent when it comes to playing instruments, so I really like the idea of a DSL for creating music. I was also inspired by one of my Christmas presents &lt;a rel="nofollow" target="_blank" href="http://www.amazon.com/Wave-Watchers-Companion-Stadium-Undulations/dp/0399534261/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1327663849&amp;amp;sr=1-2&amp;amp;tag=strangelights-20"&gt;The Wave Watchers Companion&lt;/a&gt; to explore relationship between waves and sound. A secondary aim of playing with overtone was to learn a bit more about &lt;a rel="nofollow" target="_blank" href="http://clojure.org/"&gt;Clojure&lt;/a&gt; which is definitely one of the most interesting languages about at the moment. I tried to resist the urge to port it F#, just enjoy learning about Clojure, but many of the ideas that make Overtone fun would work well in F#, so I couldn’t resist giving it a go. Especially when I released that if I combined it &lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/b/fsharpteam/archive/2011/11/15/updates-to-the-august-2011-f-2-0-compiler-code-drop.aspx"&gt;with the technology behind&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://tryfsharp.org"&gt;tryfsharp.org&lt;/a&gt; which would mean people could just browse to a web page and start creating music immediately. To &lt;a rel="nofollow" target="_blank" href="http://www.strangelights.com/fsharp/undertone/"&gt;try Undertone click this link&lt;/a&gt; or the below screen shot:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.strangelights.com/fsharp/undertone/"&gt;&lt;img src="http://dl.dropbox.com/u/4679672/undertone.png"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To say Undertone is a port of Overtone is probably a little unfair. Undertone takes a few ideas from Overtone and reimplements them in F#. Perhaps the biggest difference is that Overtone is uses the SuperCollider synthesis engine to generate sounds, where as Undertone has it’s own generation engine based on some work by &lt;a rel="nofollow" target="_blank" href="http://www.charlespetzold.com/blog/2009/07/A-Simple-Silverlight-3-Synthesizer-with-Keyboard-of-Sorts.html"&gt;Charles Petzold on creating a sequencer in Silverlight&lt;/a&gt;. In Undertone a note or a tune is just a seq&amp;lt;float&amp;gt; (that’s IEnumerable&amp;lt;Double&amp;gt; for the C# folks) that oscillates between –1.0 and 1.0. Undertone provides 3 things, functions to help you generate individual notes – these are in the Undertone.Waves.Creation module, functions to transform notes – these are in the Undertone.Waves.Transformation module, and Player to play a sequences of notes – the Undertone.Player class.&lt;/p&gt;  &lt;p&gt;So the creation of a note in Undertone would look something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;let myNote note octave =        &lt;br /&gt;    Creation.makeNote Creation.sawtooth 0.2 note octave        &lt;br /&gt;    // apply transformations to you're note to adjust the way it sounds         &lt;br /&gt;    |&amp;gt; Transformation.flatten 0.8        &lt;br /&gt;    |&amp;gt; Transformation.tapper 1.0 0.3&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This note can then be visualized using &lt;a rel="nofollow" target="_blank" href="http://code.msdn.microsoft.com/windowsdesktop/FSharpChart-b59073f5"&gt;F# Chart&lt;/a&gt; and looks like this:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://dl.dropbox.com/u/4679672/undertone_note.png"/&gt;&lt;/p&gt;    &lt;p&gt;One you have a note you’re happy with it’s then easy to sequence them using F#’s list comprehension syntax:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;let tune =       &lt;br /&gt;    seq { yield! myNote Note.C 5         &lt;br /&gt;          yield! myNote Note.G 4         &lt;br /&gt;          yield! myNote Note.E 4         &lt;br /&gt;          yield! myNote Note.C 4         &lt;br /&gt;          yield! myNote Note.G 3         &lt;br /&gt;          yield! myNote Note.E 3         &lt;br /&gt;          yield! myNote Note.C 3         &lt;br /&gt;          yield! myNote Note.E 3         &lt;br /&gt;          yield! myNote Note.G 3         &lt;br /&gt;          yield! myNote Note.C 4         &lt;br /&gt;          yield! myNote Note.E 4         &lt;br /&gt;          yield! myNote Note.G 4         &lt;br /&gt;          yield! myNote Note.E 4 }&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;// play the tune       &lt;br /&gt;let player = Player.Play(tune, Repeat = true)&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Although you can already make some interesting sounds with Undertone the project is in it’s infancy and there’s quite a few bits missing, notably:&lt;/p&gt;  &lt;p&gt;- As there’s no direct way to port the sound generation technique used from Silverlight to .NET so there’s no way to play your tunes in the desktop version of F# interactive. This shouldn’t be that difficult to overcome, its just means writing a new .NET sound generation engine.&lt;/p&gt;  &lt;p&gt;- There’s no way to visualize notes in Silverlight, so it would be nice to add a visualization capability&lt;/p&gt;  &lt;p&gt;- More wave generation and transformation functions would be good, perhaps including functionality to extract real waves from WAV files, or other formats.&lt;/p&gt;  &lt;p&gt;If your interested in improving the project, or just looking at the source, &lt;a rel="nofollow" target="_blank" href="https://github.com/robertpi/Undertone"&gt;it can be found on github&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The name of the project, Undertone, was inspired by Overtone itself with a nod to Northern Irish punk rock band &lt;a rel="nofollow" target="_blank" href="http://www.theundertones.com/_/Home.html"&gt;The Undertones&lt;/a&gt;.    &lt;/p&gt;&lt;img src="http://strangelights.com/blog/aggbug/1700.aspx" width="1" height="1"/&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JCbBm4vHaGhL7GITZUkRCZBtgBM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JCbBm4vHaGhL7GITZUkRCZBtgBM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JCbBm4vHaGhL7GITZUkRCZBtgBM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JCbBm4vHaGhL7GITZUkRCZBtgBM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fKP4NrLVO3U:UfSFW5axCZc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fKP4NrLVO3U:UfSFW5axCZc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=fKP4NrLVO3U:UfSFW5axCZc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fKP4NrLVO3U:UfSFW5axCZc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=fKP4NrLVO3U:UfSFW5axCZc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=fKP4NrLVO3U:UfSFW5axCZc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=fKP4NrLVO3U:UfSFW5axCZc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/fKP4NrLVO3U" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://strangelights.com/blog/archive/2012/01/27/undertone-ndash-programmable-music-in-f.aspx</guid>
         <pubDate>Fri, 27 Jan 2012 11:35:17 +0000</pubDate>
      </item>
      <item>
         <title>96 Line F# Emulator + 960 bytes of HP-35 Microcode</title>
         <link>http://blogs.msdn.com/b/ashleyf/archive/2012/01/26/hp-35-microcode-emulator-in-100-lines-of-f.aspx</link>
         <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;em&gt;&lt;span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;[Part 3 of the&lt;/span&gt;&lt;/em&gt;&lt;span class="apple-converted-space"&gt;&lt;i&gt;&lt;span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;a rel="nofollow" style="widows:2;outline-style:none;orphans:2;cursor:pointer;word-spacing:0px;" target="_blank" href="http://blogs.msdn.com/b/ashleyf/archive/tags/hpcalcs/"&gt;&lt;em&gt;&lt;span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;HP Calc series&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;em style="widows:2;orphans:2;word-spacing:0px;"&gt;&lt;span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;]&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;In this post, we&amp;rsquo;ll create a 96-line F# emulator for the HP-35 calculator with which we&amp;rsquo;ll run the 960 byte (!) ROM image.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;As you may well know, I am a calculator freak. The 40-year-old HP-35 is an especially wonderful device; being the world&amp;rsquo;s first scientific pocket calculator. I own a couple of them and keep one handy on my desk, but it&amp;rsquo;ll be useful to have a faithful command-line rendition.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;span style="color:#365f91;font-size:14pt;"&gt;&lt;span style="font-weight:bold;"&gt;Tiny ROM&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;Here is a base-64 encoding of the ROM. It was three chips, each with 256 10-bit words, for a total of 7,680 bits; just under 1KB:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;&lt;span style="color:#0000ff;"&gt; &lt;br /&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; rom = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;"&gt;// HP-35 v2 ROM&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"N2/4kBdRJEIREFRQsXzDajZ7u+ILiQ+r6vqGuaSoqg//q+r6gwMwqmoEN07MDAACDUQRC7k"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"Qn6EwsLiQyjb/q+r6hLmfqO13d27OMTg0oDSzt3qjb0uvpFtqh9uo3zbTI3y67jUVPfj+dR"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"X0ocQzlq767EfR1hOVtbLF7i57hMRIPGiZtbou6Y7K/6a6kUX961RJBBLUHOzuVSqzk6wrq"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"gag8qlKYrwd3tYHCsR/DLuvb4viIwPNilsApH+LLgwP5qAu/r+n6foSqP67pmmp/romEq+6"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"O+oDr7qNhmUtMHFqpLDGmcN6rEmJv0GuskO1UTd7OZ6JM/fqBFUzd6sbCgFMfCQHMs0OKIU"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"zNDlkNBKOu/VxOVTlj0U5PmvvP6pMP7o0lyNqev3M4NGOwxuvfKpeufUzqkURPKgqesZu77"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"fz8uKFqChaiVAn65VBLN6mUopWYSVaimaU2u7viSbplqpJuhntJ6h3s6jkoi5B4uQze0o65"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"oi3K5jiKy9jhUJelG3VQVz+74N6S3463+zJ0suS7Ujvaizuyy5Eko/7/iPM4Knit1Ymo65D"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"KRYybYMm0jIYoybY5m3MUOm0jstzGrqZlRsz+mEZDOWJ6hUpemcxq6lcxq6rpVq7rcxoycY"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"5gydSMhhjJxQycZxy6TtMVj72MhhmFYJhGJYFTawwu74gQRBDqWi6h3+w6g+ORBEFKRB4tO"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"qPzkOByUgsqct3ixay+WRYHAss8twc5bbwQXperq16fsbRCBsrP7LsORAzrMdiGFYNiWIYF"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"hmDYVjDAwBDit7WJ/gsu/qrqGLm7Ok6KjKwyu0QpKkl+7N0sSjIjt+7vsmoB4B0O7JKKSX6"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"PgQz7/pWRIS2opljoUQ+7tGAOzl+AN/kulnYhHzJPueAdzG1gydZMnH+aMnF9bMnHfZxuWc"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"fZ65TgaMNTsuBxDhsMfrm+Oc5nqszFZUBtVJT9mnZT9nsQ2uWzJt32jJtfWTJt/mDJtm2bd"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"Mi7rmYjslF7+qesLxZZ+WQ5alzs40uqb5s8uw46rOi4zlmJR20YeZ52YGx15Ok4lJTDBzDY"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"NgGIYVgGJY6uWfiS5fobtLrkW67foju74sRJC0t+lfks+DAkLOi6g+OX6f+uRbrm3Mxyleq"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"8vsmu7LMXGa2xUAMktmfqMumJCJGYlg2BYRh2BY5v5mT45YsTs4PNsxd6r+wwLpi1tDlqm7"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:x-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"PzOSrjp+x/pmOC7DHrkw2BYBgWHYliGAYVhWDY3frkuYaul7fqznq8tnzOwwmDYBgmFYgdTH7"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt;The authoring of this microcode by David Cochran was an &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;"&gt;&lt;a rel="nofollow" style="cursor:auto;" target="_blank" href="http://www.hp.com/hpinfo/abouthp/histnfacts/museum/personalsystems/0023/other/0023hpjournal03.pdf"&gt;&lt;span style="color:#0000ff;font-family:Calibri;"&gt;&lt;span style="text-decoration:underline;"&gt;amazing piece work&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;font-family:Calibri;"&gt; and &lt;/span&gt;&lt;a rel="nofollow" style="cursor:auto;" target="_blank" href="http://www.pmonta.com/calculators/hp-35/"&gt;&lt;span style="color:#0000ff;font-family:Calibri;"&gt;&lt;span style="text-decoration:underline;"&gt;Peter Monta&amp;rsquo;s reverse engineering&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;font-family:Calibri;"&gt; of the ROMs by literally cutting them open and optically extracting the bits is a pretty insane feat! I&amp;rsquo;ve &lt;/span&gt;&lt;a rel="nofollow" style="cursor:auto;" target="_blank" href="http://blogs.msdn.com/b/ashleyf/archive/2010/09/25/microcode-level-hp-35-emulator-in-javascript.aspx"&gt;&lt;span style="color:#0000ff;font-family:Calibri;"&gt;&lt;span style="text-decoration:underline;"&gt;talked quite a bit about all of this in past posts&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; so I won&amp;rsquo;t go into detail here.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;span style="color:#365f91;font-size:14pt;"&gt;&lt;span style="font-weight:bold;"&gt;Perfect Fidelity Emulation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;In well under 100 lines, here&amp;rsquo;s the emulator:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;&lt;span style="color:#0000ff;"&gt; &lt;br /&gt;&lt;span style="font-family:courier new, courier;"&gt;open&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; System&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;open&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; System.Collections&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:xx-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; calculator input output rom =&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r = Array.init 8 (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; _ &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; Array.create 14 0)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; s = Array.create 12 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; p = ref 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; pc, offset, ret = ref 0, ref 0, ref 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; carry, carry' = ref &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;, ref &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; visible, disp = ref &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;, ref &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;""&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; waiting, lastKey = ref 0, ref 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; halt = ref &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; exec code =&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; doCarry res = carry := (res &amp;gt; 9 || res &amp;lt; 0); (res + 10) % 10&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; doOp fn x y = doCarry (fn (fn x y) (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; !carry &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 1 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0))&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; iteric c fn (first, last) = carry := c; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; first..last &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; fn i&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; iteri fn = iteric !carry fn&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; setreg a b = iteri (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- r.[b].[i])&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; zeroreg reg = setreg reg 7&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; shiftl a (f,l) = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (List.rev [f..l]) &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i = f &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i-1]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; shiftr a (f,l) = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; f..l &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i = l &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i+1]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; arith op a b c = iteri (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- (doOp op) r.[b].[i] r.[c].[i])&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; add = arith (+)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; sub = arith (-)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; regsgte a b = iteri (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (doOp (-)) r.[a].[i] r.[b].[i] |&amp;gt; ignore)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; regsgte1 a = iteric &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; carry := !carry &amp;amp;&amp;amp; r.[a].[i] = 0)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; negcdec dec = iteric dec (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[2].[i] &amp;lt;- (doOp (-)) 0 r.[2].[i])&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; opreg op a = iteric &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- (doOp op) r.[a].[i] 0)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; ifregzero a = iteri (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; carry := !carry || r.[a].[i] &amp;lt;&amp;gt; 0)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; exchreg a b = iteri (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; t = r.[a].[i] &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- r.[b].[i];r.[b].[i]&amp;lt;-t)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; opp fn = p := (fn !p 1) &amp;amp;&amp;amp;&amp;amp; 0xf&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; iterir fn = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..13 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; fn i&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; move pairs = iterir (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; List.iter (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (a, b) &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[a].[i] &amp;lt;- r.[b].[i]) pairs)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; n = (code &amp;amp;&amp;amp;&amp;amp; 0b1111111100) &amp;gt;&amp;gt;&amp;gt; 2&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pc := (!pc + 1) % 256&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; code &amp;amp;&amp;amp;&amp;amp; 0b11 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0b11 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; not !carry' &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; pc := n &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;| 0b01 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; ret := !pc; pc := n&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0b10 &amp;ndash;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;[| ifregzero 1; regsgte 0 2; setreg 2 1; zeroreg 2; shiftl 0; sub 2 0 2; setreg 0 2; add 2 0 2&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; regsgte 0 1; shiftr 2; shiftr 1; shiftr 0; sub 0 0 1; sub 0 0 2; add 0 0 1; add 0 0 2; zeroreg 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; regsgte1 2; negcdec &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;; negcdec &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;; setreg 1 0; opreg (-) 2; ifregzero 2; opreg (+) 2&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exchreg 1 2; regsgte1 0; add 2 2 2; zeroreg 0; exchreg 0 1; opreg (-) 0; exchreg 0 2; opreg (+) 0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |].[16 * (n / 8 &amp;amp;&amp;amp;&amp;amp; 1) + (n / 16)] [|!p,!p; 3,12; 0,2; 0,13; 0,!p; 3,13; 2,2; 13,13|].[n % 8]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0b00 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; arg = n / 16&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; n % 16 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; () &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;"&gt;// no-op&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 1 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; s.[arg] &amp;lt;- 1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 3 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; p := arg&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 4 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;when&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; arg = 3 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; pc := !lastKey&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 4 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;when&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; arg % 2 = 0 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r = arg / 2 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; offset := r * 256&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 5 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; carry := s.[arg] &amp;lt;&amp;gt; 0; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; arg = 0 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; waiting := !waiting + 1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 6 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; !p &amp;lt; 14 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[2].[!p] &amp;lt;- arg); opp (-)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| 7 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; opp (-)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 9 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; s.[arg] &amp;lt;- 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 10 &amp;ndash;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;match&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; arg &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 0&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; visible := not !visible&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 2&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; exchreg 2 6 (0, 13)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 4&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; move [5, 4; 4, 3; 3, 2]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 6&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; move [0, 3; 3, 4; 4, 5]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 8&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; visible := &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 10 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; setreg 2 6 (0, 13)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 12 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; iterir (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; t = r.[2].[i] &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; move [2,3; 3,4; 4,5]; r.[5].[i] &amp;lt;- t)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 14 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..13 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; j &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..7 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; r.[j].[i] &amp;lt;- 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 11 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; carry := !p = arg&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 12 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; pc := !ret&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 13 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..11 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; s.[i] &amp;lt;- 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 15 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; p := (!p + 1) &amp;amp;&amp;amp;&amp;amp; 0xf&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; display () =&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; not !visible &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;""&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; render i a b =&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; b &amp;gt;= 8 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" "&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i = 2 || i = 13 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; a &amp;gt;= 8 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"-"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" "&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; string a) + (&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; b = 2 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"."&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;""&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Array.mapi2 render r.[0] r.[1] |&amp;gt; Array.rev |&amp;gt; Array.fold (+) &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;""&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; code = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; bits = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; toBits b = [|&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; s &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..7 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0x80uy &amp;gt;&amp;gt;&amp;gt; s &amp;amp;&amp;amp;&amp;amp; b |&amp;gt; min 1uy|]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rom |&amp;gt; Convert.FromBase64String |&amp;gt; Array.collect toBits&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..767 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; List.sum [&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; b &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; 0..9 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; (int bits.[i * 10 + 9 - b]) &amp;lt;&amp;lt;&amp;lt; b]]&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;rec&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; step () =&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; disp' = display ()&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; disp' &amp;lt;&amp;gt; !disp &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; output disp'; disp := disp'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; carry' := !carry; carry := &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec code.[!offset + !pc]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; !waiting &amp;gt; 1 &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; input () &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | Some k &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; List.tryFind (fst &amp;gt;&amp;gt; (=) k)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'0'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,36; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'1'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,28; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'2'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,27; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'3'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,26; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'4'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,20; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'5'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,19; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'6'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,18; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'7'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,52; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'8'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,51; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'9'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,50; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'.'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,35; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'-'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,54 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'+'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,22; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'*'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,30; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'/'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,38; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'p'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,34; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'~'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,59; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'!'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,0;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'x'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,58; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'a'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,44; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'s'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,43; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'c'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,42; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'t'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,40; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'l'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,3 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'g'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,4;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'e'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,2; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt; '^'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,6;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'q'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,46; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'f'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,14; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'w'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,12; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'r'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,11; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'&amp;gt;'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,10; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'&amp;lt;'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,8;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;','&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,56; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;' '&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;,62] &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | Some (_, addr) &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; lastKey := addr; s.[0] &amp;lt;- 1; waiting := 0&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:xx-small;"&gt;&lt;span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | None &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; halt := k = &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'`'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;| None &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; ()&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; not !halt &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; step () &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; disp'&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="font-size:xx-small;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;b style=""&gt;&lt;span style="line-height:10pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;step ()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="line-height:12pt;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;Given a ROM image and a pair of I/O functions, this will emulate the HP-35 perfectly.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt; &lt;br /&gt;What&amp;rsquo;s amazing really is that the only &amp;ldquo;mathy&amp;rdquo; operations &lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;we emulate are addition, subtraction and digit shifting. From this, all of the logarithm, trigonometry, etc. are implemented in microcode. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;"&gt;&lt;a rel="nofollow" style="cursor:auto;" target="_blank" href="http://www.jacques-laporte.org/"&gt;&lt;span style="color:#0000ff;font-family:Calibri;"&gt;&lt;span style="text-decoration:underline;"&gt;Jacques Laporte&amp;rsquo;s site&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; goes into great detail on how it works. It&amp;rsquo;s quite an interesting onion to unpeel!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt; &lt;br /&gt;On the real device, key presses cause jumps to particular ROM addresses. In the emulation, input comes from a &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;b style=""&gt;&lt;span style="line-height:10pt;"&gt;&lt;span&gt;(unit -&amp;gt; char option)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt; function. The character mappings are: &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class="MsoTableGrid" style="border:currentColor;line-height:normal;list-style-type:disc;border-collapse:collapse;" cellspacing="0" cellpadding="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr style=""&gt;
&lt;td style="padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;padding-top:0in;border:windowtext 1pt solid;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;Digits 0-9 and decimal (.)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;Number input&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;+ - * /&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;Basic Arithmetic (+ - &amp;times; &amp;divide;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;~&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;CHS (change sign)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;SPACE or RETURN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;ENTER&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;EEX (enter exponent)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;CLX (clear X register)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;p&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;&amp;pi;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;^&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;x&lt;sup&gt;y&lt;/sup&gt; (x to y power)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;g&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;LOG (log&lt;sub&gt;10&lt;/sub&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;l&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;LN (log&lt;sub&gt;e&lt;/sub&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;e&lt;sup&gt;x&lt;/sup&gt; (e to x power)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;CLR (clear)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;q&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;&amp;radic;x (sqrt x)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;ARC&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;SIN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;c&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;COS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;TAN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;f&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;sup&gt;&lt;span style=""&gt;&lt;span style="font-size:11pt;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/sup&gt;&lt;span style=""&gt;&lt;span style="font-size:11pt;"&gt;/&lt;sub&gt;x&lt;/sub&gt; (reciprocal &amp;ndash; &amp;ldquo;flip&amp;rdquo;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;w&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;x&amp;harr;y (swap)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;r&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;R&amp;darr; (roll down)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:11pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:11pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;STO (store)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:11pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:11pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;RCL (recall)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=""&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162"&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"&gt;&lt;span style=""&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt;Quit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;span style="color:#365f91;font-size:14pt;"&gt;&lt;span style="font-weight:bold;"&gt;The &amp;ldquo;UI&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt; &lt;br /&gt;The calculator function above takes a ROM image and the pair of I/O functions. Again, input is a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;b style=""&gt;&lt;span style="line-height:10pt;"&gt;&lt;span&gt;(unit -&amp;gt; char option) &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt;called repeatedly and output is a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;b style=""&gt;&lt;span style="line-height:10pt;"&gt;&lt;span&gt;(string -&amp;gt; unit)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="line-height:10pt;"&gt; &lt;/span&gt;&lt;span style="font-size:11pt;"&gt;which is passed the display (driven by the A and B registers) formatted exactly as you&amp;rsquo;d see it on the real device.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;We can cobble together a quick console UI like so:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt;&lt;strong&gt; &lt;br /&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;calculator&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; () &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; Console.KeyAvailable &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; k = Console.ReadKey &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; k.Key = ConsoleKey.Enter &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; Some &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;' '&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;elif&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; k.Key = ConsoleKey.Escape &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;then&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; Some &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;'`'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; Some (Char.ToLower k.KeyChar)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; None)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;font-size:small;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(printf &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b&amp;#92;b%s"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="line-height:11pt;font-family:courier new, courier;font-size:small;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;rom |&amp;gt; ignore&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"&gt;&lt;span style="font-family:Cambria;"&gt;&lt;span style="color:#365f91;font-size:14pt;"&gt;&lt;span style="font-weight:bold;"&gt;Tests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; &lt;br /&gt;Another reason for passing in the I/O dependencies is to allow simple testing:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:Consolas;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-size:9.5pt;"&gt; &lt;br /&gt;&lt;span style="font-family:courier new, courier;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new, courier;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt; test keys expected =&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt; keySequence = ref (List.ofSeq keys)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt; testInput () =&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;match&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; !keySequence &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;font-size:9.5pt;"&gt;with&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;| h :: t &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt; keySequence := t; Some h&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style=""&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;| [] &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; Some &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;font-size:9.5pt;"&gt;'`'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; res = calculator testInput (&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;fun&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; _ &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt; ()) rom&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#0000ff;"&gt;assert&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt; (res = expected)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span&gt;&lt;span style="color:#000000;font-size:9.5pt;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"~1.2345678909x~35"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"-1.234567890-35"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// entry&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"2 3+"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 5.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// add&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"3 2-"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 1.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// subtract&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"3 2*"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 6.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// multiply&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"3 2/"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 1.5&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// divide&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"4f"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" .25&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// reciprocal&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"25q"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 5.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// square root&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pl"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 1.144729886&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// ln&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pg"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" .4971498728&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// log&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pe"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 23.14069264&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// exp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"ps"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" .054803665&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// sin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pc"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" .9984971498&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// cos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pt"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" .0548861507&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// tan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pgas"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 29.81161556&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// sin-1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pgac"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 60.18838444&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// cos-1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"pat"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 72.34321286&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// tan-1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"1 2 3 4 Swrrr"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 2.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// stack&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"123&amp;gt;456 ,&amp;lt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 123.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// memory&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"9sctatacas"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 9.002983113&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// "Calculator Forensics" result&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="font-family:courier new, courier;"&gt;&lt;strong&gt;&lt;span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:9.5pt;"&gt;test &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;"&gt;&lt;span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;"9 2^"&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style=""&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#800000;"&gt;" 512.&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"&gt;&lt;span style="color:#008000;font-size:9.5pt;"&gt;// power&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"&gt;&lt;span style="color:#000000;font-family:Calibri;"&gt;&lt;span style="font-size:11pt;"&gt; &lt;br /&gt;I keep this little guy handy now in my console window. I dropped it, along with the F# tools from &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11pt;"&gt;&lt;a rel="nofollow" style="cursor:auto;" target="_blank" href="http://blogs.msdn.com/b/ashleyf/archive/tags/hpcalcs/"&gt;&lt;span style="color:#0000ff;font-family:Calibri;"&gt;&lt;span style="text-decoration:underline;"&gt;previous HP-35 posts&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;font-family:Calibri;"&gt;, in &lt;/span&gt;&lt;a rel="nofollow" style="cursor:auto;" target="_blank" href="https://github.com/AshleyF/Sandbox/tree/master/HP35/FSharp"&gt;&lt;span style="color:#0000ff;font-family:Calibri;"&gt;&lt;span style="text-decoration:underline;"&gt;my github&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:Calibri;"&gt;&lt;span style="color:#000000;font-size:11pt;"&gt; as well. Have fun with it if you like!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10261061" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10261061</guid>
         <pubDate>Fri, 27 Jan 2012 00:57:00 +0000</pubDate>
         <content:encoded><![CDATA[<p>&nbsp;</p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="font-family:Calibri;"><em><span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;">[Part 3 of the</span></em><span class="apple-converted-space"><i><span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;">&nbsp;</span></i></span><span style=""><a rel="nofollow" style="widows:2;outline-style:none;orphans:2;cursor:pointer;word-spacing:0px;" target="_blank" href="http://blogs.msdn.com/b/ashleyf/archive/tags/hpcalcs/"><em><span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;">HP Calc series</span></em></a></span><em style="widows:2;orphans:2;word-spacing:0px;"><span style="background-image:none;line-height:10pt;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;">]</span></em></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />In this post, we&rsquo;ll create a 96-line F# emulator for the HP-35 calculator with which we&rsquo;ll run the 960 byte (!) ROM image.</span></span></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />As you may well know, I am a calculator freak. The 40-year-old HP-35 is an especially wonderful device; being the world&rsquo;s first scientific pocket calculator. I own a couple of them and keep one handy on my desk, but it&rsquo;ll be useful to have a faithful command-line rendition.</span></span></span></p>
<h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"><span style="font-family:Cambria;"><span style="color:#365f91;font-size:14pt;"><span style="font-weight:bold;">Tiny ROM</span></span></span></h1>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />Here is a base-64 encoding of the ROM. It was three chips, each with 256 10-bit words, for a total of 7,680 bits; just under 1KB:</span></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:Consolas;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"><span style="color:#0000ff;"> <br /><span style="font-family:courier new, courier;font-size:x-small;">let</span></span></span></b><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> rom = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;">// HP-35 v2 ROM</span></span></b></span></span><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"N2/4kBdRJEIREFRQsXzDajZ7u+ILiQ+r6vqGuaSoqg//q+r6gwMwqmoEN07MDAACDUQRC7k"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"Qn6EwsLiQyjb/q+r6hLmfqO13d27OMTg0oDSzt3qjb0uvpFtqh9uo3zbTI3y67jUVPfj+dR"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"X0ocQzlq767EfR1hOVtbLF7i57hMRIPGiZtbou6Y7K/6a6kUX961RJBBLUHOzuVSqzk6wrq"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"gag8qlKYrwd3tYHCsR/DLuvb4viIwPNilsApH+LLgwP5qAu/r+n6foSqP67pmmp/romEq+6"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"O+oDr7qNhmUtMHFqpLDGmcN6rEmJv0GuskO1UTd7OZ6JM/fqBFUzd6sbCgFMfCQHMs0OKIU"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"zNDlkNBKOu/VxOVTlj0U5PmvvP6pMP7o0lyNqev3M4NGOwxuvfKpeufUzqkURPKgqesZu77"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"fz8uKFqChaiVAn65VBLN6mUopWYSVaimaU2u7viSbplqpJuhntJ6h3s6jkoi5B4uQze0o65"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"oi3K5jiKy9jhUJelG3VQVz+74N6S3463+zJ0suS7Ujvaizuyy5Eko/7/iPM4Knit1Ymo65D"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"KRYybYMm0jIYoybY5m3MUOm0jstzGrqZlRsz+mEZDOWJ6hUpemcxq6lcxq6rpVq7rcxoycY"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"5gydSMhhjJxQycZxy6TtMVj72MhhmFYJhGJYFTawwu74gQRBDqWi6h3+w6g+ORBEFKRB4tO"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"qPzkOByUgsqct3ixay+WRYHAss8twc5bbwQXperq16fsbRCBsrP7LsORAzrMdiGFYNiWIYF"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"hmDYVjDAwBDit7WJ/gsu/qrqGLm7Ok6KjKwyu0QpKkl+7N0sSjIjt+7vsmoB4B0O7JKKSX6"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"PgQz7/pWRIS2opljoUQ+7tGAOzl+AN/kulnYhHzJPueAdzG1gydZMnH+aMnF9bMnHfZxuWc"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"fZ65TgaMNTsuBxDhsMfrm+Oc5nqszFZUBtVJT9mnZT9nsQ2uWzJt32jJtfWTJt/mDJtm2bd"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"Mi7rmYjslF7+qesLxZZ+WQ5alzs40uqb5s8uw46rOi4zlmJR20YeZ52YGx15Ok4lJTDBzDY"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"NgGIYVgGJY6uWfiS5fobtLrkW67foju74sRJC0t+lfks+DAkLOi6g+OX6f+uRbrm3Mxyleq"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"8vsmu7LMXGa2xUAMktmfqMumJCJGYlg2BYRh2BY5v5mT45YsTs4PNsxd6r+wwLpi1tDlqm7"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">+</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:x-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"PzOSrjp+x/pmOC7DHrkw2BYBgWHYliGAYVhWDY3frkuYaul7fqznq8tnzOwwmDYBgmFYgdTH7"</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"></span></b></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="color:#000000;font-family:Calibri;"><span style="font-size:11pt;">The authoring of this microcode by David Cochran was an </span></span><span style="font-size:11pt;"><a rel="nofollow" style="cursor:auto;" target="_blank" href="http://www.hp.com/hpinfo/abouthp/histnfacts/museum/personalsystems/0023/other/0023hpjournal03.pdf"><span style="color:#0000ff;font-family:Calibri;"><span style="text-decoration:underline;">amazing piece work</span></span></a><span style="color:#000000;font-family:Calibri;"> and </span><a rel="nofollow" style="cursor:auto;" target="_blank" href="http://www.pmonta.com/calculators/hp-35/"><span style="color:#0000ff;font-family:Calibri;"><span style="text-decoration:underline;">Peter Monta&rsquo;s reverse engineering</span></span></a><span style="color:#000000;font-family:Calibri;"> of the ROMs by literally cutting them open and optically extracting the bits is a pretty insane feat! I&rsquo;ve </span><a rel="nofollow" style="cursor:auto;" target="_blank" href="http://blogs.msdn.com/b/ashleyf/archive/2010/09/25/microcode-level-hp-35-emulator-in-javascript.aspx"><span style="color:#0000ff;font-family:Calibri;"><span style="text-decoration:underline;">talked quite a bit about all of this in past posts</span></span></a></span><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> so I won&rsquo;t go into detail here.</span></span></span></p>
<h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"><span style="font-family:Cambria;"><span style="color:#365f91;font-size:14pt;"><span style="font-weight:bold;">Perfect Fidelity Emulation</span></span></span></h1>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />In well under 100 lines, here&rsquo;s the emulator:</span></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:Consolas;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"><span style="color:#0000ff;"> <br /><span style="font-family:courier new, courier;">open</span></span></span></b><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> System</span></span></b></span></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">open</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> System.Collections</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:xx-small;">&nbsp;</span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> calculator input output rom =</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r = Array.init 8 (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> _ </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> Array.create 14 0)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> s = Array.create 12 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> p = ref 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> pc, offset, ret = ref 0, ref 0, ref 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> carry, carry' = ref </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">, ref </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> visible, disp = ref </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">, ref </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">""</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> waiting, lastKey = ref 0, ref 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> halt = ref </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> exec code =</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> doCarry res = carry := (res &gt; 9 || res &lt; 0); (res + 10) % 10</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> doOp fn x y = doCarry (fn (fn x y) (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> !carry </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 1 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0))</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> iteric c fn (first, last) = carry := c; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> first..last </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> fn i</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> iteri fn = iteric !carry fn</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> setreg a b = iteri (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- r.[b].[i])</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> zeroreg reg = setreg reg 7</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> shiftl a (f,l) = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (List.rev [f..l]) </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i = f </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i-1]</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> shiftr a (f,l) = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> f..l </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i = l </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i+1]</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> arith op a b c = iteri (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- (doOp op) r.[b].[i] r.[c].[i])</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> add = arith (+)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> sub = arith (-)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> regsgte a b = iteri (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (doOp (-)) r.[a].[i] r.[b].[i] |&gt; ignore)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> regsgte1 a = iteric </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">true</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> carry := !carry &amp;&amp; r.[a].[i] = 0)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> negcdec dec = iteric dec (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[2].[i] &lt;- (doOp (-)) 0 r.[2].[i])</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> opreg op a = iteric </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">true</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- (doOp op) r.[a].[i] 0)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> ifregzero a = iteri (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> carry := !carry || r.[a].[i] &lt;&gt; 0)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> exchreg a b = iteri (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> t = r.[a].[i] </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- r.[b].[i];r.[b].[i]&lt;-t)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> opp fn = p := (fn !p 1) &amp;&amp;&amp; 0xf</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> iterir fn = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..13 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> fn i</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> move pairs = iterir (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> List.iter (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (a, b) </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[a].[i] &lt;- r.[b].[i]) pairs)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> n = (code &amp;&amp;&amp; 0b1111111100) &gt;&gt;&gt; 2</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="font-size:xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pc := (!pc + 1) % 256</span></span></span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> code &amp;&amp;&amp; 0b11 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">with</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 0b11 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> not !carry' </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> pc := n <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b></span></span><span><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">| 0b01 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> ret := !pc; pc := n</span></span></b></span></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 0b10 &ndash;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">[| ifregzero 1; regsgte 0 2; setreg 2 1; zeroreg 2; shiftl 0; sub 2 0 2; setreg 0 2; add 2 0 2</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="font-size:xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; regsgte 0 1; shiftr 2; shiftr 1; shiftr 0; sub 0 0 1; sub 0 0 2; add 0 0 1; add 0 0 2; zeroreg 1</span></span></span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; regsgte1 2; negcdec </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">; negcdec </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">true</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">; setreg 1 0; opreg (-) 2; ifregzero 2; opreg (+) 2</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="font-size:xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exchreg 1 2; regsgte1 0; add 2 2 2; zeroreg 0; exchreg 0 1; opreg (-) 0; exchreg 0 2; opreg (+) 0</span></span></span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="font-size:xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |].[16 * (n / 8 &amp;&amp;&amp; 1) + (n / 16)] [|!p,!p; 3,12; 0,2; 0,13; 0,!p; 3,13; 2,2; 13,13|].[n % 8]</span></span></span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 0b00 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> arg = n / 16</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> n % 16 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">with</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 0 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> () </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;">// no-op</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 1 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> s.[arg] &lt;- 1</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 3 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> p := arg</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 4 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">when</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> arg = 3 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> pc := !lastKey</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 4 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">when</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> arg % 2 = 0 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r = arg / 2 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> offset := r * 256</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 5 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> carry := s.[arg] &lt;&gt; 0; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> arg = 0 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> waiting := !waiting + 1</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 6 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> !p &lt; 14 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[2].[!p] &lt;- arg); opp (-)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>| 7 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> opp (-)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 9 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> s.[arg] &lt;- 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 10 &ndash;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">match</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> arg </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">with</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 0<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> visible := not !visible</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 2<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> exchreg 2 6 (0, 13)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 4<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> move [5, 4; 4, 3; 3, 2]</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 6<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> move [0, 3; 3, 4; 4, 5]</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 8<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> visible := </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 10 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> setreg 2 6 (0, 13)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 12 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> iterir (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> t = r.[2].[i] </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> move [2,3; 3,4; 4,5]; r.[5].[i] &lt;- t)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 14 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..13 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> j </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..7 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> r.[j].[i] &lt;- 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 11 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> carry := !p = arg</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 12 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> pc := !ret</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 13 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..11 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">do</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> s.[i] &lt;- 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 15 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> p := (!p + 1) &amp;&amp;&amp; 0xf</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> display () =</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> not !visible </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">""</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> render i a b =</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> b &gt;= 8 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" "</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i = 2 || i = 13 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> a &gt;= 8 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"-"</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" "</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> string a) + (</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> b = 2 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"."</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">""</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Array.mapi2 render r.[0] r.[1] |&gt; Array.rev |&gt; Array.fold (+) </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">""</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> code = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> bits = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> toBits b = [|</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> s </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..7 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0x80uy &gt;&gt;&gt; s &amp;&amp;&amp; b |&gt; min 1uy|]</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="font-size:xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rom |&gt; Convert.FromBase64String |&gt; Array.collect toBits</span></span></span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>[</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> i </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..767 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> List.sum [</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">for</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> b </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">in</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> 0..9 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> (int bits.[i * 10 + 9 - b]) &lt;&lt;&lt; b]]</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">rec</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> step () =</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> disp' = display ()</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> disp' &lt;&gt; !disp </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> output disp'; disp := disp'</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; carry' := !carry; carry := </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">false</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="font-size:xx-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exec code.[!offset + !pc]</span></span></span></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> !waiting &gt; 1 </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> input () </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">with</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Some k </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; match</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> List.tryFind (fst &gt;&gt; (=) k)</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'0'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,36; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'1'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,28; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'2'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,27; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'3'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,26; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'4'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,20; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'5'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,19; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'6'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,18; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'7'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,52; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'8'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,51; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'9'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,50; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'.'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,35; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'-'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,54 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'+'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,22; </span></span></b></span></span><span><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'*'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,30; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'/'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,38; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'p'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,34; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'~'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,59; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'!'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,0;<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'x'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,58; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'a'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,44; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'s'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,43; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'c'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,42; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'t'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,40; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'l'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,3 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'g'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,4;<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'e'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,2; </span></span></b></span></span><span style="font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;"> '^'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,6;<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'q'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,46; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'f'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,14; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'w'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,12; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'r'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,11; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'&gt;'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,10; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'&lt;'</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,8;<span style="">&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">','</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,56; </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">' '</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">,62] </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">with</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Some (_, addr) </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> lastKey := addr; s.[0] &lt;- 1; waiting := 0</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:xx-small;"><span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | None </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> halt := k = </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'`'</span></span></b></span><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></b></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>| None </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> ()</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><span style="font-size:xx-small;"><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> not !halt </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> step () </span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span></b><b style=""><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> disp'</span></span></b></span></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="font-size:xx-small;"><span style="font-family:courier new, courier;"><b style=""><span style="line-height:10pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp; </span>step ()</span></span></span></b></span><b style=""><span style="line-height:12pt;"></span></b></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />Given a ROM image and a pair of I/O functions, this will emulate the HP-35 perfectly.</span></span></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style=""><span style="color:#000000;font-family:Calibri;"><span style="font-size:11pt;"> <br />What&rsquo;s amazing really is that the only &ldquo;mathy&rdquo; operations <span style="">&nbsp;</span>we emulate are addition, subtraction and digit shifting. From this, all of the logarithm, trigonometry, etc. are implemented in microcode. </span></span><span style="font-size:11pt;"><a rel="nofollow" style="cursor:auto;" target="_blank" href="http://www.jacques-laporte.org/"><span style="color:#0000ff;font-family:Calibri;"><span style="text-decoration:underline;">Jacques Laporte&rsquo;s site</span></span></a></span><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> goes into great detail on how it works. It&rsquo;s quite an interesting onion to unpeel!</span></span></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="color:#000000;"><span style=""><span style="font-family:Calibri;"><span style="font-size:11pt;"> <br />On the real device, key presses cause jumps to particular ROM addresses. In the emulation, input comes from a </span></span></span><span style="font-family:courier new, courier;font-size:small;"><b style=""><span style="line-height:10pt;"><span>(unit -&gt; char option)</span></span></b></span><span style=""><span style="font-family:Calibri;"><span style="font-size:11pt;"> function. The character mappings are: <br /></span></span></span></span></p>
<table class="MsoTableGrid" style="border:currentColor;line-height:normal;list-style-type:disc;border-collapse:collapse;" cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr style="">
<td style="padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;padding-top:0in;border:windowtext 1pt solid;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">Digits 0-9 and decimal (.)</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">Number input</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">+ - * /</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">Basic Arithmetic (+ - &times; &divide;)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">~</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">CHS (change sign)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">SPACE or RETURN</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">ENTER</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">x</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">EEX (enter exponent)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">,</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">CLX (clear X register)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">p</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">&pi;</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">^</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">x<sup>y</sup> (x to y power)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">g</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">LOG (log<sub>10</sub>)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">l</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">LN (log<sub>e</sub>)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">e</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">e<sup>x</sup> (e to x power)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">!</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">CLR (clear)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">q</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">&radic;x (sqrt x)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">a</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">ARC</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">s</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">SIN</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">c</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">COS</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">t</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">TAN</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">f</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style="font-family:Calibri;"><span style="color:#000000;"><sup><span style=""><span style="font-size:11pt;">1</span></span></sup><span style=""><span style="font-size:11pt;">/<sub>x</sub> (reciprocal &ndash; &ldquo;flip&rdquo;)</span></span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">w</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">x&harr;y (swap)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">r</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">R&darr; (roll down)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;"><span style="font-size:11pt;">&gt;</span><span style="font-size:11pt;">&nbsp;</span></span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">STO (store)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;"><span style="font-size:11pt;">&lt;</span><span style="font-size:11pt;">&nbsp;</span></span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">RCL (recall)</span></span></span></p>
</td>
</tr>
<tr style="">
<td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="163">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">`</span></span></span></p>
</td>
<td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0in;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0in;" valign="top" width="162">
<p class="MsoNormal" style="line-height:normal;margin:0in 0in 0pt;"><span style=""><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;">Quit</span></span></span></p>
</td>
</tr>
</tbody>
</table>
<h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"><span style="font-family:Cambria;"><span style="color:#365f91;font-size:14pt;"><span style="font-weight:bold;">The &ldquo;UI&rdquo;</span></span></span></h1>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="color:#000000;"><span style="font-family:Calibri;"><span style="font-size:11pt;"> <br />The calculator function above takes a ROM image and the pair of I/O functions. Again, input is a </span></span><span style="font-family:courier new, courier;font-size:small;"><b style=""><span style="line-height:10pt;"><span>(unit -&gt; char option) </span></span></b></span><span style="font-family:Calibri;"><span style="font-size:11pt;">called repeatedly and output is a </span></span><span style="font-family:courier new, courier;font-size:small;"><b style=""><span style="line-height:10pt;"><span>(string -&gt; unit)</span></span></b></span><span style="font-family:Calibri;"><span style="line-height:10pt;"> </span><span style="font-size:11pt;">which is passed the display (driven by the A and B registers) formatted exactly as you&rsquo;d see it on the real device.</span></span></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />We can cobble together a quick console UI like so:</span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"><span style="font-family:Consolas;"><span style="color:#000000;font-size:9.5pt;"><strong> <br /><span style="font-family:courier new, courier;font-size:small;">calculator</span></strong></span></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp;</span>(</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> () </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> Console.KeyAvailable </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> k = Console.ReadKey </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">true</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">if</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> k.Key = ConsoleKey.Enter </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> Some </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">' '</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">elif</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> k.Key = ConsoleKey.Escape </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">then</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> Some </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">'`'</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> Some (Char.ToLower k.KeyChar)</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;</span><span style="">&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">else</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> None)</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;font-size:small;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(printf </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"bbbbbbbbbbbbbbb%s"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;">)</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="line-height:11pt;font-family:courier new, courier;font-size:small;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;"><strong><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rom |&gt; ignore</strong></span></span></span></p>
<h1 style="line-height:16pt;list-style-type:disc;margin:24pt 0in 0pt;clear:none;"><span style="font-family:Cambria;"><span style="color:#365f91;font-size:14pt;"><span style="font-weight:bold;">Tests</span></span></span></h1>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> <br />Another reason for passing in the I/O dependencies is to allow simple testing:</span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:Consolas;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;background-position:0% 0%;"><span style="color:#0000ff;"><span style="font-size:9.5pt;"> <br /><span style="font-family:courier new, courier;">let</span></span></span></span><span style="font-family:courier new, courier;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:9.5pt;"> test keys expected =</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;"><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:9.5pt;"> keySequence = ref (List.ofSeq keys)</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;"><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:9.5pt;"> testInput () =</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;"><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">match</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> !keySequence </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;font-size:9.5pt;">with</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style=""><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size:9.5pt;">| h :: t </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:9.5pt;"> keySequence := t; Some h</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style=""><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size:9.5pt;">| [] </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> Some </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;font-size:9.5pt;">'`'</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;"><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">let</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> res = calculator testInput (</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">fun</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> _ </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">-&gt;</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:9.5pt;"> ()) rom</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;"><span style="font-size:9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#0000ff;">assert</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;font-size:9.5pt;"> (res = expected)</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span><span style="color:#000000;font-size:9.5pt;"><strong>&nbsp;</strong></span></span></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"~1.2345678909x~35"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"-1.234567890-35"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// entry</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"2 3+"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 5.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// add</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"3 2-"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 1.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// subtract</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"3 2*"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 6.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// multiply</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"3 2/"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 1.5<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// divide</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"4f"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" .25<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// reciprocal</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"25q"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 5.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// square root</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pl"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 1.144729886<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// ln</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pg"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" .4971498728<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// log</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pe"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 23.14069264<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// exp</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"ps"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" .054803665<span style="">&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// sin</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pc"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" .9984971498<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// cos</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pt"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" .0548861507<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// tan</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pgas"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 29.81161556<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// sin-1</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pgac"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 60.18838444<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// cos-1</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"pat"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 72.34321286<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// tan-1</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"1 2 3 4 Swrrr"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 2.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// stack</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"123&gt;456 ,&lt;"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 123.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// memory</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"><span style="font-family:courier new, courier;"><strong><span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"9sctatacas"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 9.002983113<span style="">&nbsp;&nbsp; </span>"</span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// "Calculator Forensics" result</span></span></span><span style="background-image:none;background-attachment:scroll;background-repeat:repeat;"></span></strong></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="font-family:courier new, courier;"><strong><span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"><span style="font-size:9.5pt;">test </span></span></span><span style="font-size:9.5pt;"><span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">"9 2^"</span></span><span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style=""><span style="color:#000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#800000;">" 512.<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>"</span></span><span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#000000;"> </span></span></span><span style="line-height:11pt;background-image:none;background-attachment:scroll;background-repeat:repeat;"><span style="color:#008000;font-size:9.5pt;">// power</span></span></strong></span></p>
<p class="MsoNormal" style="line-height:13pt;list-style-type:disc;margin:0in 0in 10pt;"><span style="color:#000000;font-family:Calibri;"><span style="font-size:11pt;"> <br />I keep this little guy handy now in my console window. I dropped it, along with the F# tools from </span></span><span style="font-size:11pt;"><a rel="nofollow" style="cursor:auto;" target="_blank" href="http://blogs.msdn.com/b/ashleyf/archive/tags/hpcalcs/"><span style="color:#0000ff;font-family:Calibri;"><span style="text-decoration:underline;">previous HP-35 posts</span></span></a><span style="color:#000000;font-family:Calibri;">, in </span><a rel="nofollow" style="cursor:auto;" target="_blank" href="https://github.com/AshleyF/Sandbox/tree/master/HP35/FSharp"><span style="color:#0000ff;font-family:Calibri;"><span style="text-decoration:underline;">my github</span></span></a></span><span style="font-family:Calibri;"><span style="color:#000000;font-size:11pt;"> as well. Have fun with it if you like!</span></span></p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10261061" width="1" height="1">
<p><a href="http://feedads.g.doubleclick.net/~a/NyDA0QdvGoF6WtJ3zsRyDbB5IxM/0/da"><img src="http://feedads.g.doubleclick.net/~a/NyDA0QdvGoF6WtJ3zsRyDbB5IxM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NyDA0QdvGoF6WtJ3zsRyDbB5IxM/1/da"><img src="http://feedads.g.doubleclick.net/~a/NyDA0QdvGoF6WtJ3zsRyDbB5IxM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=mulKKuvOmis:fIkIm6Jlsxw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=mulKKuvOmis:fIkIm6Jlsxw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=mulKKuvOmis:fIkIm6Jlsxw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=mulKKuvOmis:fIkIm6Jlsxw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=mulKKuvOmis:fIkIm6Jlsxw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=mulKKuvOmis:fIkIm6Jlsxw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=mulKKuvOmis:fIkIm6Jlsxw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/mulKKuvOmis" height="1" width="1"/>]]></content:encoded>
      </item>
      <item>
         <title>F# vs. Scala, My Take at Year Two</title>
         <link>http://techneilogy.blogspot.com/2012/01/f-vs-scala-my-take-at-year-two.html</link>
         <description>I spent a lot of time over the last couple of years learning F#.  Over the last six months, I’ve spent most of my time learning and working in Scala.  During part of both those times, I was working on the same set of code, ported to both languages.  So, though this topic has been covered before, I thought I’d add my few observations from that experience to the great F# vs. Scala debate.&lt;br /&gt;&lt;br /&gt;1) From the standpoint of most programmers, the choice of F# vs. Scala is probably determined by a single external factor: whether one is targeting the .NET ecosystem or the Java ecosystem.  So the real-world debate is less likely to be F# vs. Scala than it is to be F# vs. C# or Scala vs. Java.  &lt;br /&gt;&lt;br /&gt;2) If you know F#, you already know all the really hard stuff you need to know about Scala, and vice versa.  Now I’m not saying there’s 100% overlap between the two languages; each has features and quirks that the other lacks.  But if you’ve reasonably mastered either, you’ve already gotten into the functional/mixed paradigm mindset.  You’ve scaled the cliffs of type inference, case classes, pattern matching, first-class functions, currying, continuations, monads, etc.  To move from F# to Scala or vice versa, you may have to learn moderately different ways to express those ideas, but you don’t have to make the climb all over.&lt;br /&gt;&lt;br /&gt;Now the more technical stuff:&lt;br /&gt;&lt;br /&gt;3) F# syntax is austere and a clean break with the curly brace world, whereas Scala retains much of the curly brace look and feel (while significantly cleaning it up).  This was a deliberate decision on the part of the designers of Scala to ease the transition from Java.  The result depends on your viewpoint: F# code is a more succinct if you’re used to reading it, but Scala is a little friendlier for newcomers.&lt;br /&gt;&lt;br /&gt;4) Both languages are multi-paradigm, but F# favors functional programming whereas Scala favors object-oriented programming.  This is not intended as a comment on the capabilities of the two languages, but rather on the “feel.”  Both are clearly multi-paradigm, it’s just that on an FP to OOP scale of 0 – 9, F# feels more like a 4, and Scala feels more like a 6.&lt;br /&gt;&lt;br /&gt;5) Scala programming rests on a foundation of traits, mixins, and the explicit management of types.  Programmers making either the transition Java -&amp;gt; Scala, or C# -&amp;gt; F# -&amp;gt; Scala, will need to spend time mastering these concepts in order to take full advantage of Scala’s capabilities.  (F# programmers from more academic backgrounds will already be more familiar with these things.)&lt;br /&gt;&lt;br /&gt;6) F#’s higher-order libraries feel a little more pragmatic than do Scala’s.  It’s not that you can do something in F# that you can’t do in Scala, it’s just that I’m often able to find a more precise higher-ordered function quicker in the F# documentation than in the Scala documentation.  (To be fair to Scala, the libraries are evolving, and tend to get cleaner in each version.)&lt;br /&gt;&lt;br /&gt;7) If you’re a .NET programmer without much open-source experience, getting started using Scala is likely to be both terrifying and exhilarating.  What I mean is: if you do .NET programming, you have Visual Studio, and if you have Visual Studio, you have F#, and the F# you have just works – there, out-of-the box, batteries included.  To do Scala, on the other hand, you’re going to have to put together a toolkit for yourself, sometimes pulling resources from various open-source concerns.  But there are a couple of pieces of good news to temper this:  first, Scala is much easier in this regard than much open-source software I’ve encountered; second, the inventors of Scala have started a concern called Typesafe to help centralize these resources (see sidebar links under Scala).&lt;br /&gt;&lt;br /&gt;8) The community experience is excellent in both cases.  Both the F# and the Scala communities are filled with excellent programmers who are passionate about the discipline.  The users and committers of the two languages are their greatest assets.&lt;br /&gt;&lt;br /&gt;I’ll end with two metaphors, the first about F# and Scala themselves, and the second about the two communities:&lt;br /&gt;&lt;br /&gt;F# and Scala remind me of the cases of convergent evolution in the biological world.  They have evolved in different ecosystems, but similar selection pressure has resulted in similar outcomes.  And some of those pressures are among the most important in all of computing: correctness, concurrency, distributed computing, and maintainability.&lt;br /&gt;&lt;br /&gt;And lastly, the F# and Scala communities are less like two rival groups of barbarians storming the same castle than they are like one group of barbarians temporarily divided so they can storm two different castles.  (And storm them for their own good, lol.)&lt;br /&gt;&lt;br /&gt;-Neil&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8980149464912824496-7806974973466370393?l=techneilogy.blogspot.com' alt=''/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/B9b98_McHBDoyOA-cpnylM7tLB0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B9b98_McHBDoyOA-cpnylM7tLB0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/B9b98_McHBDoyOA-cpnylM7tLB0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B9b98_McHBDoyOA-cpnylM7tLB0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=5Oym5IFQOCo:OWNe2WyKJHk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=5Oym5IFQOCo:OWNe2WyKJHk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=5Oym5IFQOCo:OWNe2WyKJHk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=5Oym5IFQOCo:OWNe2WyKJHk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=5Oym5IFQOCo:OWNe2WyKJHk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=5Oym5IFQOCo:OWNe2WyKJHk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=5Oym5IFQOCo:OWNe2WyKJHk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/5Oym5IFQOCo" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (TechNeilogy)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8980149464912824496.post-7806974973466370393</guid>
         <pubDate>Thu, 26 Jan 2012 16:35:00 +0000</pubDate>
      </item>
      <item>
         <title>Is Programming Less Exciting Today?</title>
         <link>http://blogs.tedneward.com/2012/01/25/Is+Programming+Less+Exciting+Today.aspx</link>
         <description>&lt;p&gt;
As discriminatory as this is going to sound, this one is for the old-timers. If you
started programming after the turn of the milennium, I don’t know if you’re going
to be able to follow the trend of this post—not out of any serious deficiency on your
part, hardly that. But I think this is something only the old-timers are going to
identify with. (And thus, do I alienate probably 80% of my readership, but so be it.)
&lt;/p&gt;
&lt;p&gt;
Is it me, or is programming just less interesting today than it was two decades ago?
&lt;/p&gt;
&lt;p&gt;
By all means, shake your smartphones and other mobile devices at me and say, “Dude,
how can you say that?”, but in many ways programming for Android and iOS reminds me
of programming for Windows and Mac OS two decades ago. HTML 5 and JavaScript remind
me of ten years ago, the first time HTML and JavaScript came around. The discussions
around programming languages remind me of the discussions around C++. The discussions
around NoSQL remind me of the arguments both for and against relational databases.
It all feels like we’ve been here before, with only the names having changed.
&lt;/p&gt;
&lt;p&gt;
Don’t get me wrong—if any of you comment on the differences between HTML 5 now and
HTML 3.2 then, or the degree of the various browser companies agreeing to the standard
today against the “browser wars” of a decade ago, I’ll agree with you. This isn’t
so much of a rational and logical discussion as it is an emotive and intuitive one.
It just &lt;em&gt;feels&lt;/em&gt; similar.
&lt;/p&gt;
&lt;p&gt;
To be honest, I get this sense that across the entire industry right now, there’s
a sort of malaise, a general sort of “Bah, nothing really all that new is going on
anymore”. NoSQL is re-introducing storage ideas that had been around before but were
discarded (perhaps injudiciously and too quickly) in favor of the relational model.
Functional languages have obviously been in place since the 50’s (in Lisp). And so
on.
&lt;/p&gt;
&lt;p&gt;
More importantly, look at the Java community: what truly innovative ideas have emerged
here in the last five years? Every new open-source project or commercial endeavor
either seems to be a refinement of an idea before it (how many different times are
we going to create a new Web framework, guys?) or an attempt to leverage an idea coming
from somewhere else (be it from .NET or from Ruby or from JavaScript or….). With the
upcoming .NET 4.5 release and Windows 8, Microsoft is holding out very little “new
and exciting” bits for the community to invest emotionally in: we hear about “async”
in C# 5 (something that F# has had already, thank you), and of course there is WinRT
(another platform or virtual machine… sort of), and… well, honestly, didn’t we just
do this a decade ago? Where is the WCFs, the WPFs, the Silverlights, the things that
would get us fired up? Hell, even a new approach to data access might stir some excitement.
Node.js feels like an attempt to reinvent the app server, but if you look back far
enough you see that the app server itself was reinvented once (in the Java world)
in Spring and other lightweight frameworks, and before that by people who actually
thought to write their own web servers in straight Java. (And, for the record, the
whole event-driven I/O thing is something that’s been done in both Java and .NET a
long time before now.)
&lt;/p&gt;
&lt;p&gt;
And as much as this is going to probably just throw fat on the fire, all the excitement
around JavaScript as a language reminds me of the excitement about Ruby as a language.
Does nobody remember that Sun did this once already, with Phobos? Or that Netscape
did this with LiveScript? JavaScript on the server end is not new, folks. It’s just
new to the people who’d never seen it before.
&lt;/p&gt;
&lt;p&gt;
In years past, there has always seemed to be something deeper, something more exciting
and more innovative that drives the industry in strange ways. Artificial Intelligence
was one such thing: the search to try and bring computers to a state of human-like
sentience drove a lot of interesting ideas and concepts forward, but over the last
decade or two, AI seems to have lost almost all of its luster and momentum. User interfaces—specifically,
GUIs—were another force for a while, until GUIs got to the point where they were so
common and so deeply rooted in their chosen pasts (the single-button of the Mac, the
menubar-per-window of Windows, etc) that they left themselves so little room for maneuver.
At least this is one area where Microsoft is (maybe) putting the fatted sacred cow
to the butcher’s knife, with their Metro UI moves in Windows 8… but only up to a point.
&lt;/p&gt;
&lt;p&gt;
Maybe I’m just old and tired and should hang up my keyboard and go take up farming,
then go retire to my front porch’s rocking chair and practice my &lt;em&gt;Hey you kids!
Getoffamylawn!&lt;/em&gt; or something. But before you dismiss me entirely, do me a favor
and tell me: what gets you excited these days? If you’ve been programming for twenty
years, what about the industry today gets your blood moving and your mind sharpened?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=20604d47-a520-4a9f-8fd2-469caa49eb40"/&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a rel="nofollow" target="_blank" href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XSkgdtwbO1tEHPi3Iu9sWO27N5U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XSkgdtwbO1tEHPi3Iu9sWO27N5U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XSkgdtwbO1tEHPi3Iu9sWO27N5U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XSkgdtwbO1tEHPi3Iu9sWO27N5U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=c5JDYG5jJlo:zP5GtoK4M5A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=c5JDYG5jJlo:zP5GtoK4M5A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=c5JDYG5jJlo:zP5GtoK4M5A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=c5JDYG5jJlo:zP5GtoK4M5A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=c5JDYG5jJlo:zP5GtoK4M5A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=c5JDYG5jJlo:zP5GtoK4M5A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=c5JDYG5jJlo:zP5GtoK4M5A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/c5JDYG5jJlo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,20604d47-a520-4a9f-8fd2-469caa49eb40.aspx</guid>
         <pubDate>Wed, 25 Jan 2012 23:24:43 +0000</pubDate>
      </item>
      <item>
         <title>First F# Seattle Meetup This Saturday, Redmond</title>
         <link>http://blogs.msdn.com/b/dsyme/archive/2012/01/25/first-f-seattle-meetup-this-saturday-redmond.aspx</link>
         <description>&lt;p&gt;The first F# Seattle Meetup has been announced! It will be held this Saturday, on the Microsoft campus in Redmond.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/FSharpSeattle/events/49365112/"&gt;http://www.meetup.com/FSharpSeattle/events/49365112/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sign up&amp;nbsp;at &lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/FSharpSeattle/events/"&gt;http://www.meetup.com/FSharpSeattle/events/&lt;/a&gt; for full details of this and future events.&lt;/p&gt;
&lt;p&gt;Don&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;In this first meeting, we will introduce F# and the new features in F# 3.0 and how to use F# in the daily programming tasks.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;F# Introduction and 3.0 New Features&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;Saturday, January 28, 2012, 2:30 PM&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft building &lt;span style="font-size:x-large;"&gt;32&lt;/span&gt;&lt;/span&gt; - Room 1027&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;3620 163rd Avenue NE, Redmond, WA 98052&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img style="margin:5px;float:left;max-height:700px;max-width:700px;" src="http://photos3.meetupstatic.com/photos/event/b/3/7/6/event_88365942.jpeg"/&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10260456" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K_WECiGi5nWsRlQ-rdDiMKiH9SA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K_WECiGi5nWsRlQ-rdDiMKiH9SA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K_WECiGi5nWsRlQ-rdDiMKiH9SA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K_WECiGi5nWsRlQ-rdDiMKiH9SA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=riBgTU70hes:Myaje8g_D0E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=riBgTU70hes:Myaje8g_D0E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=riBgTU70hes:Myaje8g_D0E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=riBgTU70hes:Myaje8g_D0E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=riBgTU70hes:Myaje8g_D0E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=riBgTU70hes:Myaje8g_D0E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=riBgTU70hes:Myaje8g_D0E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/riBgTU70hes" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10260456</guid>
         <pubDate>Wed, 25 Jan 2012 09:42:00 +0000</pubDate>
      </item>
      <item>
         <title>The Chinese remainder theorem</title>
         <link>http://gettingsharper.de/2012/01/24/the-chinese-remainder-theorem/</link>
         <description>I hope to do a series covering some theory and implementation of the RSA algorithm in F# in the near future – and one of it’s main ingredients (for simplifying the hard calculations) is the Chinese remainder theorem – so &amp;#8230; &lt;a rel="nofollow" target="_blank" href="http://gettingsharper.de/2012/01/24/the-chinese-remainder-theorem/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n8nK4ZZoflrBZAiEDJiT-NC_hW4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8nK4ZZoflrBZAiEDJiT-NC_hW4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n8nK4ZZoflrBZAiEDJiT-NC_hW4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8nK4ZZoflrBZAiEDJiT-NC_hW4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=43FA20avmJQ:4d5vsgyV3RQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=43FA20avmJQ:4d5vsgyV3RQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=43FA20avmJQ:4d5vsgyV3RQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=43FA20avmJQ:4d5vsgyV3RQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=43FA20avmJQ:4d5vsgyV3RQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=43FA20avmJQ:4d5vsgyV3RQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=43FA20avmJQ:4d5vsgyV3RQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/43FA20avmJQ" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://gettingsharper.de/?p=362</guid>
         <pubDate>Tue, 24 Jan 2012 21:13:39 +0000</pubDate>
      </item>
      <item>
         <title>London F# Meetup Group this Thursday: Pacman Kata</title>
         <link>http://blogs.msdn.com/b/dsyme/archive/2012/01/24/london-f-meetup-group-this-thursday-pacman-kata.aspx</link>
         <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This Thursday, January 26, the &lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/FSharpLondon/"&gt;F#unctional Londoners&lt;/a&gt; are &lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/FSharpLondon/events/45961772/"&gt;holding an event to help you improve your F# coding skills&lt;/a&gt;! (This event may or may not be in celebration of &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Australia_Day"&gt;Australia Day&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Republic_Day_(India)"&gt;India's Republic Day&lt;/a&gt; - you decide!)&lt;/p&gt;
&lt;p&gt;This event will be a &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Kata_(programming)"&gt;coding kata&lt;/a&gt;.&amp;nbsp;&amp;nbsp; If you don't know what this is, here's the description from Wikipedia:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;&lt;b&gt;Code Kata&lt;/b&gt; is a term coined by &lt;a rel="nofollow" title="Dave Thomas (programmer)" target="_blank" href="http://blogs.msdn.com/wiki/Dave_Thomas_(programmer)"&gt;Dave Thomas&lt;/a&gt;, co-author of the book &lt;a rel="nofollow" title="The Pragmatic Programmer" target="_blank" href="http://blogs.msdn.com/wiki/The_Pragmatic_Programmer"&gt;The Pragmatic Programmer&lt;/a&gt;, in a bow to the Japanese concept of &lt;a rel="nofollow" class="mw-redirect" title="Kata (martial arts)" target="_blank" href="http://blogs.msdn.com/wiki/Kata_(martial_arts)"&gt;kata&lt;/a&gt; in the martial arts. A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here's the story for the event:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;Pacman finds himself in a grid filled with monsters. Will he be able to eat all the dots on the board before the monsters eat him?&lt;/em&gt;&lt;/p&gt;
&lt;ul style="padding-left:60px;"&gt;
&lt;li style="padding-left:30px;"&gt;&lt;em&gt;pacman is on a grid filled with dots&lt;/em&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;"&gt;&lt;em&gt;pacman eats dots&lt;/em&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;"&gt;&lt;em&gt;pacman stops on walls&lt;/em&gt;&lt;/li&gt;
&lt;li style="padding-left:30px;"&gt;&lt;em&gt;ghosts follow pacman...&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;The &lt;a rel="nofollow" target="_blank" href="http://skillsmatter.com/user-group/home/london-f-sharp-user-group"&gt;F#unctional Londonders Meetup Group&lt;/a&gt; starts 2012 with a&amp;nbsp;hands-on coding Kata by implementing Pacman. This session is suitable for people new to F# who'd like to learn more and for more experienced F# developers looking to practice their skills. See also: &lt;a rel="nofollow" target="_blank" href="http://codingdojo.org/cgi-bin/wiki.pl?KataPacMan"&gt;http://codingdojo.org/cgi-bin/wiki.pl?KataPacMan&lt;/a&gt;&amp;nbsp;for more info, and be sure to register your attendance here: &lt;a rel="nofollow" target="_blank" href="http://skillsmatter.com/podcast/home/pacman-kata/js-2040"&gt;http://skillsmatter.com/podcast/home/pacman-kata/js-2040&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Don&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10260059" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ebFLmuBsbUNPJeomDFRFt1SAMfU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ebFLmuBsbUNPJeomDFRFt1SAMfU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ebFLmuBsbUNPJeomDFRFt1SAMfU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ebFLmuBsbUNPJeomDFRFt1SAMfU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=pzGn8U32_Zw:N3p-pqlcSFE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=pzGn8U32_Zw:N3p-pqlcSFE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=pzGn8U32_Zw:N3p-pqlcSFE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=pzGn8U32_Zw:N3p-pqlcSFE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=pzGn8U32_Zw:N3p-pqlcSFE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=pzGn8U32_Zw:N3p-pqlcSFE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=pzGn8U32_Zw:N3p-pqlcSFE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/pzGn8U32_Zw" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10260059</guid>
         <pubDate>Tue, 24 Jan 2012 14:44:34 +0000</pubDate>
      </item>
      <item>
         <title>Pong</title>
         <link>http://www.trelford.com/blog/post/Pong.aspx</link>
         <description>&lt;p&gt;It’s a bit of a long story. A chain of events would unfurl that would lead me inextricably to writing a clone of a 70s video game. It started a few weeks ago while exploring early 90s dance tracks on &lt;a rel="nofollow" target="_blank" href="http://www.spotify.com/"&gt;Spotify&lt;/a&gt;, when I happened upon the seminal EP - &lt;a rel="nofollow" target="_blank" href="http://warp.net/records/releases/sweet-exorcist/clonks-coming"&gt;Clonks Coming&lt;/a&gt; by the &lt;a rel="nofollow" target="_blank" href="http://www.last.fm/music/Sweet+Exorcist"&gt;Sweet Exorcist&lt;/a&gt;. Later a lack of content on Spotify would push me towards YouTube and to find a hypnotic collage of &lt;a rel="nofollow" target="_blank" href="http://www.trelford.com/blog/post/Invadurz.aspx"&gt;Space Invaders&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://www.youtube.com/watch?v=K5loeV-_4og"&gt;Beach Balls&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Pong"&gt;Pong&lt;/a&gt; and the &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Test_Card_F"&gt;BBC test card girl&lt;/a&gt;.&lt;/p&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tapping along to the retro beeps on the train to London, a couple of white rectangles started moving up and down with the keyboard and a small white square began floating diagonally, and then the train reached King’s Cross. Much later a copy of &lt;a rel="nofollow" target="_blank" href="http://warp.net/records/releases/sweet-exorcist/retroactivity"&gt;RetroActivity&lt;/a&gt; would arrive in the post and I would return to the rectangles and make the white square bounce. Well, not before I had spent a few hours playing with &lt;a rel="nofollow" target="_blank" href="http://www.rebirthmuseum.com/"&gt;Rebirth&lt;/a&gt;. The code is posted as an &lt;a rel="nofollow" target="_blank" href="http://fssnip.net/aa"&gt;F# Snippet&lt;/a&gt; and fits happily in just under 100 lines. You can play in the browser if you have the Silverlight plug-in installed, just click inside to start the game.&lt;/p&gt;  &lt;p&gt;Player 1 keys 'Q' - up, 'A' - down. Player 2 keys 'P' - up, 'L' – down.&lt;/p&gt;  &lt;div id="silverlightControlHost"&gt;      &lt;a rel="nofollow" style="text-decoration:none;" target="_blank" href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;amp;v=4.0.50826.0"&gt; &lt;img style="border-style:none;" src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"/&gt; &lt;/a&gt; &lt;/div&gt;  &lt;br /&gt;  &lt;p&gt;Today I added a few beeps and a score, and put the project up on &lt;a rel="nofollow" target="_blank" href="https://bitbucket.org/ptrelford/pong"&gt;BitBucket&lt;/a&gt;. I started out trying the new &lt;a rel="nofollow" target="_blank" href="http://10rem.net/blog/2011/04/13/silverlight-5-using-the-soundeffect-class-for-low-latency-sound-and-play-wav-files-in-silverlight"&gt;SoundEffect classs in Silverlight 5&lt;/a&gt; that promises low latency sound but unfortunately it seems a bit &lt;a rel="nofollow" target="_blank" href="https://connect.microsoft.com/VisualStudio/feedback/details/720211/silverlight-5-soundeffect-class-short-sound-effects-300ms-are-not-always-audible#details"&gt;temperamental&lt;/a&gt; and I had to switch to using the old &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement(v=vs.95).aspx"&gt;MediaElement class&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There’s a couple of reusable routines that are specific to gaming, the first is to know what keys are pressed at any instant in time:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;type &lt;/span&gt;Keys (control:Control) =
    &lt;span style="color:blue;"&gt;let mutable &lt;/span&gt;keysDown = Set.empty  
    &lt;span style="color:blue;"&gt;do  &lt;/span&gt;control.KeyDown.Add (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;e &lt;span style="color:blue;"&gt;-&amp;gt; &lt;/span&gt;keysDown &amp;lt;- keysDown.Add e.Key)
    &lt;span style="color:blue;"&gt;do  &lt;/span&gt;control.KeyUp.Add (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;e &lt;span style="color:blue;"&gt;-&amp;gt; &lt;/span&gt;keysDown &amp;lt;- keysDown.Remove e.Key)
    &lt;span style="color:blue;"&gt;member &lt;/span&gt;keys.IsKeyDown key = keysDown.Contains key&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;The second is to synchronize the game updates with Silverlight’s &lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/8751510/i-want-to-force-a-render-but-only-draw-as-fast-as-possible-invalidatevisual"&gt;rendering&lt;/a&gt;:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;let &lt;/span&gt;run rate update =
    &lt;span style="color:blue;"&gt;let &lt;/span&gt;rate = TimeSpan.FromSeconds(rate)
    &lt;span style="color:blue;"&gt;let &lt;/span&gt;lastUpdate = ref DateTime.Now
    &lt;span style="color:blue;"&gt;let &lt;/span&gt;residual = ref (TimeSpan())
    CompositionTarget.Rendering.Subscribe (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;_ &lt;span style="color:blue;"&gt;-&amp;gt; 
        let &lt;/span&gt;now = DateTime.Now
        residual := !residual + (now - !lastUpdate)
        &lt;span style="color:blue;"&gt;while &lt;/span&gt;!residual &amp;gt; rate &lt;span style="color:blue;"&gt;do
            &lt;/span&gt;update(); residual := !residual - rate
        lastUpdate := now
    )&lt;/pre&gt;

&lt;br /&gt;

&lt;p&gt;If you’re interested in playing and making simple games, or even just coding, why not pop down to &lt;a rel="nofollow" target="_blank" href="http://skillsmatter.com/"&gt;Skills Matter&lt;/a&gt; in London this Thursday for a &lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/FSharpLondon/events/45961772/"&gt;PacMan Kata&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://trelford.com/blog/image.axd?picture=wlEmoticon-winkingsmile.png"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PsE4H7rlZZRCFOwVtU5rR4S34Nw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PsE4H7rlZZRCFOwVtU5rR4S34Nw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PsE4H7rlZZRCFOwVtU5rR4S34Nw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PsE4H7rlZZRCFOwVtU5rR4S34Nw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=aUHKu1VGvMk:PabSGOHW5Pc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=aUHKu1VGvMk:PabSGOHW5Pc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=aUHKu1VGvMk:PabSGOHW5Pc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=aUHKu1VGvMk:PabSGOHW5Pc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=aUHKu1VGvMk:PabSGOHW5Pc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=aUHKu1VGvMk:PabSGOHW5Pc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=aUHKu1VGvMk:PabSGOHW5Pc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/aUHKu1VGvMk" height="1" width="1"/&gt;</description>
         <author>phil</author>
         <guid isPermaLink="false">http://www.trelford.com/blog/post.aspx?id=5d412521-a6c0-4ede-9de1-3bf05a972371</guid>
         <pubDate>Sun, 22 Jan 2012 22:59:37 +0000</pubDate>
      </item>
      <item>
         <title>F# 3.0 at TechDays France, Feb 7, Paris!</title>
         <link>http://blogs.msdn.com/b/dsyme/archive/2012/01/22/f-3-0-at-techdays-france-feb-7-paris.aspx</link>
         <description>&lt;p&gt;Just to mention that there will be a talk on F# 3.0 at TechDays France in&amp;nbsp;Paris, on February 7, at 4pm.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;F# 3.0: data, services, Web, cloud, at your fingertips (LAN209)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can find all the details here: &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#SessionID=50dbf05c-e3fd-4129-b5d9-c2b458236728"&gt;http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx#SessionID=50dbf05c-e3fd-4129-b5d9-c2b458236728&lt;/a&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;Modern programming thrives on rich spaces of data, information and services. With F# 3.0 and Visual Studio 11, you now have a tool that massively simplifies information-rich analytical programming. F# 3.0 provides integrated support for F# Information Rich Programming, a new and powerful way of integrating data and services into your programming experience. In this talk, we will describe the new features of F# 3.0, including the first released version of F# Type Providers and F# Queries, with apps to leverage technologies such as SharePoint, Azure Data Market, OData, Entity Framework and SQL Server.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10259411" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Fd2mDy_QWZDumntT4HE_0LA3Izo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fd2mDy_QWZDumntT4HE_0LA3Izo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Fd2mDy_QWZDumntT4HE_0LA3Izo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fd2mDy_QWZDumntT4HE_0LA3Izo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=-Ab-_Sbna_0:wD7lBvtHA-4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=-Ab-_Sbna_0:wD7lBvtHA-4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=-Ab-_Sbna_0:wD7lBvtHA-4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=-Ab-_Sbna_0:wD7lBvtHA-4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=-Ab-_Sbna_0:wD7lBvtHA-4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/planet_fsharp?a=-Ab-_Sbna_0:wD7lBvtHA-4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/planet_fsharp?i=-Ab-_Sbna_0:wD7lBvtHA-4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/planet_fsharp/~4/-Ab-_Sbna_0" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10259411</guid>
         <pubDate>Sun, 22 Jan 2012 17:43:00 +0000</pubDate>
      </item>
   </channel>
</rss><!-- fe1.pipes.ch1.yahoo.com uncompressed/chunked Fri Feb 10 16:07:12 UTC 2012 -->

