medley icon indicating copy to clipboard operation
medley copied to clipboard

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

Open masinter opened this issue 4 years ago • 16 comments

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 avatar Sep 03 '21 05:09 masinter

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 avatar Sep 04 '21 20:09 masinter

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

masinter avatar Mar 14 '22 18:03 masinter

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.

stumbo avatar Oct 19 '22 23:10 stumbo

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.

masinter avatar Oct 21 '22 15:10 masinter

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:

  • What is Medley Interlisp?
  • How does Medley Interlisp differ from other dialects of Interlisp?
  • Is Medley Interlisp still actively maintained and supported?
  • How can I obtain and install Medley Interlisp?
  • What are the system requirements for running Medley Interlisp?
  • Can I run Medley Interlisp on modern operating systems?
  • Are there any resources or documentation available for learning Medley Interlisp?
  • Can I migrate my existing Interlisp code to Medley Interlisp?
  • Does Medley Interlisp support object-oriented programming?
  • Can I interface Medley Interlisp with code written in other programming languages?
  • What are the key features and advantages of using Medley Interlisp?
  • How can I debug and test my Medley Interlisp programs?
  • Does Medley Interlisp support concurrency and multithreading?
  • Are there any limitations or known issues in Medley Interlisp that I should be aware of?
  • Can I use Medley Interlisp for developing production-level applications?
  • What is the performance of Medley Interlisp compared to other programming languages?
  • Are there any user communities or forums where I can seek help and discuss Medley Interlisp?
  • Does Medley Interlisp have support for networking and communication protocols?
  • Are there any integrated development environments (IDEs) available for Medley Interlisp?
  • Can I contribute to the development or improvement of 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...

stumbo avatar Jun 24 '23 13:06 stumbo

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

masinter avatar Jul 10 '23 12:07 masinter

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 avatar Aug 19 '23 05:08 rainthree

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?

rainthree avatar Aug 19 '23 18:08 rainthree

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.

masinter avatar Aug 20 '23 00:08 masinter

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.

nbriggs avatar Aug 20 '23 05:08 nbriggs

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 avatar Aug 21 '23 00:08 masinter

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 avatar Dec 11 '23 18:12 masinter

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 avatar Dec 20 '23 03:12 masinter

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.

masinter avatar Dec 20 '23 03:12 masinter

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

pamoroso avatar Jul 15 '24 20:07 pamoroso

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.

nbriggs avatar Jul 15 '24 20:07 nbriggs