<div><div><div>On Sat, Jun 15, 2024 at 07:02 Mark Volkmann via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div></div><div><div><div class="gmail_quote"></div></div></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div dir="ltr"><br></div><div>Thanks Ken! Where can I find a list of all the primitives supported by Cuis Smalltalk? In particular, I want to learn what 233 does which is used in the instance method fullScreenMode: of the DisplayScreen class.</div></div></blockquote><div dir="auto"><br></div></div></div><div><div><div dir="auto">It’s not so much what primitives Cuis supports, but rather what the VM it is running on provides. Some VMs implement optional primitives for speed up, others don’t. Some primitives are identical across platforms, others are not. </div><div dir="auto"><br></div><div dir="auto"><div dir="auto">To learn what exactly primitive 233 does, you have various ways. The primary way is by looking at a VMMaker image:</div><div dir="auto"><br></div><div dir="auto"><div dir="auto"><a href="http://source.squeak.org/VMMaker.html" target="_blank">https://source.squeak.org/VMMaker.html</a></div><br></div><div dir="auto">This is the repo that has all the Smalltalk source code (the VM is mostly written in a subset of Smalltalk called Slang, transpiled to C, then compiled and linked with platform-specific code to create the VM executable). </div><div dir="auto"><br></div><div dir="auto">If you click the “Latest” tab and then sort by timestamp you can see which packages are under active development. </div><div dir="auto"><br></div><div dir="auto">The default Cuis VM is in the “oscog” branch of the VMMaker package. </div><div dir="auto"><br></div><div dir="auto">There is a method Interpreter class>><span style="font-family:monospace;text-align:justify">initializePrimitiveTable</span></div><div dir="auto">where you find what method index 233 maps to. </div><div dir="auto"><br></div><div dir="auto">Following this stuff is interesting but not trivial, especially since it calls out to platform-specific code which is in a different repository:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://github.com/OpenSmalltalk/opensmalltalk-vm" target="_blank">https://github.com/OpenSmalltalk/opensmalltalk-vm</a></div></div><div dir="auto"><br></div><div dir="auto">Following the instructions in there to build your own VMMaker image gets you a thing to fully explore VM stuff. </div><div dir="auto"><br></div><div dir="auto"><span style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)">The code and behavior can be very different across platforms. John McIntosh wrote some amazing, if incomplete documentation, see </span><br></div><div dir="auto"><div><div dir="auto" style="font-family:-apple-system,helveticaneue;font-size:16px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)"><a href="https://isqueak.org/ioSetDisplayMode" style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(66,133,244);color:rgb(66,133,244)" target="_blank"></a><div dir="auto" style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(0,0,0);color:rgb(0,0,0)"><a href="https://isqueak.org/PlatformVMAPI" style="font-family:-apple-system,helveticaneue;background-color:rgba(0,0,0,0);border-color:rgb(66,133,244);color:rgb(66,133,244)" target="_blank">https://isqueak.org/PlatformVMAPI</a> </div></div><br></div>There are other virtual machines that are a lot simpler to understand. Not to toot my own horn too much, but in SqueakJS it’s pretty trivial to find out what exactly primitive 233 does:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://github.com/search?q=repo%3Acodefrau%2FSqueakJS%20233&type=code" target="_blank">https://github.com/search?q=repo%3Acodefrau%2FSqueakJS%20233&type=code</a></div><div dir="auto"><br></div><div dir="auto">… but again, this is necessarily different from the native Mac or Win or X11 implementations. </div><div dir="auto"><br></div><div dir="auto">HTH,</div><div dir="auto">Nessa</div><div dir="auto"><br></div></div><div dir="auto"><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div dir="auto"></div></div></blockquote>
</div>
</div>