1. (UNIX) Redesign QFLOCK.SYS MEM: implementation to use memory mapping instead of shared memory. This appears to have several advantages:
•More robust: shared memory attachments can fail under various circumstances, and when they do, A-Shell will think you are the first instance and will initialize the job table. Memory mapping, on the other hand, can also fail, but if it does, access simply reverts to normal file I/O, which does not conflict with existing memory-mapped access to the file.
•Simpler to understand and troubleshoot: there is no need for the ipcs and ipcrm utilities since the qflock.sys file appears and behaves as a normal disk file.
•It is slightly faster.
•There is no longer any need for the separate locking file qflock.lck.
•The MEM: mode is now compatible with the DISK: mode, meaning that you could even have a mixture of users accessing the qflock.sys via each mode. (Not sure why you would ever do this, but you could.)
WARNING: Although the logical format of the qflock.sys did not change, this new version of A-Shell will not recognize an existing shared memory implementation of qflock.sys. So don't launch this new version while there are existing users sharing the same A-Shell environment, or they will be zapped when the job table gets initialized.
2. Printer initialization files may now be relocated to the ersatz directory ASHCFG: in order to separate them from other kinds of INI files which may be in the SYS: account. As a further aid to being able to distinguish printer initialization files from other files, the extension has been changed to PQI (Print Queue Initialization) from INI. XCALL SPOOL, XCALL EZSPL, and PRINT.LIT will now use the following logic for locating the printer initialization file:
First, check for ASHCFG:<printer>.PQI. If found, use it. Else look in the old location of SYS:<printer>.INI
Thus this change should cause no compatibility issues for people who ignore it.
In the future, we may use this new ASHCFG: ersatz specification for other kinds of site-specific files. If you want to use the location for your own configuration files, it is recommended that you use an extension that is unique to your application so as to avoid conflict with other types of configuration files added in the future.
3. INFLD.SBR TYPE code "o" now enables primitive arithmetic in non-date numeric fields. This only makes sense in integer-style fields that do not support the use of the minus sign. Operation is identical to "date arithmetic" except that * (times) and / (divided by) are allowed in addition to + and -. Hitting any of these keys will clear the field display, allowing you enter the operand. When you hit "=" or ENTER, it will complete the operation, replacing the previous field contents with the result. To abort the operation, just enter any key besides a number or one of the arithmetic operators and it will redisplay the original field contents.
4. PLYJOB.SBR now returns the device, unit, and ppn information for jobs other than the caller (when the job number is specified.) (Previously in that mode it only return the job name and program.) It also now recognizes the end of the job table, allowing you to scan for all jobs without getting a spurious error when it hits the end. (The end is indicated by returning NULL in the job name or "PARTITION" field; other unused job entries are returned with the job name set to "%%%%%%").
5. MEMORY.LIT now implemented. Unlike AMOS version, you can actually use this to increase your current partition size, even while within a command file. (If you want to change your memory size within a program, use XCALL MIAMEX,113 as described under build 810.
6. (WINDOWS) New release of the imaging library, VIC32.DLL 5.40. Now includes a second library, VICTW32.DLL which supports TWAIN acquire (e.g. scanning). Both of these DLL's should be placed in the directory where ASHW32.EXE is loaded from.
7. IMAGE.SBR now supports three new opcodes:
•Acquire (scan) image:
XCALL IMAGE, 7, HANDLE, STATUS, FILESPEC {,COMPFACT {,APPNAME}}
•Select data source:
XCALL IMAGE, 8, HANDLE, STATUS {,SOURCENAME}
•Get TWAIN error code
XCALL IMAGE, 9, HANDLE, STATUS
HANDLE is not used (just here for conformity with other opcodes.)
STATUS returns 0 for success, else an error code like other opcodes.
FILESPEC is the name you want to save the acquired as. The extension you specify will determine the type, so it must be one of JPG, TIF, BMP or PCX (e.g. TEST.JPG or DSK9:TEST.BMP[33,55])
COMPFACT is a compression-related factor determine by the image type. For JPG, it ranges from 1-100, with 100 being maximum size and quality. (75 is the default and is generally considered the point where you start to be able to perceive the lost of quality.) For TIF, it is the compression type (0=none, 2=packbits, 3=Group3, 4=Group4, 5=CCITT Group3).
APPNAME is a descriptive title of your application which is passed to the TWAIN user interface module, which is supposed to display it (but may or may not.)
SOURCENAME may be used to specify the desired data source; if omitted or left blank, the user will be presented with a list of data sources to choose from. OPCODE 7 will launch the interface for the currently selected (or default) TWAIN Data Source. The user will normally have full control of all the possible settings as provided by the software that comes with the device. When the file is finally captured, control returns to the A-Shell application.
Note that the acquisition (scanning) of the image data is independent of the saving of the image file, so it is up to you to specify an image format (via the file extension) that is compatible with the type of scan. For example, PCX only supports 1 and 8 bit data, so a 24-bit scan will result in an error while attempting to save the file.
OPCODE 8 (select source) is needed only to change the data source. Once changed, the selection persists, even across reboots.
OPCODE 9 (get TWAIN error) only applies when the error code returned is 11, in which case the idea is to pass that error code to the subroutine and it will return a new, more specific TWAIN error. See the sample program for an example of this.
The IMAGE.BAS sample program (in DSK0:[7,376]) has been upgraded to demonstrate the new functions.
8. SUBMIT.LIT 3.0(132), SYSTAT.LIT 2,2(140), JSTAT.LIT 1.0(104) now properly handle PID's up to 8 digits and up to 1250 jobs.
9. (WINDOWS) Various licensing and node identification problems on W2000 servers have been fixed. ATS, WTS (Remote Desktop) and peer-to-peer workstation sessions are all now identified by their machine name or IP address in SYSTAT/C. And in all three cases, multiple sessions of the same type originating from the same workstation are now able to share a single node license (up to some reasonable limit, like 5 sessions per workstation.)