Fix Truckin Demo Code (loadup issues)
I am hoping someone has the Truckin Demo Code as that would be a great Demo and code base for new users to learn from and an exciting way to do so.
there's
git clone https://github.com/interlisp/envos.git
cd envos
find . -iname truckin'*'
for medley 1.0. We're at 3.5 and it will need to be recompiled and tested. For some reason the envos files might have \n and \r swapped which is fine for source files, but not so good for TEDIT files or dfasls (which will need to be remade)
I just came back to this. The repo has changed since then. I looked at the branches and I don't see envos listed. Where would be the right place to look. I'd like to give a go at getting it working as I relearn Interlisp..
Thanks for the help @masinter
You can check out the interlisp/loops repo (which has all the TRUCKIN code) -- but I've got a couple of things remaining to do to make the loadup go smoothly. One thing to remember (that I keep forgetting) is that to load the sources you must be running in a sysout that is limited to 32MB instead of the default 256MB -- there is some low-level code that when interpreted (but not when compiled) will fail if an allocation falls outside the low 32MB of Lisp address space.
I think we've resolved or have work-arounds for most of the Loops loading problems (need to wrap some of the FILES (LOADCOMP) commands in LOOPS sources with a DONTEVAL@LOAD EVAL@COMPILE) and this is the remaining issue -- problems running Truckin. See README in Loops repo
I spent the better part of the day in pursuit of a theory that turned out to be false but I thought I would see: loading 1993 Medley 2.0 compiled files into a 1992 sysout fails the same way... players whose name is nil.
I got caught up an a dependency cycle with the InitializeUIDs Y2K problem fix being overwritten if I patched first. https://github.com/masinter/homedir/blob/master/LOADLOOPS.DRIBBLE
@Anzus do you remember a way to get Truckin to run? Running Truckin for Medley 2.0 using 1993 compiled files, following the instructions at the end of LoadTruckin winds up asking for classes of users which are all named NIL. (I advised DATE to change 2022 to 97 to get around the Y2K problem )
How does it attempt to name the instances of the players? I fixed the UUID generating code to deal with the Y2K problems, but there could be fallout from that that I didn't find...
. WHO CALLS CreateNewPlayer ?
Sorry I'm not communicating well. I only needed the quick hack of ADVISING when running on Hemlock with 1993 Medley 2.0 LCOMS. In either case, the result is the same

There's something wrong with creating new players. In CreatePlayers it has the code
(SETQ player (_ obj New))
(printout \TopLevelTtyWindow "Player created: " (GetObject Name player) T)
which is called with 'obj' being a class of players (e.g., ($ Teamster)).
But the (GetObjectName player) is NIL and PutObjectName is never called.
(INSPECT (_ ($ Teamster) New))
shows the result having a "driver" field of "Name1" but that isn't the object name.
I haven't found a sysout/repository where Truckin works in order to do triage.
I could try the 1.1 release and see if that helped?
I've been making headway, and have found and fixed a couple of problems. These are interrelated in an odd sort of way. One problem is in the "definition" of a CLASS (filepkgtype CLASSES) -- there are two.
One for files using DEFCLASS and another for editing using a iist of tuples . Not obviously a big difference but enough. Which one you got depended on the value of (FromAnEditor?) which in Lyric used some SEDIT variable and was supposed to be different in Medley but not quite filled in.

The might be OK but there are some operations that might bypass this, There is also some logic for finding the definition from a file GETDEF(SystemPlayer CLASSES TRUCKINR;3) which, as a fallback, tries to LOAD the definition from the file, copy it, and then UNDO the load. Which only works if the load is undoable. So trying to LOADDEF(SystemPlayer CLASSES TRUCKINR;3) results in undefined Function NIL.
Not to pick on SystemPlayer but there was another problem. We've taken to "fixing" edit dates to a new format, but LOOPS was is using the editdate (or (* initials date) as another bit of metadata and not installing definitions when the Edited%: token is not followed by an Interlisp comment.
Thi can be fixed by patching those places where there's a problem.
I haven't yet discovered why we are creating nameless players... There still is a mystery of the FNS vs METHODS for two would-be-methods: GamePlayer New and GameObject Initialize. There was a line in the definition of New to end Initialize to the new instance -- commented out? Was it made implicit? That seems the way to insure that everything has a name.
But I have yet to come across any logic or hint as to what name should be assigned! It looks like there are a log of ways of starting Truckin other than CreatePlayers, and even that route will use any existing player names.
Loading TRUCKIN : just for debugging, I made a file called LOADME that will, when loaded, load LOOPE, TRUCKIN, LOOPSMS RULES and ask if you want to load PLAYERS and source (which it will handily Masterscope analyze every file that it loads.
I'll put this into n lmm branch... just thought I would report progress.
I was getting memory smash symptoms (bad ARRAYBLOCK on Freelist) when running interpreted, which makes me want to go through and look for more instances of the 24->28 bit address-size change bug.