963.9.1 GUI
AUI_CONTROL opcode 2 (change) now supports an additional cstate flag MBST_POS (&h10000, or 65536 decimal) which causes the position and size of the specified control to be updated.
963.9.2 XTREE
The XTRCTL XROW field is now updated (and returned) in virtually all cases. Previously, it was only updated if the tree was editable or contained a popup menu.
963.8.1 XTREE
Further fix to XTREE problem of columns with no explicitly defined width getting no width at all.
963.8.2 XTREE
New column type U may be added to an editable text column (E) to cause the column to only be updatable by the application. In other words, editable but not-editable. The only point of this would be for columns where you wanted to automatically calculate and update some information each time you re-entered the tree, without having to go back to opcode 0 to load all of the data. (When re-entering trees with editable cells using opcode 4, only the cells corresponding to the fields in the ANSWER array are updated.)
963.7.1 IMAGE
Fix a problem in which images in dialogs would not always get displays on top of other items in the dialog.
963.6.1 Linux
Improve way that XCALL XTCKI (and similar functions such as GETKEY(-2) and XCALL GET when only checking to see if a character exists) works so that a null byte waiting to be input will be treated as any other. This already worked under Windows, but still does not work properly under AIX.
963.6.2 XTREE
Fix a rather serious problem in which columns would disappear when using opcode 4 (reselect) without using the XTF_REDRAW flag.
963.5.1
%env% variable expansion under UNIX is now case insensitive, as it has always been under Windows. This should clear up some confusion situations, including one where %miame% got evaluated as equivalent to the miame.ini filespec rather than the miame directory (while %MIAME% worked as expected).
963.5.2 MIAMEX 163
Add a new subroutine MIAMEX 163 to change the flags for a memory module:
xcall MIAMEX, MX_SETMEMFLAGS, idx, flags
Parameters
Name |
Dir |
Type |
Description |
---|---|---|---|
idx |
in |
num |
should be set to 0 to reference the memory module for the currently running program or subroutine, or else it can specify the module previous located in a call to MIAMEX,MX_USRMAP (107) |
flags |
in |
num |
are the new flags (overriding the previous ones). If you just want to turn on or off a particular flag but leave existing flags alone, you should first retrieve the existing flags using the MX_USRMAP call. |
Note that if you want to use this call within an SBX to cause the SBX to be deleted from memory on exit (instead of being retained as part of the normal caching scheme), then set FLAGS = USRMEM_INUSE (1). If you don't have that flag set, the module could be deleted by a subsequent memory operation even while the program is running, which would be bad.
963.5.3 ATE
FTP transfers now prompt for login information if the transfer fails because of a bad login. This used to work for transfers explicitly initiated by TAB(-10,22) or the ZTERM ESC sequence, but was broken when the ATSYNC feature was introduced. Now it works in all cases, including XTEXT file transfers.
963.5.4 Windows GUI
Fix a problem in the debug/trace window in which output strings containing "%" would end up displaying garbage. (This was just a display problem, but confused efforts at debugging.)
963.5.5 Windows GUI
Fix an issue with use of MX_AUTOPARENT so that it can be used to give a modeless dialog the same automatic parent feature that a modal dialog would get.
Background: normal modal dialogs effectively become the automatic parent of any subsequent controls that do not specify a parent, but this is not true for modeless dialogs (which might be used for auxiliary purposes like a status window which would not be sensible to make the automatic parent.) However, if you are creating a dialog with MBF_MODELESS+MBF_SYSMENU so that the dialog can be minimized, but are otherwise treating it as if it were modeless, then use the MIAMEX,MX_AUTOPARENT call after creating the dialog so that subsequent controls become part of that dialog by default.
Note that this is essential if the dialog contains images created with AUI_IMAGE, since that call does not have an option to set the parent ID. (The image would automatically be assigned to the current modal dialog, but if the current dialog is modeless, it would be assigned to the a previous modal dialog or the main window.)
963.5.6 GUI
CTRL+SHIFT+DOUBLE-MIDDLE-CLICK can be used as an alternative to CTRL+SHIFT+DOUBLE-RIGHT-CLICK to bring up the GUI debug options dialog. This is handy when there is a context menu defined, since that triggers on the first right-click, interfering with the ability to enter a double-right-click.
963.5.7 ATE
Fix a problem in which certain startup error message dialogs would be empty.
963.5.8 ATE
Fix a problem with failing to look for icons and bitmaps in the local ATECACHE and ATEPERMCACHE directories.
963.4.1 GUI
Support a new option on the Misc. Settings dialog to define a special background color to be applied to INFLD edit controls when they are active. The theory is that by defining a light color that is nonetheless distinguishable from the standard white, it will be easier for users to detect which edit field is active. Note that the effect only works for INFLD controls that are based on the standard Windows edit control (i.e. includes combo boxes and up-down controls, but not checkboxes, radio buttons, or date/time controls.)
963.3.1
Support %env% variables in specifiers passed to MIAMEX,MX_SHELLEX, help filespecs with MDF files.
963.3.2
Wallpaper and AVI files will now be located in the %ATECACHE% or %ATEPERMCACHE% directory if not in the specified directory.
963.3.3
Clean up memory corruption loophole in processing of partial input (:P) in DO files.
963.3.4
Support MIAMEX,MX_GETREG under ATE.
963.1.1 XTEXT
XTEXT now supports an option to make the Save icon on the toolbar act like "Save As" (i.e. display a dialog to allow you to choose a filename and location) rather than just "Save". To active this option, in the txc'fmapctl field, clear bit 3 (corresponding to the Save command, which is equivalent to F3) and set bit 19 (corresponding to the Save-As command, or Shift-F3). For example, if you previously had txc'fmapctl = &h000000FF (i.e. send all the functions corresponding to F1-F8 to the control), you would change this to &h000400EF to force the Save button to act like Save-As. Note that this would not affect the keyboard commands F3 and Shift-F3, which would continue to distinguish between Save and Save-As.
963.1.2 TCKI
Add new subroutine to check if an input character is available without inputting it:
XCALL TCKI,FLAG
Where FLAG is a numeric type, which returns 0 if no character is available, else 1 if 1 or more characters are available.
963.0.1
Implement a new message window mechanism to make it easier to output debugging/tracing/status information without interfering with the GUI screen context.
Using the Message Window
The message window consists of a popup-dialog, initially positioned in the upper right corner of the screen, and filled with a multi-line text control, scrollable in both directions.
The user can move, resize, minimize or close the dialog using the typical mouse operations, without affecting the application. A right-click context menu is also supported, with the following options:
Select All
Clear Selections
Copy
Clear Messages
Properties
The first two options select or unselect all of the messages, which is currently only of relevance to the third option, which copies the selected messages to the clipboard (from which they can be pasted into an email message or notepad.) The fourth option (clear messages) deletes all of the messages from display (freeing up memory, clutter, etc.) You can also close and re-open the dialog to get the same effect.
The last option (Properties) pops up another dialog containing checkboxes corresponding to the various TRACE options in the miame.ini (or the SET.LIT TRACE options). At the top of the dialog is a master checkbox which controls whether any of the system trace messages appear in the on-screen debug dialog. When the dialog is launched manually, by default the system trace option is set, in which case the display can be considered just a slightly more convenient version of the information also being sent to the ashlog.log file. When the message window is opened under program control, the system trace option defaults to off, since the likelihood there is that the program is going to control the information sent to the message window.
If the system trace option is set, the remaining checkboxes allow you to turn trace options on and off for immediate effect, rather than having to set them globally in the MIAME.INI or from the dot prompt (thus making it easier to turn on a lot of traces for a very short period in order to investigate something within a complex program). Another advantage of the trace window vs. the ashlog.log is that it only contains messages for the current instance of A-Shell.
Opening the Message Window
To manually open the message window, use CTRL+SHIFT+DOUBLE-RIGHT-CLICK, then click the "Show Message Window" button.
To programmatically open the message window, use the two new sets of A-Shell BASIC statements that have been implemented in the compiler (requiring /RC or /X:2):
DEBUG.OPEN <title>
DEBUG.PRINT <msg>
DEBUG.PAUSE <msg>
DEBUG.CLOSE
TRACE.OPEN <title>
TRACE.PRINT <msg>
TRACE.PAUSE <msg>
TRACE.CLOSE
The DEBUG and TRACE statements are equivalent, except that the DEBUG statements have no effect unless the system DEBUG flag is set (via SET DEBUG).
The xxxx.OPEN statements are also optional, and mainly serve to allow you to set the title on the message window. The xxxxx.PRINT statements will automatically open the message window if necessary.
The <msg> and <title> arguments are typical string expressions, except that the <msg> expression may start with zero or more of the following special control variables:
$# (displays the running message count as a message id #)
$T (displays the time in HH:MM:SS format)
$P (displays the program name in brackets, e.g. <MYPROG>)
For example, the following statement
DEBUG.PRINT "$T $P The value of X is: " + X
would appear something like:
11:25:01 <MYPROG> The value of X is: 25
Note that the first token of the message (space delimited) that does not start with $ cancels scanning for $T and $P and $#.
The xxxx.PAUSE statements are equivalent to the xxxxx.PRINT statements except that they output an additional message to the message window:
<Application paused - Double-click here to resume>
As suggested by the message, the application is then suspended while waiting for the user to double-click the message window. This is intended as alternative to the usual practice of display message boxes which require a click on the OK button to proceed. Note: CTRL+C will abort the pause and pass the CTRL+C to the program.
The actual wording of that message and the acknowledgement message when the double-click is received may be customized via the strings 005,002 and 005,003 in SYS:SYSMSG.xxx.
When the DEBUG.xxxx or TRACE.xxxx statements are executed on a server whose client is ATE, the message is forwarded to the ATE client to display. If the client is not ATE, the message is output to the standard ashlog.log.
EVTWIN.SBR
For maximum flexibility, the DEBUG.xxx and TRACE.xxx statements are actually compiled as:
xcall EVTWIN, op, string {,optional args}
where OP is made up of the following parts:
Value |
Meaning |
---|---|
&h0001 |
Open |
&h0002 |
Print (or pause) |
&h0003 |
Close |
&h0100 |
Debug (versus trace) |
&h0200 |
Pause (wait for double-click) |
EVTWIN.SBR is included in A-Shell, but if you don't like the way it works, you could theoretically replace it by using an ALIAS and supplying your own SBX. Also, under AMOS, or versions of A-Shell prior to 4.9.963, if you want to be able to run programs containing such statements and compiled with /RC, you would need to supply a dummy EVTWIN.SBR (so that the statements had no effect), or if you are really ambitious, create one that does something useful. (Note that the simplest null SBX would be a program containing just an END statement, with the RUN renamed to SBX.)
963.0.2 VUE
The VUE function to insert edit number (^S,E) no longer interferes with the current search context.
963.0.3 xcall NUMCHK
New subroutine to check a string to see if contains valid numeric characters only, and possibly that it is of a certain length.
xcall NUMCHK, string {,len {,rc}}
Parameters
string [in/out]
the string to check. string is stripped of leading and trailing spaces and tabs and returned that way, regardless of whether valid.
len (numeric) [in] optional
If specified, stripped string length must match.
rc (floating point) [out] optional
optional return value specifying okay (0), or that string contains invalid characters or is not of len length. Note that NUMCHK may be passed to the XFUNC() function, in which case rc isn't really relevant since the function itself returns the same value.
963.0.4 xcall RSPCHK
Add new subroutine that checks a string to determine if it contains unprintable characters, which are defined as those whose ASCII values are less than 32 or are between 127 and 160 inclusive.
xcall RSPCHK, string {,rc}
Parameters
string [in]
the string to check. string is stripped of leading and trailing spaces and tabs and returned that way, regardless of whether valid.
rc (floating point) [out] optional
optional return value specifying okay (0) or the position of the first unprintable character in string. Note that RXPCHK may be passed to the XFUNC() function, in which case rc isn't really relevant since the function itself returns the same value.
963.0.5 xcall GET
GET.SBR may now be used to check if a character is available without waiting and without actually inputting the character, by setting bytes’requested and timeout to zero. (Previously, this would have waited indefinitely until a character was available.) This is equivalent to GETKEY(-2).
Summary Table
963.9.1 |
Opcode 2 (change) now supports an additional cstate flag which causes the position and size of the control to be updated. |
GUI |
963.9.2 |
The XTRCTL XROW field is now updated and returned in all cases. |
GUI |
963.8.1 |
Further fix to problem of columns with no explicitly defined width getting no width at all. |
GUI |
963.8.2 |
New column type U may be added to an editable text column (E) to cause the column to only be updatable by the application. |
GUI |
963.7.1 |
Fix a problem in which images in dialogs would not always get displays on top of other items in the dialog. |
GUI |
963.6.1 |
Linux: Improve way that XCALL XTCKI and similar functions work so that a null byte waiting to be input will be treated as any other. |
|
963.6.2 |
Fix problem in which columns would disappear when using opcode 4 (reselect) without using the XTF_REDRAW flag. |
GUI |
963.5.1 |
UNIX: %env% variable expansion under UNIX is now case insensitive. |
Env Var |
963.5.2 |
Add a new subroutine MIAMEX 163 to change the flags for a memory module |
SBR |
963.5.3 |
FTP transfers now prompt for login information if the transfer fails because of a bad login. |
GUI |
963.5.4 |
Fix a problem in the debug/trace window in which output strings containing "%" would end up displaying garbage. |
GUI |
963.5.5 |
Fix an issue with this routine so that it can be used to give a modeless dialog the same automatic parent feature that a modal dialog would get. |
GUI |
963.5.6 |
CTRL+SHIFT+DOUBLE-MIDDLE-CLICK can be used to bring up the GUI debug options dialog. |
Debug |
963.5.7 |
Fix a problem in which certain startup error message dialogs would be empty. |
GUI |
963.5.8 |
Fix a problem with failing to look for icons and bitmaps in the local ATECACHE and ATEPERMCACHE directories. |
|
963.4.1 |
Add new option on the Misc. Settings dialog to define a special background color to be applied to INFLD edit controls. |
GUI |
963.3.1 |
Support %env% variables in specifiers passed to MIAMEX,MX_SHELLEX, help filespecs with MDF files. |
|
963.3.2 |
Wallpaper and AVI files will now be located in the %ATECACHE% or %ATEPERMCACHE% directory if not in the specified directory. |
|
963.3.3 |
Clean up memory corruption loophole in processing of partial input (:P) in DO files. |
DO files |
963.3.4 |
Support MIAMEX,MX_GETREG under ATE. |
SBR |
963.1.1 |
Now supports an option to make the Save icon on the toolbar act like "Save As" rather than just "Save." |
GUI |
963.1.2 |
Add new subroutine to check if an input character is available without inputting it. |
SBR |
963.0.1 |
Implement a new message window mechanism to make it easier to output debugging/tracing/status information without interfering with the GUI screen context. |
|
963.0.2 |
The VUE function to insert edit number (^S,E) no longer interferes with the current search context. |
VUE |
963.0.3 |
New subroutine checks a string to see if contains valid numeric characters only, and possibly that it is of a certain length. |
SBR |
963.0.4 |
New subroutine checks a string to determine if it contains unprintable characters. |
SBR |
963.0.5 |
GET.SBR may now be used to check if a character is available without waiting and without actually inputting the character, |
SBR |