Subject: Beta testers help sought for Amiga-CLISP

From: [email-masked] (Joerg-Cyril Hoehle)
Date: Fri, 7 Oct 94 14:16:08 +0100

Hi,

Since the last distribution of CLISP/Amiga in February, a few things
have changed. Here are the Amiga related changes (not to mention the
general changes like LOOP, French/German/English language start-time
switch, generic streams, external modules and others):

1 SYS::terminal-raw exists and can switch *terminal-io* of any CON or
RAW file-handle stream to cooked or single-character mode.

2 SYS::%mem-read, %mem-write and %libcall exist and are supposed to be
the basis of an upcoming FFI in CLISP.

3 c-C handling has been improved during READ from file-handle-streams
(i.e. also *terminal-io*).

4 a version of CLISP (called *-wide) now runs together with virtual
memory (tested with VMM) or boards that put memory above #x07ffffff
(untested).

Things to do, to test and or to develop:

ad 1) has been added so that Maxima/Punimax can be supported, although
the port is not complete. This is mainly because I feel that there's a
design flaw in the functions from the SCREEN package:

(SCREEN:MAKE-WINDOW)
  returns a "window stream". As long as this stream is open, the terminal
  is in cbreak/noecho mode. *TERMINAL-IO* shouldn't be used for input or
  output during this time. (Use WITH-KEYBOARD and *KEYBOARD-INPUT* instead.)

(SCREEN:WITH-WINDOW . body)
  binds SCREEN:*WINDOW* to a window stream and executes body. The stream is
  guaranteed to be closed when the body is left. During its execution,
  *TERMINAL-IO* shouldn't be used, as above.

Punimax doesn't stick to that rule and nevertheless reads from
*TERMINAL-IO*. This works on CLISP/UNIX or DOS(?) because there's a
hack in CLISP to switch the modes. I don't like to go through a hack.

In my opinion, what's missing is a way to do both screen oriented
output (setting/getting the cursor position) and read chars in either
cooked or single-character (non-echoing) mode. The current SCREEN
doesn't provide for that (when there's no *KEYBOARD-INPUT*).

ad 2) could be enhanced a lot, but I'd like people to help me on
that. If I had to write everything myself, that'd just delay and delay
a new distribution of CLISP (which is why I decided to put out a
beta). I'm still dreaming of a
(let ((w (libcall |OpenWindow| args...))) ...) with full resource-tracking.

ad 3) is just nice when you mix quotes and parentheses.

ad 4) is extremely useful _now_ (maybe even necessary to compile
Punimax on small systems).

5 CLISP doesn't work nicely with neither PIPE: nor FIFO: although it's
perfectly fine with CON: or RAW: streams. Anybody wants to investigate
on that? How to really distinguish streams that can be buffered from
others?

6 For the advanced C programmer: I could distribute CLISP as a library
(like is done on UNIX). This would have the advantage that one can
easily add new foreign modules by linking without recompiling CLISP
itself, although that would require a GCC platform. Is there any
interest in this? That would mean even more archives :-(

7 opening "SER:" or "AUX:" is not possible with CLISP, because it
thinks that these are note correct pathnames ("SER:9600" works). Any
ideas?

8 Compilation: Are you able to get a working CLISP from sources or am
I the only one?? (GCC258 is recommended).

Thanks to any volunteers,

 	Joerg Hoehle.
[email-masked]