Play Zork on PicoCalc/PicoMite

I don’t believe that is true, modern MMBasics use a hash table for variable lookup rather than a linear search through a list in declared order. I wouldn’t make that change anyway; at some point readability/maintainability concerns trump speed. You can get some speedup by crunching variable names (at the expense of readability) but the real gain will be if/when I switch the code to use SELECT CASE instead of IF ... THEN ... ELSIF ... ENDIF - the original target version of MMBasic didn’t have SELECT CASE.

Yes that would be something I would look at early if I spend any more time enhancing Z-MIM.

Excluding the use of AI that is somewhat of a non-starter.

Z-MIM is an interpreter for the Z-machine, it is agnostic of the content being executed - I believe there is even a C compiler that can generate Z-machine code.

What you are proposing requires:

  • Extend Z-machine specification and implementation with audio support - I think later versions of the Z-machine specification have some but I know nothing about it.
  • Find/Create/Extend ZIL (Zork Implementation Language) tooling to compile new language to make use of audio support.
  • Find original ZIL source code for each adventure you want to add sound to and update it to use new audio support.

Not in this lifetime, not for all the coffee in Starbucks :wink: .

Best wishes,

Tom

1 Like

Hmmm i was more thinking of interrogating location (or location text) when a player moved and search out river, forest, house, cave, tent, open door, examine grate etc and fire off the relevant mp3 file on loop till location change :smiling_face_with_sunglasses:

I remember having Leather Goddesses Of Phobos as a kid on my Atari ST i seem to remember it having a lewd mode though I at that age i dont think i knew what lewd mode was lol.
It must have left a lasting impressions since i remember it LOL
I made a pico8 game that made references to that game.

2 Likes

…and which pico8 game might that be?

Is just one of many unfinished projects that i should publish but havent gotten around too

…we all have some UFOs lying around… (UnFinished Objects)

Tom. When you exit Zmim via ‘quit’ where in the program is the exit point ?. I’d like to return to a menu program of mine :smiling_face_with_sunglasses:

Look for the lines:

main()
End

That End is the exit point … though it’s actually superflous, you could delete that line and the program would still end once the main() subroutine returned.

Note there will hopefully be a Z-MIM v3.6 in the next couple of days which is a bit faster, implements the status bar and allows you to select a smaller font if you want.

Best wishes,

Tom

3 Likes

ZMIM v3.6.0

ChangeLog:

Version 3.6.0 - 1-Jun-2025:
 - Added status line.
   - Having the status line "scroll" off the top of the display and then
     redrawing it (instead of having the text scroll beneath it) is a
     deliberate choice for performance reasons rather than a bug.
 - Added *FONT [SMALL | MEDIUM] meta-command.
   - KNOWN BUG: using *FONT SMALL on the Colour Maximite 2 causes the prompt
     to "glitch" in a way I have been unable to reproduce in a small example.
 - Added '--shell' command-line option which if used will cause Z-MIM to
   RUN the program specified in the "/.mmbasic-shell" file when it exits.
 - Changed code to use SELECT CASE rather than IF .. THEN .. ELSEIF ..
   constructs.
   - This should slightly improve performance.
 - Changed transpiled versions of Z-MIM to remove comments and unnecessary
   whitespace.
   - This should slightly improve performance.
 - Changed code to no longer use _ as a variable name as this was incompatible
   with the new PicoMite line-continuation feature.
 - Removed '--platform' command-line flag.
   - This was specifically for MMB4L and as of MMB4L v0.8 is no longer
     required due to enhancements to the RUN command.
 - Fixed *status meta-command to display time instead of score for
   "time games" such as "Deadline".
 - Fixed bug where cursor colour was always white rather than using the
   display foreground colour.
 - Fixed debug help text for displays <= 40 characters wide.
 - Fixed formatting of stored values when using interactive debugger.

Many thanks to @cjstoddard for testing on the PicoCalc hardware for me.

5 Likes

Honestly I have spent more time using zmim on my PicoCalc than anything else. Thank you and I appreciate what you do for the community.

Working well on first test. Changed font color to white for easier reading in bright light or low backlight and a wee exit routine to jump back to my menu program :smiling_face_with_sunglasses:. Miss the spinning prompt tho…

That had me scratching my head, until it occurred to me to ask, have you switched to the WebMite firmware since you last tried it?

Best wishes,

Tom

I used it for several hours over the last few days, and I didn’t even notice it was gone.

Yes. Will be going back to PicoMite once an RTC is fitted…

OK, at the moment if you use the WebMite firmware you won’t get the progress spinner … it never occurred to me that this would be running on the WebMite … I’ll patch it when I get a moment.

In the meantime you could use the *spin meta-command to enable the progress spinner for the current session.

Best wishes,

Tom

2 Likes

As promised I’ve (hopefully) fixed the progress spinner for WebMite.

ChangeLog:

Version 3.6.1 - 16-Jun-2025:
 - Fixed "progress spinner" so that it is now enabled by default for WebMite.
3 Likes

Can’t wait for my PicoCalc to arrive so I can give this a go- I’ve always wanted to play Zork and the other classics! Nice work!

3 Likes

New v3.6.2

Many thanks to @richship who found and fixed a bug that caused Z-MIM to crash if the status line was too long.

ChangeLog:

Version 3.6.2 - 8-Jul-2025:
 - Fixed crash when status line too long.

Best wishes,

Tom

4 Likes

Thanks for the update, yet reports v3.6.1 when run…

Curses, I somehow managed to update the version on the credits page but not on the title page. I’ll re-roll the release when I get a chance.

Best wishes,

Tom

1 Like