Please enable JavaScript to view this site.

A-Shell Development History

1. (Windows) Carriage returns are now added automatically to lines output to the pseudo-auxiliary port.  This applies when printing to the AUXLOC: device or when using PRINT TAB(-1,82), both of which are only relevant under A-Shell/Windows when using Telnet server mode (i.e. either ATS or TELSER.LIT).

Previously, any such output would have only LF line terminators, generally leading to the "stair-step" problem unless your printer automatically added CR to LF.

Although this change would seem to present a compatibility problem for programs that were already achieving the desired output, fortunately, there is no harm in adding a second CR.  That is, the output sequence CR CR LF is functionally equivalent to CR LF.

2. (Windows) Fixe problem of TAB(-1,82) causing 4 bytes of garbage characters to appear at the start of the printout when using the AM75 or AM65 emulations.

3. (Windows) Fix problem with saving/restore attributes when OPTIONS=FIELDEMU.

4. (UNIX) If the printer init file is not found for the specified printer, it is assumed to be the UNIX spooler name.  This corresponds to the logic in A-Shell/Windows (see notes below for 827).

5. (Windows) We no longer complain if the printer DEVICE= name is not locally defined (i.e. not in the Registry), as long as it is in the format \\machine\sharename.  (Newer versions of Windows auto-detect these printers on the network and thus don't really need a local definition.)

6. The sort routines used by BASORT and SORT.LIT have been improved in various minor ways:

First, a bug was corrected that was causing it to use the dreaded polyphase merge sort instead of the tag sort in cases where SBR=MALLOCSORT was specified but the MALLOCLIMIT was insufficient to sort the entire file in memory using quicksort.

Second, under Windows, all of the temporary files used during sorting (in the tag and polyphase merge algorithms) are now allocated in the directory specified by the environment variable TEMP (assuming it is defined, which it generally is by default). Previously, they were allocated in the logged in directory. Since TEMP is almost certainly on the local drive, whereas the logged-in directory is probably on the file server, this cuts down considerably on network overhead and latency when using the MEDIUM and LARGE sort modes. (The performance improvement seems to range from about 1% to 50% in our in-house tests.)

Third, if the file being sorted used span'blocks mode, or its record size divides evenly into 512 (so there are no blocking filler bytes needed), then the number of I/O operations used in the tag (MEDIUM) sort will be reduced by writing blocks of records at a time.

Finally, it now aborts with an appropriate error message if you try to sort a file loaded into the MEM: device whose record size does not divide evenly into 512 and does not use span'blocks. (Sorting a file in MEM: is very very fast, but only because it can be sorted in place, and this is not possible using quicksort when filler bytes are used to round out 512 byte blocks. This problem will have to go onto the to-do list for the next release; for now, if you want to sort a file in MEM: make sure it uses span'blocks or the recsize divides evenly into 512.)

7.  ISMBLD.LIT 1.2(118) and ISMDMP.LIT 1.2(127) now support record sizes up to 4096 bytes.  Previously, they supported up to 2048 bytes, except that ISMBLD wasn't able to properly load from a sequential file when the record size exceeded 1024 bytes.

8.  COMPIL/OCMPIL/COMPLP now automatically retry with the /A option set if the initial try fails due to "transfer address out of range" errors.  It also stops displaying "transfer address out of range" errors after the first five (since it can get rather ridiculous).  Note to AMOS compatibility purists: both of these enhancements can be disabled with OPTIONS=STRICT.

9.  (Windows) Support arrow characters tab(-1,64), tab(1,65), etc in non-MIAME fonts.  Also, fix problem with field attributes (e.g. reverse video) being turned off when graphic mode selected.

10. Fix bug in VUE GLOBAL command.  If search string blank, it was blowing up trying to fill the file with the replacement string.