<div dir="ltr"><div dir="ltr"><div>Hi Juan,</div><div><br></div>primitive 184 (Object>>pin) was missing. I added that to the VM as a no-op answering true and now it works.<div><br></div><div>There is no HostWindowPlugin, that's why there is an error when resizing the window.</div><div><br></div><div>Spur Cuis is slower than necessary because there is a full GC in VectorEngineDrawer>>pvtSetForm:. So it often collects garbage manually which is slow (you can see that if you open the JS console).</div><div><br></div><div>This link uses a spur image:</div><div><br></div><div>      <a href="https://tinyurl.com/cuis6053spur" target="_blank">https://tinyurl.com/cuis6053spur</a><br></div><div><br></div><div>And btw there's actually a bug in th v3 image: Behavior>>identityHash should be deleted, since in v3 there is no primitive 175.</div><div><br></div><div>Vanessa</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 25, 2023 at 10:32 AM Juan Vuletich via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  
    
  
  <div bgcolor="#ffffff">
    On 10/24/2023 10:34 PM, Vanessa Freudenberg via Cuis-dev wrote:
    <blockquote type="cite">
      <div dir="ltr">
        <div class="gmail_quote">
          <div dir="ltr">Hi all,
            <div><br>
            </div>
            <div>I was trying to run Cuis on SqueakJS for fun. The spur
              images need some prims that SqueakJS doesn't have yet, but
              the v3 image worked. Or almost worked. The Transcript was
              showing tons of errors which made the system unusable:</div>
            <div><br>
            </div>
          </div>
        </div>
        <blockquote style="margin:0pt 0pt 0pt 40px;border:medium none;padding:0px">
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">HybridCanvas(MorphicCanvas)>>drawWorld:repair:</p>
              </div>
            </div>
          </div>
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">BitBIt
                  >> copyBits failed. Will retry with parameters
                  rounded. Requested parameters are:</p>
              </div>
            </div>
          </div>
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">#('dest,
                  source, halftone, rule:' Form(1512x807×32) nil a
                  Bitmap:1 of length 1 0)</p>
              </div>
            </div>
          </div>
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">#('dest,
                  extent, source, clipOrigin, clipExtent' 523@46 158@280
                  0@0 0@0 681@326)</p>
              </div>
            </div>
          </div>
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">#('colorMap'
                  a Bitmap:4096 of length 4096)</p>
              </div>
            </div>
          </div>
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">#copyBitsAgain
                  failed. Requested BitBIt operation not performed. Call
                  stack follows:</p>
              </div>
            </div>
          </div>
          <div class="gmail_quote">
            <div>
              <div>
                <p style="margin:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica">BitBitCanvasEngine(BitBIt)>>copyBitsAgain</p>
              </div>
            </div>
          </div>
        </blockquote>
        <div class="gmail_quote">
          <div dir="ltr">
            <div><br>
            </div>
            <div>Turned out the BitBlt failed because some bitmaps were
              1 word longer than width*height would require, and my (10
              year old) version of BitBlt complained about that, it
              expected an exact size match.</div>
            <div><br>
            </div>
            <div>I implemented a workaround in my VM which warns about
              the mismatch but doesn't fail the BitBlt primitive. It
              works now, try it here 🎉</div>
            <div><br>
            </div>
            <div>    <a href="https://tinyurl.com/cuis6053" target="_blank">https://tinyurl.com/cuis6053</a><br>
            </div>
            <div><br>
            </div>
            <div>Cuis on a phone 😍 although not exactly usable there
              (you could set highdpi to false in the URL but then the UI
              gets huge).</div>
            <div><br>
            </div>
            <div>
              <div>But my question is: Was the image wrong or the VM?
                I've never seen this problem in Squeak images, old or
                new.</div>
              <div><br>
              </div>
              <div>Vanessa</div>
            </div>
            <div><br>
            </div>
            <div><img src="cid:18b6f134d93c204bfcc1" alt="IMG_0FC5A40A0908-1.jpeg" height="542" width="250"><br>
            </div>
            <div><br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Hi Vanessa,<br>
    <br>
    This is very nice, thank you!<br>
    <br>
    WRT the (self wordsPerLine * height) + 1, it is there because of a
    bug in VectorEnginePlugin, that could access an invalid position
    beyond the end. See senders of #VEPapi5. But as SqueakJS doesn't
    include the VectorEnginePlugin, that hack is not needed. Just pushed
    an update for that. In order to use it, you'd need to pull repo,
    start Cuis with an OpenSmalltalk VM, do World / Changes / Install
    new updates, then save the image.<br>
    <br>
    Still, I wonder why the Spur image flavors won't run on SqueakJS. Is
    Cuis using some primitive that Squeak doesn't use? (I mean, Spur
    Squeak does run on SqueakJS, right?) If so, do you plan to include
    them? If not, please tell which they are, I can borrow workaround
    code for them from older Cuis, or from Squeak, so Spur Cuis will run
    on SqueakJS.<br>
    <br>
    Main reason is that in the future I'd like to have a single,
    immediate, Unicode ready Character class. Right now Character is the
    old byte style from Smalltalk-80, and UnicodeCodePoint is immediate
    on Spur but not on V3. I'd like to clean all that.<br>
    <br>
    Thanks!<br>
    <pre cols="72">-- 
Juan Vuletich
<a href="http://cuis.st" target="_blank">cuis.st</a>
<a href="http://github.com/jvuletich" target="_blank">github.com/jvuletich</a>
<a href="http://researchgate.net/profile/Juan-Vuletich" target="_blank">researchgate.net/profile/Juan-Vuletich</a>
<a href="http://independent.academia.edu/JuanVuletich" target="_blank">independent.academia.edu/JuanVuletich</a>
<a href="http://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank">patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="http://linkedin.com/in/juan-vuletich-75611b3" target="_blank">linkedin.com/in/juan-vuletich-75611b3</a>
<a href="http://twitter.com/JuanVuletich" target="_blank">twitter.com/JuanVuletich</a></pre>
  </div>

-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div>
</div>