Please enable JavaScript to view this site.

A-Shell Development History

854.1.1

(Windows) Fix problems with HELP button in standard message box routine (whether called by TAB(-10,17) or MSGBOX.SBX): After clicking on the HELP button, the window would was no longer responsive to some mouse activity, and hitting F1 when the message box was not present caused A-Shell to shut down. (F1 is treated by Windows as equivalent to clicking on a HELP button.)

854.1.2

(Linux) Workaround for a strange problem with rounding, in which (N.5 using "#####") would round DOWN when N was even. Bug appears to be in a certain Linux library routine; workaround involves coercing correct rounding by adjusting 16th significant decimal position.

854.1.3

Add new subroutine, STRTOK, to help in parsing strings:

XCALL STRTOK, OP, STRING, FDELIM, FLD1 {, RDELIM, FLD2, ...FLDn}

 

STRTOK parses the STRING variable according to the delimiters specified, and returns one or more fields in the FLD1...FLDn variables. You can call it once for each field (and change the field delimiter characters as you go), or have it return several parsed fields in one call, ending either when it hits a delimiter in the RDELIM field or runs out of STRING or of FLDx parameters.

OP (numeric variable) should be set to 0 for the initial call, and 1 for subsequent calls using the original STRING. (It will be updated automatically from 0 to 1 to make this easy.)

STRING (string) is the string to be parsed. Must be null terminated!

STRING will be modified by the routine, which will replace the delimiter characters with null bytes.

FDELIM (string) is a list of one or more field delimiter characters.

RDELIM (string) is a list of one or more "record" delimiter characters.

(The XCALL will terminate when it hits one of these, whereas it will keep going after each field delimiter until all the FLDx parameters are used up.) Param is irrelevant if you just want to get one field. Even in the case of multiple fields, you can set it to "". Note, however, that if specified, it will be returned updated with the actual last delimiter character processed (i.e. the one that terminated the xcall). This can be very useful when there are more than one possible delimiter, or when you want to determine whether you got a complete record or just ran out of FLDx parameters. If you don't care about record delimiters, then specify it as a literal "" (in which case it can't be updated) or remember to clear it prior to each XCALL STRTOK. (Otherwise, it will get updated to match the field delimiter. The XCALL should be smart enough to ignore record delimiters that are also field delimiters, but it could nonetheless lead to confusion.)

FLD1...FLDn (strings) will return the parsed fields or tokens from STRING, according to the specified delimiters.

854.2

(Windows) A stray cursor mark is no longer displayed when the mouse is used to set the focus on A-Shell after it had been in the background.

854.3

The SERIAL= line in the MIAME.INI file can now be replaced with an INCLUDE=<fspec> line, where <fspec> is the full native filespec of a file which contains SERIAL= as the first line. Note that it is still a requirement that this be the first line of the MIAME.INI. The idea of the new feature is to allow dealers to maintain a single MIAME.INI for different clients, storing the one thing that is unique, the SERIAL specification, in a separate file.

854.4

(Windows) Buttons and Menus can now specify "virtual keys" in a keyboard string, thus allowing a button or menu to act just like a function key. This was not possible in earlier versions of A-Shell. The syntax to embed a "virtual key" in the keyboard string is %VK_xxx%, where the list of possible VK_xxx strings is:

VK_BACK     (Backspace key)

VK_DECIMAL   (decimal point on numeric keypad)

VK_DELETE    (Delete key)

VK_DOWN     (Down arrow)

VK_END     (End key)

VK_HOME     (Home key)

VK_INSERT    (Insert key)

VK_LEFT     (Left arrow)

VK_NEXT     (Next Page or Page Down key)

VK_PRIOR    (Prev Page or Page Up key)

VK_RIGHT    (Right arrow)

VK_TAB     (Tab key)

VK_UP      (Up arrow)

VK_F1      (F1 key)

...       (and so on for F2 thru F16)

 

To specify SHIFT and/or CONTROL, a "^" and/or "s" can be inserted just after the underscore. For example "%VK_^sF12%" would indicate Control-Shift F12. (The s is the only lower case character used in this virtual key definition format.)

Note that your string can contain more than one virtual key in addition to normal characters. For example, "%VK_sF1%ab^x%VK_HOME%" would send to your keyboard Shift-F1, followed by "ab" followed by Control-x, followed by the HOME key.

854.5

The maximum number of modules which can be loaded into user memory per job has been increased from 32 to 96.

854.6

XCALL MIAMEX,31 (Get environment variable) now returns a null string if the specified variable is not defined. Previously, it did not return anything (i.e. did not update the VALUE parameter you passed), leading to confusion in some programs. Unfortunately, this "fix" had an adverse effect on several LITs which were depending on that behavior (see next item.)

854.7

Several LITs had to be updated due to item 8 above. The edit numbers were not changed, but an A was added. You can also identify these by the fact that VERSYS will show QDEF[36] (rather than [35]). For convenience, they are all bundled, together with MMAP.LIT, on the web site in LIT48A.ZIP:

ASTAT.LIT    2.2A(131)

CHAT.LIT    2.2A(118)

FORCE.LIT    1.0A(103)

JSTAT.LIT    1.0A(104)

KILL.LIT    2.2A(118)

LOCK.LIT    1.2A(105)

LOKUTL.LIT   2.2A(111)

QUIT.LIT    2.2A(102)

QUTL.LIT    2.2A(123)

SEND.LIT    2.2A(120)

SUBMIT.LIT   3.0A(133)

SYSTAT.LIT   2.2A(144)