|
1 | | -# medley |
2 | | -This repo is for the overall Lisp environment for Medley Interlisp. |
| 1 | +# Medley |
| 2 | +This repo is for the Lisp environment of [Medley Interlisp](https://Interlisp.org). We've made great process in sorting out what we have (some dusty corners notwithstanding), but there's quite a bit more work to do. Please report problems! |
3 | 3 |
|
4 | | -A sub-project is [Interlisp/maiko](https://github.com/Interlisp/maiko) which is the implementation of the Lisp virtual machine. If you want to run on some other platform that we haven't tried, you just need to port/build Maiko. |
| 4 | +See [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction) for an overview. |
5 | 5 |
|
6 | | -Newcomers to Medley Interlisp should check out [Blake McBride's Introduction to Medley](https://github.com/Interlisp/medley-intro) |
| 6 | +A sub-project is [Interlisp/maiko](https://github.com/Interlisp/maiko), which is the implementation (in C) of the Medley virtual machine. |
7 | 7 |
|
8 | | -We've made great process in sorting out what we have (some dusty corners notwithstanding) and are gearing up to fix problems as they are found. |
9 | 8 |
|
10 | | -## Running Medley on all platforms with Docker |
| 9 | +## Instructions for Building and Running |
11 | 10 |
|
12 | | -If this is your first time working with Docker, you'll want to [install it](https://docs.docker.com/get-docker/) before continuing. You'll also need a modern VNC client; [TightVNC](https://www.tightvnc.com/) works well. |
| 11 | +### Setting up X |
13 | 12 |
|
14 | | -Next, you can either pull a prebuilt image or build from scratch: |
| 13 | +Medley Interlisp needs an X-Server to manage its display. Most Linux desktops have one. |
| 14 | +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 displayes). |
| 15 | +* It also presumes you have a 3-button mouse (the scroll-wheel on some mice act as one with some difficulty.) See [README-mac.md](./README-mac.md) for more info on dealing with that. |
15 | 16 |
|
16 | | -### Using a prebuilt image (recommended) |
| 17 | +### Running Medley Interlisp |
17 | 18 |
|
18 | | -1. `$ docker run -p 5900:5900 interlisp/medley` |
19 | | -2. Run a VNC viewer and connect to localhost. |
20 | | - |
21 | | -### Building from scratch |
22 | | - |
23 | | -1. Pull the latest Medley repo. |
24 | | -2. `$ cd medley` |
25 | | -3. Pull Maiko: `$ git submodule update --init --recursive` |
26 | | -4. `$ docker build . -t interlisp/medley` |
27 | | -5. And then as above. |
28 | | - |
29 | | - |
30 | | -## Running Medley on macOS |
31 | | - |
32 | | -1. Download and install [XQuartz](https://www.xquartz.org/releases/). MacPorts has the most recent builds. |
33 | | -2. Clone this repo and [Interlisp/maiko](https://github.com/Interlisp/maiko) into the same parent directory. |
34 | | -3. In a terminal: |
35 | | -```sh |
36 | | -cd maiko/bin |
37 | | -./makeright x |
38 | | - |
39 | | -cd ../../medley |
40 | | -./run-medley --dimensions 1440x800 -full & |
| 19 | +The `run-medley` script in this repo sets up some convenient defaults. Running Medley can be done by typing: |
41 | 20 | ``` |
42 | | - |
43 | | -### Middle-mouse tweak |
44 | | - |
45 | | -if you don't have a 3-button mouse (wheel = middle mouse) |
46 | | -you can enable FN-left to be middle. Run in a terminal: |
47 | | - |
48 | | -```sh |
49 | | -defaults write org.macosforge.xquartz.X11 enable_fake_buttons -boolean true |
50 | | -defaults write org.macosforge.xquartz.X11 fake_button2 fn |
51 | | -defaults write org.macosforge.xquartz.X11 fake_button3 none |
| 21 | +$ cd medley |
| 22 | +$ ./run-medley |
52 | 23 | ``` |
53 | 24 |
|
54 | | -To turn the settings back to the original default values do: |
| 25 | +Or, if you wish to start Medley up with a different SYSOUT: |
55 | 26 |
|
56 | | -```sh |
57 | | -defaults write org.macosforge.xquartz.X11 enable_fake_buttons -boolean false |
58 | | -defaults delete org.macosforge.xquartz.X11 fake_button2 |
59 | | -defaults delete org.macosforge.xquartz.X11 fake_button3 |
| 27 | +``` |
| 28 | +$ cd medley |
| 29 | +$ ./run-medley <SYSOUT-file-name> |
60 | 30 | ``` |
61 | 31 |
|
| 32 | +Once the system comes up, give it a few seconds to initialize. |
62 | 33 |
|
63 | | -## Running Medley on Windows with WSL |
64 | | - |
65 | | -Get the Windows X server called [Xming](https://sourceforge.net/projects/xming/) (the default options will do). |
| 34 | +The first time the system is run it loads the system image that comes |
| 35 | +with the system. When you exit the system (or "do a `SaveVM`" menu |
| 36 | +option) the state of your machine is saved in a file named |
| 37 | +`~/lisp.virtualmem`. Subsequent system startups load the |
| 38 | +`~/lisp.virtualmem` image by default. |
66 | 39 |
|
67 | | -Make Maiko following the instructions [in that repo](https://github.com/Interlisp/maiko), and |
68 | | -copy `lde` and `ldex` from `linux.x86_64` into your path (/usr/local/bin). |
| 40 | +### Exiting The System |
69 | 41 |
|
70 | | -```sh |
71 | | -export MEDLEYDIR=/mnt/c/path-to-medley-directory |
72 | | -export HOME=/mnt/c/path-to-windows-home |
73 | | -export DISPLAY=:0 |
74 | | -export LDEINIT="$MEDLEYDIR"/greetfiles/LOCAL-INIT |
| 42 | +The system may be exited from the Interlisp prompt by typing: |
75 | 43 |
|
76 | | -cd "$MEDLEYDIR" |
| 44 | +``` |
| 45 | +(LOGOUT) |
| 46 | +``` |
77 | 47 |
|
78 | | -IP=1.2.3.4 # your Windows machine's local IP |
79 | | -./run-medley --dimensions 1440x800 --display "$IP":0 -bw 0 -full & |
| 48 | +Or from the Common Lisp prompt with: |
80 | 49 | ``` |
| 50 | +(IL:LOGOUT) |
| 51 | +``` |
| 52 | +When you logout of the system, Medley automatically creates a binary |
| 53 | +dump of your system located in your home directory named |
| 54 | +`lisp.virtualmem`. The next time you run the system, if you don't |
| 55 | +specify a specific image to run, Medley restores that image so that |
| 56 | +you can continue right where you left off. |
| 57 | + |
| 58 | +* [Using Medley Interlisp](https://github.com/Interlisp/medley/wiki/Using-Medley-Interlisp) |
| 59 | + |
81 | 60 |
|
82 | 61 | ## Naming conventions and directory structure |
83 | 62 |
|
84 | 63 | File Names and Extensions: Most Interlisp source file names are |
85 | 64 | UPPERCASE and Interlisp didn't use file extensions for its source |
86 | | -files. (note that any .TEDIT or .TXT file is probably documentation |
| 65 | +files. A .TEDIT or .TXT file is probably documentation |
87 | 66 | for the package of same name, at least in the library, |
88 | | -internal/library, lispusers) |
| 67 | +internal/library, lispusers. |
89 | 68 |
|
90 | 69 | The current repo has both Lisp sources and compiled .LCOM and .DFASL |
91 | 70 | files, because some files don't compile in a vanilla lisp.sysout . |
92 | 71 |
|
93 | 72 | Each directory should have a README.md, but briefly |
94 | | -- basics -- old sysouts needed (for now) for rebuilding new sysouts |
| 73 | + |
95 | 74 | - docs -- Documentation files (either PDFs or online help) |
96 | 75 | - fonts -- raster fonts (or font widths) in various resolutions for display, postscript, interpress, press formats |
97 | | -- greetfiles -- should have any necessary setup of directories Lisp should look in for load |
98 | | -- internal -- These _were_ internal to Venue |
| 76 | +- greetfiles -- various configuration setups |
| 77 | +- internal -- These _were_ internal to Venue; now internal/library and internal/test |
99 | 78 | - library -- packages that were supported (30 years ago) |
100 | 79 | - lispusers -- packages that were only half supported (ditto) |
101 | 80 | - loadups -- has sysouts and other builds |
102 | 81 | - makesysout -- files for making new sysouts for various configurations, based on basics |
103 | | -- patches -- "" |
| 82 | +- patches -- for cases where reloading doesn't wor |
104 | 83 | - sunloadup -- support information for making a new lisp.sysout from scratch |
105 | 84 | - sources -- sources for Interlisp and Common Lisp implementations |
106 | 85 | - unicode -- data files for support of XCCS to and from Unicode mappings |
|
0 commit comments