From: Charles Hedrick (hedrick@athos.rutgers.edu)
Date: 02/09/92


From: hedrick@athos.rutgers.edu (Charles Hedrick)
Subject: icon coexpressions; ka9q progress
Date: 9 Feb 1992 18:27:53 GMT

Somebody asked how I managed to get coexpressions working in icon.
Originally I said I didn't: the default configuration comes without
them. However it turns out that the application program I wanted to
run requires them. So I tried using rswitch.c from the i386_sysv
configuration, and it worked fine. I've now got Richard Goerwitz'
"bibleref" working. It's a bit slow, presumably because I'm using a
386sx, but it's usable.

Since there were several people asking about icon, it's probably worth
uploading it at this point, though floating point is still not
working, and the program library fails a few of the self-tests. But
Bibleref is a pretty substantial program, and since it works, the port
is probably in fairly good shape.

I feel fairly odd talking about porting ka9q, since somebody already
announced that he had done a port. But he hasn't responded to
questions about it, so for the moment I have no way of knowing what
has already been done. He said it was a simple port, so I'm assuming
he's done a minimal port of the 1989 code -- the alternatives don't
meet my criteria for "simple".

I have ka9q working over compressed SLIP. Indeed I'm working over a
telnet connection now, and I just downloaded several MB of data using
FTP. I started with the old 1989 Unix port -- which seemed like the
easiest to port -- and retrofitted compressed SLIP from the December
1991 NOS version. Before I unleash it on the world, I'm probably
going to retrofit bootp as well. There are still two problems:

  (1) the tty line sometimes hung. I've seen this on my machine
        under DOS as well. It happens on enough machines that
        FTP, Inc now does timeouts in their SLIP code. I put
        similar code into the serial device handler. The current
        form is a real hack. I think Linus is going to look at
        a cleaner way of doing it. I haven't had any hangs since
        putting in the timeout. (The apparent problem is
        dropping serial output interrupts.)

  (2) as far as I can tell, timeouts in select don't work.
        It looks to me like select.c is doing the wrong thing
        when transferring that argument. Thus at the moment
        I'm using non-blocking I/O. The program simply sits
        in a loop looking for input from the keyboard or serial
        port. This tends to slow things down for any other
        programs that may be running. I'd like to get this
        working a bit better, but I'm not sure I'm going to have
        time this weekend.