Interlisp / medley

The main repo for the Medley Interlisp project. Wiki, Issues are here. Other repositories include maiko (the VM implementation) and Interlisp.github.io (web site sources)
https://Interlisp.org
MIT License
369 stars 20 forks source link

Additional material for /software/using-medley/ section of web site for better documentation #1136

Open masinter opened 2 years ago

masinter commented 2 years ago

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?

256 (MB) is as big as the VM can be.

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))

masinter commented 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.

masinter commented 2 years ago

add to History section of web site? Or History in Google docs

stumbo commented 1 year ago

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.

masinter commented 1 year ago

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.

stumbo commented 1 year ago

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...

masinter commented 1 year ago

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...

rainthree commented 1 year ago

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 ?= will show the args but what if I want a more complete reference?

;;; 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.
rainthree commented 1 year ago

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?

masinter commented 1 year ago

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.

nbriggs commented 1 year ago

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.

masinter commented 1 year ago

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.

masinter commented 8 months ago

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.

masinter commented 8 months ago

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

masinter commented 8 months ago

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.

pamoroso commented 1 month ago

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".

nbriggs commented 1 month ago

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.