1. New MIAMEX function 118 allows you to get or set the current file position within a sequential file which is open for input or output.
XCALL MIAMEX, 118, CHAN, OP, POS
CHAN (numeric) must be set to the open file channel. OP (numeric) must be set to 0 to get the position or 1 to set it. POS (F,6) is the position (offset in bytes from the start of file). For the get operation, it is returned; for the set operation, you must set it before making the call. POS will be returned as -1 if there is an error in the operation.
2. A change has been made to the way FOR/NEXT loops get compiled when in AlphaBASIC PLUS mode (i.e. COMPLP, or /X:1, or /X:2) to fix an obscure problem with the EXIT statement. The fix does add a little overhead to the FOR/NEXT execution, but it is probably negligible in all but the extreme case (e.g. FOR I=1 TO 100000:NEXT I) but on the bright side it backward compatible will all previous runtimes.
3. MSBOXX.SBR now supports the BOX'FAO (Field Attributes Off) option completely. (Previously it turned off any field attributes at the leading edge of the box, but it failed to restart them on the trailing edge.)
4. PCKLST.SBR and INMEMO.SBR now work better on field terminals. First, by using the BOX'FAO logic, they both now handle the various display problems previously caused by popping a PCKLST or an INMEMO box (with MMO'SVA set) on top of an area of the screen which has field attributes on it. Second, PCKLST now automatically expands the box width to allow for the field attributes needed to turn the selection bar on and off.
5. PCKLST.SBR now handles hidden text (anything preceded by a backslash) more optimally than before. Previously, the hidden text didn't display, but the box width was set as if it did display. Now, if any hidden text is specified in the array mode, the box width is automatically trimmed from the array element size to the size needed to accommodate the largest entry (counting trailing blanks but not hidden text.) In file mode, the hidden text is simply ignored in the computation of box width. As an example, consider an array (or input file) which looks as follows:
Little Red Pills\#123-456-798
Fat yellow suppositories\#444-2342
Green ointment\#2222-4444
In this case, the box width would be set just wide enough to accommodate "Fat yellow suppositories". The hidden text would not display, but would be returned with the selection in the file mode. (In the array mode, the selection is returned as the array index.)
6. XCALL ERRMSG (with 0 or 1 parameter) now reports the last line number even when it is called deliberately by an application (i.e. not because of an actual BASIC error.) This may be useful in tracking down the location of logical application errors. (Also note that contrary to the documentation, when called with 0 or 1 parameters, the log file is BAS:BASERR.LOG, not OPR:ERRORS.DAT.)
7. (UNIX) Three new embedded terminal types, "am62cz", "am65z", and "am75z" act just like the standard versions except that they also support the extended variable row capability of ZTERM build 144+. (These are in addition to "am62az" and "wyse5z" which were added previously.)
If you have ZTERM build 144 or higher, you can take advantage of the variable row capability by setting your TERM identity to one of these "z" names (either manually, e.g., "set TERM=am62" or automatically, by setting the telnet identity field in the ZTERM emulator configuration dialog).
With SET.LIT 1.2(134) or higher, you can use the following syntax:
SET TERM HEIGHT ##
to change the number of display rows for all of these drivers.
SET TERM without any other arguments will display your terminal type and ZTERM version, if applicable.
You can also use PRINT TAB(-5,X) where X is the desired number of rows.
Note that the AM75 and AM65 drivers support 24 and 42 rows, but only the "z" versions support any number of rows from 1 to 50.
Also note that while you can change the number of display rows in the ZTERM emulator configuration dialog, it is better to do it via the SET TERM HEIGHT or PRINT TAB(-5,X) commands, since only those methods update the terminal parameters used by programs such as VUE, EZTYP, and your application, for that matter, to determine now many display rows are available. (BASIC applications can use XCALL TRMCHR to retrieve this information. See the sample utility, TRMCHR.BAS, in the [7,376] release account for an example of this.)
8. Updated copies of the function key translation tables for most of the terminals have been updated to support the SHIFT-keys mentioned above. Before overwriting any exiting IFX or VUX files, they will be archived with IFS and VUS extensions (in case you prefer your own customized versions of these files.)
9. VUE version 3.2(252) now supports commands to change the terminal height (if your terminal supports variable rows as described above). New Command Mode and INI.VUE commands:
TALL {N}
SHORT
TALL sets the terminal height to {N} rows (default 42). SHORT sets it back to the normal 24 rows.
For symmetry and completeness, we have now support the WIDE and NARROW commands in the INI.VUE file.
VUE.HLV[7,1] (which displays when you use the HELP command and the VUE command prompt) has been updated accordingly.
On modern high resolution screens, you will find that increasing the number of display rows and columns well beyond the typical 24 x 80 is now quite practical. (I added the TALL command to my standard INI.VUE used for program editing.)
10.EZTYP now supports variable rows. Actually it always supported them, provided you set the desired rows before calling it, but now you can switch back and forth between 24 and 42 row mode (if your driver supports it) using the Shift-Up Arrow and Shift-Down Arrow keys. The standard INFLD function key translation tables have been updated to support these keys, but if yours haven't, you can update them (using FIXTRN.LIT) to send the following codes: (^G is entered as Control-G).
Key Sequence |
Translation |
Meaning |
---|---|---|
Shift-TAB |
^G# |
-35 |
Shift-Left Arrow |
^G$ |
-36 |
Shift-Up Arrow |
^G% |
-37 |
Shift-Right Arrow |
^G& |
-38 |
Shift-Down Arrow |
^G' |
-39 |
Note that a new message (012,045) has been added to SYS:SBRMSG.xxx which is used in the EZTYP help display to document the Shift-Up/Down command.
If your terminal driver/emulator does not support shifted arrows (like wyse50), then you can also use the "T" character as an alternative.
11.Another minor EZTYP enhancement: The left and right arrow keys can now be used to both switch between 80/132 columns AND to shift the margin (in case you need to view beyond the number of columns displayed.) The way it works is that the right arrow initially switches to 132 column mode, and after that it shifts the margin over by 4 each time you hit it. Conversely, the left arrow shifts the margin back if not at the left margin, but once you are at the left margin, it switches you to 80 column mode.
12.MATCH.SBR no longer converts the RANGE string to internal format if the VALUE string is blank. This prevents a problem where you set up the RANGE for date matching, but your first VALUE passed is blank. Since it is the format of VALUE that is used to determine whether to convert RANGE into internal date format or internal string format, it was previously guessing that a blank VALUE was not a date and thus converted the RANGE format incorrectly. The incorrect internal RANGE was then being used for subsequent matches, causing it to not match dates correctly. By delaying the decision on how to convert RANGE until we have a non-blank VALUE, this problem is eliminated.
13.(UNIX) The ashell.log file has been renamed to ashlog.log and it is now automatically renamed to ashlog.001 when it exceeds 3MB. A sequence of 4 archived copies is kept (ashlog.001 thru ashlog.004, with ashlog.004 being the oldest.) This eliminates a problem in which the log file could grow to an absurd size.
14.(UNIX) The same logic just described for the ashell log file is now also applied to OPR:SPOOL.LOG.
15.(UNIX) JOBTBL.SYS is now memory mapped along with QFLOCK.SYS if the "MEM:" option is used in the QUEUE= statement of MIAME.INI. Previously, that option only affected QFLOCK.SYS, while JOBTBL.SYS was always kept as a normal disk file. The advantage of memory mapping JOBTBL.SYS is not nearly as great as for QFLOCK.SYS, because it doesn't get that much activity, but in a very large system, this could reduce the system overhead by a worthwhile amount.
16.(UNIX) A new MIAME.INI option, OPTIONS=NOJOBMAP, has been added to disable the memory mapping of JOBTBL.SYS just described above. (This might be useful in some kind of troubleshooting situation.)
17.(UNIX) TRACE=QOPEN has been cleaned up to only output to the log, and enhanced to include the inode and memory mapping details of QFLOCK.SYS and JOBTBL.SYS.
18.FLOCK efficiency relating to waiting on a lock has been improved considerably. This would probably only be a significant factor, though, on systems with significant numbers of FLOCK records and where it is common to have to wait for a lock.
19.CIM.SBR (Triad catalog) opcode 10 has been fixed; it was calling the wrong Triad library routine.