* Adding LANG environment variable to docker image; adding MAIKO_ and MEDLEY_INSTALLDIR environment variables; Changing /usr/local/bin/run-medley to a symbolic link instead of a shell script * Added draft input to all workflows, so that can create draft releases as well as regular releases * Update buildDocker.yml to handle deprecation of set-output and to update versions of actions to handle node 12 to node 16 transition. * Added scripts and updated github workflows to support creation of deb installers for Linux and WSL * Fix minor bug in buildLoadup.yml * First pass implementation of deb installer * Fixing wget of vncviewer in build_deb.sh * Fix typo in buildLoadup.yml in call to build_deb.sh * Multiple small fixes to medley.sh from debugging. Change postinst script and how its created in build_deb. Add postrm script in build_deb. * Reworking vnc portion of Medley.sh - including removing dependency on startx and xinit * Misc fixes to medley_vnc.sh script; fix creation of postinst and postrm in build_deb.sh * Cleaning up window geometry amd screen size in medley.sh * Created apps.sysout loadup with rooms, notecards, clos on top of full.sysout; added plumbing for -apps flag to run-medley to run this syout; created a new init file for this sysout that calls MEDLEYDIR-INIT; all of this is based on online.sysout * Create UNIXUTILS file in library with ShellWhich function - linux which command equivalent. Also move ShellCommand from UNIXPRINT to UNIXUTILS. * Adding UNIXUTILS to LOADUP-FULL so it gets included in full.sysout * Change of names from open(er) to browse(r). Refine the browse(r) functions a bit * Minor bug fixes * Update Apps.ShowDoc to new ShellBrowsefunction * Adding apps support into the .github builds; adding xdg-utils as dependecy in debs * fixing bug as to where notecards is checked out in BuildLoadup. Needs to be before loadups so app.sysout can be built * Added defaulting to Interlisp exec tomedley.sh and APPS-INIT. Works only in apps.sysout. Added wlsu package to wsl debs since wlsview is not always installed by defailt. Fixed Notefiles directories issues in Apps.Init. Made medley.sh compute medleydir based on where the script is located. Can now work for /usr/lcal/interlisp as well as local directories. * Added -id - feature to medley.sh so id can be directory mae. Removed extraneous set -x commands in medley.sh from debugging. In build_deb.sh changed compression to xz for deb files since debian does not support the zstd compression that ubuntu uses. * For wsl deb files, make sure wslu package is not 4.0 - which is bad. Change how we choose an open port and open display in medley_vnc.sh. Add notecards download to build_deb.sh. Fix type in medley.sh * Add (FILES UNIXUTILS) to UNIXPRINTCOMS so that ShellCommand is loaded in case only UNIXPRINT is loaded. For backward compatibility. * Moved medley.sh and associates to script/medley dir; fixed up args to medley.sh; added usage and --help to medley.sh * Add comprehensive tar files to releases to match deb files for local installs; add --id -- arg to medley.sh * Remove remaining reference to usr/local/interlisp to ensure local install works * Fix bug in buildLoadup - couldn't file install tars * Add medley symbolic linkto loadups, so it comes thru to local install tars * Fix up error messaging in medley.sh scripts * Created man page for medley and added it throughout build up, installers, etc. * Add support for a downloads page on OIO, including creating said page while building a release * Fix full_release_tag in downloads section of buildLoadup.yml * Misc fixups on downloads page * Adding online man page stored on oio static server. * Fix minor bug in man installation in deb file
Medley
This repository is for the Lisp environment of Medley Interlisp.
See the Documentation links for an overview and pointers to documentation. In particular Running explains other methods of getting Medley Interlisp.
Interlisp/maiko, is the repo for the implementation (in C) of the Medley virtual machine.
Using releases
There currently are separate releases of medley and maiko; get the latest version of each.
Getting releases
Get the Maiko release here. You'll need the .tgz file corresponding to your operating system and processor (for Windows with WSL or Intel Linux, use linux.x86_64; for Macs use darwin.x86_64 for Intel and darwin.aarch64 for M1.)
Or, build your own maiko (the binaries lde ldex and ldeinit) We can build for other OS arch pairs depending on what is available for GitHub actions.
The medley release comes in two parts, found here
- The "loadups" (download
medley-YYMMDD-loadups.tgz) - The "runtime" (download
medley-YYMMDD-runtime.tgz)
You don't need the "runtime" if you've cloned this (medley) repo, but you'll still need the "loadups" release.
If you happen to have the 'gh' GitHub command line installed you can download both using
gh release download -R Interlisp/medley -p "*"
but otherwise just click on the link(s) below to the parts you need.
Unpacking releases
From a shell/terminal window:
- Choose where you want to install medley and maiko. Unpack the medley loadups file
cdparenttar xvzf medley-YYMMDD-loadups.tgz
- Unpack the medley runtime OR clone the Medley repo (the "medley runtime" is just a subset of the whole repo)
-
tar xvzf medley-YYMMDD-runtime.tgzOR
git clone https://github.com/Interlisp/medley
-
Unpack the maiko file for your operating system and CPU type, e.g.,
tar xvzf maiko-210823.linux.x86_64.tgz -
This should leave you with two directories,
medleyandmaiko.
Setting up X
Medley Interlisp currently needs an X-Server to manage its display. Most Linux desktops have one. Windows 11 with WSL includes an X-Server. For Windows 10 with WSL2, there are a number of open-source X servers; for example vcxsrv.
Mac users should get XQuartz from XQuartz.org.
Medley manages the display entirely, doesn't use X fonts and manages it's own window system.
If you have a high-resolution display, note that much of the graphics was designed for a low-resolution display, so an X-server that does "pixel doublilng" is best. (E.g., Raspberry Pi does pixel doubling on 4K displays.) It also presumes you have a 3-button mouse; the scroll-wheel on some mice act as one with some difficulty.) XQuartz Preferences/Input has "Emulate three button mouse" option.
Running Medley Interlisp
The run-medley script in this repo sets up some convenient defaults. Running Medley can be done by typing:
$ cd medley
$ ./run-medley
Or, if you wish to start Medley up with a different SYSOUT:
$ cd medley
$ ./run-medley <SYSOUT-file-name>
The first time the system is run it loads the system image that comes
with the system. When you exit the system (or "do a SaveVM" menu
option) the state of your machine is saved in a file named
~/lisp.virtualmem. Subsequent system startups load the
~/lisp.virtualmem image by default.
Exiting The System
The system may be exited from the Interlisp prompt by typing:
(LOGOUT)
Or from the Common Lisp prompt with:
(IL:LOGOUT)
When you log out of the system, Medley automatically creates a binary
dump of your system located in your home directory named
lisp.virtualmem. The next time you run the system, if you don't
specify a specific image to run, Medley restores that image so that
you can continue right where you left off.
Naming conventions and directory structure
File Names and Extensions: Most Interlisp source file names are UPPERCASE and Interlisp didn't use file extensions for its source files. A .TEDIT or .TXT file is probably documentation for the package of same name, at least in the library, lispusers.
The current repo has both Lisp sources and compiled .LCOM and .DFASL files.
Each directory should have a README.md, but briefly
- BUILDING.md -- instructions on how to make your own loadups
- clos -- early implementation of Common Lisp Object System
- CLTL2 -- files submitted to bring Medley up to the conformance to "Common Lisp, the Language" 2nd edition. Not enough to conform to the ANSII standard lisp.
- Dockerfile -- used when building Docker containers with Medley
- docs -- Documentation files (in TEdit format PDFs or online help; look here
- fonts -- raster fonts (or font widths) in various resolutions for display, postscript, interpress, press formats
- greetfiles -- various configuration setups
- internal -- These were internal to Venue
- library -- packages that were supported (30 years ago)
- lispusers -- User contributed packages that were only half supported (ditto)
- loadups -- has sysouts and other builds plus a few remnants
- obsolete -- files we should remove from the repo
- rooms -- implementation of ROOMS window/desktop manager
- run-medley -- script to enhance the options of running medley
- scripts -- some scripts for fixing up things
- sources -- sources for Interlisp and Common Lisp implementations
- unicode -- data files for support of XCCS to and from Unicode mappings
plus Dockerfile, and scripts for building and running medley tmp directory for use during build processes