<div dir="auto">Dave,<div dir="auto"><br></div><div dir="auto">I've been trying to get the latest sources but when I try:</div><div dir="auto">svn co <a href="http://squeakvm.org/svn/squeak/trunk/platforms">http://squeakvm.org/svn/squeak/trunk/platforms</a></div><div dir="auto"><br></div><div dir="auto">I get:</div><div dir="auto">svn: E020014: Can't find a temporary directory: Internal error</div><div dir="auto"><br></div><div dir="auto">I've checked everything I can think of on my end (temp exists, has permissions, and is not full) and a couple of search results indicate that sometimes this might be due to a server error so just thought I'd ask if you are able to pull a copy?</div><div dir="auto"><br></div><div dir="auto">Thanks,</div><div dir="auto">Phil</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Dec 18, 2017 8:46 PM, "David T. Lewis" <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, Dec 18, 2017 at 04:50:29PM -0500, Phil B wrote:<br>
> Dave,<br>
><br>
> I have been trying using a built classic VM (which works fine with 3.x<br>
> images but hangs on startup on every 1.x or 2.x image I've tried).  I last<br>
> built it from sources a year ago or more so I'll try downloading the latest<br>
> sources and try again.<br>
<br>
Yes please try it again. The enhancements to support older images with the<br>
classic VM were done in January 2017.<br>
<br>
><br>
> It would be great to have this as an option for old images as the shipped<br>
> VMs from that time period seem have an annoying transparent window issue on<br>
> recent Linux distros so unless I put a black window behind the Squeak<br>
> window, it's very difficult to see what's going on (screenshot attached to<br>
> illustrate.).  Should anyone recalling the specifics of the VM builds back<br>
> then be reading: is this because true color depths weren't common back then<br>
> or is something else going on?<br>
><br>
<br>
The change history is in <a href="http://source.squeak.org/VMMaker" rel="noreferrer" target="_blank">http://source.squeak.org/<wbr>VMMaker</a> in package 'VMMaker',<br>
so you can browse the history with a Monticello browser.<br>
<br>
The recent updates that pertain to older image support are:<br>
<br>
===<br>
<br>
Name: VMMaker-dtl.392<br>
Author: dtl<br>
Time: 12 January 2017, 8:34:22.25 pm<br>
UUID: 7c31d31d-9de0-4f45-89e2-<wbr>6caa1886f12f<br>
Ancestors: VMMaker-dtl.391<br>
<br>
VMMaker 4.16.3<br>
<br>
Support very early images in which method context copy fails due to stack<br>
pointer not yet adjusted to position. For these images, disable stack limit<br>
bounds check. Based on SqueakJS implementation as described below.<br>
<br>
From: Bert Freudenberg <<a href="mailto:bert@freudenbergs.de">bert@freudenbergs.de</a>><br>
Date: Wed, 11 Jan 2017 17:10:24 +0100<br>
To: The general-purpose Squeak developers list <<a href="mailto:squeak-dev@lists.squeakfoundation.org">squeak-dev@lists.<wbr>squeakfoundation.org</a>><br>
Subject: Re: [squeak-dev] Backward image and VM compatibility<br>
<br>
Some early images fill the context stack before advancing its stack pointer.<br>
I have a flag to allow that, it's pretty certainly used in primitive 61.<br>
Normally the VM does not allow access beyond the SP because there is garbage<br>
there (stack pops do not nil out the context slot):<br>
<br>
<a href="https://github.com/bertfreudenberg/SqueakJS/search?q=allowAccessBeyondSP" rel="noreferrer" target="_blank">https://github.com/<wbr>bertfreudenberg/SqueakJS/<wbr>search?q=allowAccessBeyondSP</a><br>
<br>
But since the regular VM does not allow it, no image (except the really old<br>
ones) ever does it, so I just leave the flag enabled whenever "oldPrims" is<br>
in effect ;) Would be better if we could come up with a better way to identify<br>
these images.<br>
<br>
===<br>
<br>
Name: VMMaker-dtl.391<br>
Author: dtl<br>
Time: 5 January 2017, 7:35:14.1 pm<br>
UUID: eb3fd060-b323-4a7d-9b06-<wbr>b4b23f599fc8<br>
Ancestors: VMMaker-dtl.390<br>
<br>
VMMaker 4.16.2<br>
<br>
Old image support: Rescue five sound primitive assignments for updatePrimitiveTable<br>
for primitives that should be loaded from SouondGenerationPlugin, not from SoundPlugin.<br>
<br>
The following ancient primitives are still not loadable into the primitiive<br>
table for old image support:<br>
<br>
  #<wbr>primWaveTableSoundmixSampleCou<wbr>ntintostartingAtpan<br>
  #<wbr>primFMSoundmixSampleCountintos<wbr>tartingAtpan<br>
  #<wbr>primPluckedSoundmixSampleCount<wbr>intostartingAtpan<br>
  #<wbr>primSampledSoundmixSampleCount<wbr>intostartingAtpan<br>
  #<wbr>oldprimSampledSoundmixSampleCo<wbr>untintostartingAtleftVolrightV<wbr>ol<br>
<br>
In addition #primitiveReadJoystick does not load from JoystickTabletPlugin<br>
when running on Linux, but this is confirmed to be an artifact of the function<br>
loader, which abandons the attempt to load a module if #initialiseModule<br>
answers false, as is the case in the Unix stub code implementation (so it<br>
should work on platforms that do support the joystick plugin).<br>
<br>
===<br>
<br>
Name: VMMaker-dtl.390<br>
Author: dtl<br>
Time: 2 January 2017, 8:52:00.539 pm<br>
UUID: 1fb628a6-18d2-4d86-b651-<wbr>dc3b3d0cce69<br>
Ancestors: VMMaker-dtl.389<br>
<br>
VMMaker 4.16.1 - Support older Squeak images back to version 1.13 (circa 1996)<br>
<br>
This set of updates is based on SqueakJS as a reference implementation that<br>
supports a full range of images from Squeak 1.13 through the latest Spur images.<br>
<br>
Numbered primitives are identified in the primitive table, established by the<br>
implementations of #initializePrimitiveTable in the various images. Class<br>
PrimitiveTableHistory has been added to document known versions of the<br>
primitive table.<br>
<br>
Background: In general, primitives that originated as numbered primitives in early<br>
Squeak versions have been reimplemented as named primitives in the base<br>
interpreter and in various interpreter plugins. The goal is to reduce or eliminate<br>
use of numbered primitives. Support for old images therefore amounts to reassiging<br>
the old primitive numbers to named primitives where necessary to support<br>
running an older image.<br>
<br>
Strategy: Check if the current image #hasClosures based on the image format<br>
number, then provide an older set of numbered primitives suitable for a range of<br>
pre-closure images dating back to Squeak 1.13. Do this by starting with the<br>
default primitive table, checking at entry to interpreter() to see if this is a<br>
pre-closure image, then installing old primitives as needed in #updatePrimitiveTable.<br>
<br>
Interpreter primitives that require a primitive number for older images are<br>
added to the primitive table with #installPrimitive:at: and primitives that are now<br>
implemented in interpreter plugins are loaded and installed in the primitive<br>
table with #installPrimitive:from:at:.<br>
<br>
===<br>
<br>
Name: VMMaker-dtl.389<br>
Author: dtl<br>
Time: 21 December 2016, 6:31:30.057 pm<br>
UUID: 3cce2df0-2d06-46f6-bed2-<wbr>8946fb48c878<br>
Ancestors: VMMaker-dtl.388<br>
<br>
VMMaker 4.15.11<br>
<br>
Fix the interpreter for running images of the Squeak 3.6 and 3.8 era. Several<br>
obsolete primitives were removed in VMMaker-dtl.387, but these are still<br>
required for older images.<br>
<br>
For this update, the primitive table initialiation is unchanged, but a run<br>
time update is done for the ContextInterpreter to restore the old primitive<br>
assignments. It is not clear if this will be a good strategy but for now add<br>
InterpreterPrimitives>><wbr>installPrimitive:at: and use it to update the table<br>
on first entry to the interpret() loop.<br>
<br>
Possible future updates could support run time fixup to the primitive table<br>
for Squeak 3.2 and earlier images.<br>
<br>
===<br>
<br>
Dave<br>
<br>
<br>
</blockquote></div></div>