Open masinter opened 2 years ago
Alan Kay had an interesting article on Quora
The Medley emulator (started at Fuji Xerox) for Sun/SPARC was done in a way that the memory images could move between D-machine microcode and Medley emulation and back. That’s why there’s one Medley release but multiple Maiko releases – between different OS and CPU and 32/64bit big/ little-endian. Although most of the systems we have use X, all the X-window code is part of Maiko – the Lisp code just treats the screen as another bitmap.
In Medley today there are three levels of debuggers
at the Lisp level there’s the Lisp debugger (break window pop-up, backtrace to inspect the stack, revert to an earlier call, evaluate and inspect and edit data structures. You can inspect the stack for each thread (process).
At the next level down there’s a debugger (RAID) that is implemented as part of Maiko that includes some diagnostics. The Maiko implementation also has some diagnostics that are enabled by compile time switches.
At the lowest level, there’s LLDB to look at the C stack.
add to History section of web site? Or History in Google docs
This issue should capture institutional knowledge about Medley and Interlisp-D. How to do things, why things are they way they are. Questions that newcomers would have.
This should also capture issues with using Medley on modern systems.
You kind of want the web site to be the first place to put the answers to questions people 'frequently ask': "What is it?" "Who's doing it?" "What are they trying to accomplish?", and so forth.
The role of a FAQ is to hold the odds and ends of questions that don't fit into those categories; if your FAQ gets too deep, you need to update the web site. So I think of the FAQ as a staging ground, and part of a process. Implicit in the "issue" is having a process for answering questions and making it easy for newcomers to ask them.
To move this along, I asked ChatGPT to provide me with a seed list of topics for a FAQ:
Bill: What topics should be in a FAQ for Medley Interlisp?
ChatGPT:
Here are some suggested topics that could be included in a Frequently Asked Questions (FAQ) section for Medley Interlisp:
These topics cover general information, installation, compatibility, resources, language features, development environment, debugging, performance, community support, and contribution aspects of Medley Interlisp. Including these questions and their answers in the FAQ section would provide users with valuable information and address common queries they may have.
Next maybe I'll ask ChatGPT to write some of the answers and use that as a first pass...
Pls separate q about Medley the system, interlisp history and q about the project
Ideally a FAQ is a short list of questions that aren't yet covered by the main site...
Q:Is copy pasting possible ? Copying something in the host os clipboard and pasting in the medley repl
meta-C for copy meta-V for paste
Q: How to ask in the repl for help about a specific function? (some-func ?=
;;; Use MAN or ?
;;; Example:
MAN HELP<return>
;;; or
(HELP ?<return>
;;; It also works for Common Lisp symbols, they will be looked up in the CLHS
(CL:GENSYM ?<return>
MAN CL:GENSYM<return>
Also, start up a medley https://online.interlisp.org/, right click on the background grey and pick "DInfo" will give you an interactive graph of the Medldey IRM (Interlisp Reference Manual)
Q: How to invoke the debugger for the last error occured in the repl ? For example typing (+ 1 A) will only show the error message: A is an unbound variable.
RETRY<return>
;;; now you're in the debugger
;;; let's give A a value while in the debugger:
(SETQ A 9)
;;; now middle click in the debugger then choose Ok and it will continue the execution as if the fault never happened. It will return the value 10.
in Medley how to get help on a certain keybinding ? For example if I want to know what Ctrl-U does how to bind keys such as F1,F2,... to actions ? How to change the REPL font ? Can it be changed to a font that displays Japanese unicode characters?
keybindings and fonts are two areas where we really need some help. https://github.com/Interlisp/medley/issues/58 has a lot of background on the key binding issue and https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit#gid=79579844 and some tables about existing key bindings. Changing key bindings is caught up in the transition from key numbers to key names.
Interlisp charset handling was built using XNS (Xerox Network Systems) key codes; we now implement unicode but need some work on font translation...
if you just want to make the exec (REPL) fonts bigger, you can use FONTSET. https://github.com/masinter/homedir has my init file (LARRY) for an example.
Plus it's not as simple as "the key bindings" - read tables, terminal tables, and so on. Also, you have to know what the reader/terminal environment is for the particular thing you're typing at, too. There's no substitute for reading the appropriate section of the IRM, but answers in a FAQ should point people at the right chapters (in the right version of the IRM) to read to understand the mechanisms and how to query them to see what happens to be set up.
the web site itself shoud answer most questions, like "what keys do I pres" in the "Using Interlisp" section. The wiki had pages for "Running" perhaps it should have been "Setting Up Medley"; ane then pages for "Using Medley" which should answer questions which would, without it, be frequently asked.
The current setup has https://interlisp.org/project/faqs/ but the contents of the page belongs in software/faqs.
I'm worried about separating them, but maybe start each with a pointer to the others. People familiar with GitHub use Discussions for questions and answers.
There's enough material to cover that it needs more organization than a FAQ.
There already is a FAQ: https://interlisp.org/project/faqs/
which doesn't have most of the material in this thread. I will change the title of this Issue
perhaps there are 3 "faqs": history, project, software. Material should be folded in to the appropriate subsection, with the FAQ for "overflow" topics that don't fit.
Here are some ideas on where the material could go.
lde
vs ldex
, vmem bigger than 256 MB: maiko repo in README.md
or a separate maiko internals .md
file.
Windows and scrolling: Keystrokes, Mouse menus and Gestures, new section "Window management".
Medley debuggers: maiko repo in README.md
or a separate maiko internals .md
file.
Copy-pasting, getting help, invoking the debugger: Using Medley Interlisp Basics, new sections such as "The clipboard", "Getting help", and "Invoking the debugger".
Regarding "lde" vs "ldex" - it's really never the case that one should start the display subsystem specific executables (ldex, ldesdl, ...) by hand. If we were following the Unix file system layout standard these should be installed in /usr/libexec/medley/
and invoked from there by lde.
what's the difference between lde and ldex
In practical terms: If you start with lde, it will allow shell access using IL:ShellCommand and CHAT(SHELL). Otherwise you'll get an error: Failed to find UNIXCOMM file handles; no processes during startup, and more if you invoke unix communication
reading UnixPipeIn: Bad file descriptor Fork failed. d = 80, 47, 100, 4, 0, 0
The other differences are currently hypothetical (networking startup using 'ldeether' instead of 'lde'; color support didn't use X but rather a Sun specific device).
Can I make the vmem bigger than 256MB?
D-machines and Medley 2.0 had 24 bit pointers and 8 bit CDR-codes. (pointer granularity Is 4 bytes so address space was 2^26 or 64 MB)
assuming the "new" CDR-coding with 28 bit pointers and 4 bit CDR-codes is still effective; 2^30 or 256 MB. Going beyond 2^30 would mean turning off CDR-coding which would eat into the gain.
How to scroll and other things
((Intro to Interlisp window menus, modernize, wheel scroll))