Please enable JavaScript to view this site.

A-Shell Development History

Navigation: Version 4.6, builds 699-791

761 — 13 January 2001

Scroll Prev Top Next More

1. Fix bug in EDIT$() function such that LEN(EDIT$(...)) returned the length prior to the edit operation.

 

2. (WINDOWS) Fix bug in ISAMPLUS handling of B,3 keys. (High byte was not being evaluated properly, screwing up key order if key value was greater than 64K.)

 

3. XCALL MIAMEX,87,CH (where CH is an open output file channel, or 0 for terminal output) turns off file buffering on that channel. This is bad for performance, but may be useful in some specialized situations, such as outputting directly to a serial device or perhaps the screen. In the latter case (channel 0), under UNIX output is typically not flushed to the screen until a TAB(-1,x) or CR or LF is encountered. After XCALL MIAMEX,87,0 is executed, characters would be flushed to the screen immediately, decreasing performance but possibly improving the aesthetics of some kinds of dynamic screen displays. In general, we recommend using TAB(-1,254) to force a screen update in those places that you really need it since XCALL MIAMEX,87,0 is permanent and irreversible for the duration of your A-Shell session.

 

4. XCALL MIAMEX,88,CH (where CH is an open output file channel) flushes the buffer of the specified file. This can be useful when writing to a specialized serial device, since otherwise the device would not see your output until you send a line terminator. Note that the XCALL MIAMEX,89,0 is equivalent to TAB(-1,254), either one forcing the screen buffer to be flushed. This might be useful for certain kinds of dynamic displays such as "lifesigns."

 

5. CALL MIAMEX,89,CH,STATUS{,RECVAR'ADR}{,STATSVAR'ADR} added to permit a subroutine written in Basic (a.k.a. "SBX routine") to read and write to Random & ISAM files that were opened by the calling program. See the next item below for more details.

 

6. IMPORTANT COMPATIBILITY CHANGE IN SBX SUBROUTINE BEHAVIOR: External subroutines written in Basic (a.k.a. "SBX routines") now share open files with their calling programs. Thus if you have written any such SBX routines that open files, you must modify them to eliminate the possibility of a file channel conflict between them and the programs which call them. One approach to this is to just adopt a standard to use high channel numbers, perhaps > 60000 only in subroutines. A more sophisticated technique would be to make any temporary file channels used by SBX routines variable, checking to make sure that the channel is not in use with the EOF() function, e.g.:

 

 ! Open a temporary file, scanning for an unused channel #        TMPCH = 60000        ! start with a suitably high number        DO WHILE EOF(TMPCH) # -1         TMPCH = TMPCH + 1        LOOP

 

This and many other aspects of writing external subroutines in Basic is covered in great detail in the A-Shell Tech Note 1002b (atn1002b.pdf) which can be found on our Support web page.

 

7. AMOS.SBR and *.SBX subroutines will now use the parent's memory partition if there is sufficient free space. (The default partition size for such routines is 360K unless it is specified in the optional second argument to the MEMORY= parameter in the MIAME.INI.) The main advantage of using the parent's memory is speed, reducing the typical calling overhead (of a few milliseconds) by 90%, which might be significant for small SBX routines that are called frequently. (See the A-Shell Tech Note 1002 Rev B00 for more details, as mentioned above.)

 

8. Fix a serious bug in the Global DO parameter system that affected string arguments that were not mapped at the same size when retrieving them as when they were set.