TOOLBZ.SBR An Enhanced Replacement for TOOLBX.SBR By James A. Jarboe IV Most ESP xcalls (SBR's) are relatively small. They make extensive use of TOOLBX.SYS calls and therefore are usually only involved in the task of getting the arguments from the BASIC program, passing the call to TOOLBX.SYS and returning the results back to the BASIC program. When DMSI managed ESP and TOOLBX.SYS there was a concern with the growing number of ESP related xcalls (SBR's). To circumvent this and other concerns, such as adding more features for BASIC program users, TOOLBX.SBR was created. TOOLBX.SBR was one XCALL (SBR) with many offsets that could perform different functions. As more and more users were utilizing the power of ESP, more and more features were wanted. Most features that BASIC program users want, were already available in TOOLBX.SYS but were normally only accessible from an assembly language program using the TBX$????? calls. The basic subroutine, TOOLBX.SBR helped overcome this restriction to TOOLBX.SYS from a BASIC program. TOOLBX.SBR gave BASIC programs access to some essential TOOLBX calls enabling the user to perform special ESP functions from BASIC and enhance the performance of ESP screens in BASIC programs. The TOOLBZ.SBR basic subroutine (XCALL) provided on the AMUS Network is an enhanced and expanded version of TOOLBX.SBR that is currently released with ESP from Alpha Micro. It is 100% compatible with the three (3) current calls that Alpha Micro provides in TOOLBX.SBR, 100% compatible with the four (4) additional calls that was distributed from DMSI, and provides four (4) more new calls for a total of eleven (11) calls within one XCALL to TOOLBX.SYS from a Basic program. Since the calling format is essentially the same for all calls, only requiring different TBX$????? calls for particular functions, the current size of TOOLBZ.SBR is only 946 bytes and fits in 2 disk blocks. Not bad for eleven (11) xcalls. With the current release of ESP from Alpha Micro, the TOOLBX.SBR basic subroutine includes only three (3) offset calls. That version of the TOOLBX.SBR subroutine gives basic programs accessibility to a few of the TOOLBX.SYS calls. Those include the following: TBX'FLDCNT - Get ESP screen's Field count. TBX'GETOLH - Get a Field's on-line-help text. TBX'SQFLSZ - Get Sequential file size in bytes. In one of the last DMSI releases of ESP, the TOOLBX.SBR included access to a few more TOOLBX.SYS calls. The three above and the following. TBX'HIDFLD - Set a Field as HIDE or SHOW. TBX'SKPFLD - Set a Field as SKIP or ALLOW. TBX'SELFLD - Set a Field as SELECT or DESELECT mode. TBX'GETFLUF - Get a Field's user Flags. The TOOLBZ.SBR subroutine, provided on the AMUS Network includes and is compatible with all of the above TOOLBX.SYS calls plus gives you the following additional calls: TBX'GETPUI - Get a Field's Popup item value. TBX'SETPUI - Set a Field's Popup item value. TBX'GETFID - Get a Field number using Field's Permanent ID number. TBX'GETFPN - Get a Field Permanent ID number using Field number. One of the drawbacks of TOOLBX.SBR distributed with ESP from Alpha Micro, and the TOOLBX.SBR that was distributed from DMSI is lack of adequate documentation. While the following is not an extensive comprehensive documentation, it should provide enough information to successfully incorporate the usage of TOOLBZ.SBR into basic programs. The TOOLBZ.SBR can be renamed or copied to the file name TOOLBX.SBR if you so desire, and not loose any functionability with the currently released version of TOOLBX.SBR. Also, the BASIC include file, TOOLBZ.BSI is on the AMUS Network. This include file contains the relative offset call values that are used to access or call the various functions in TOOLBZ.SBR. The include file TOOLBZ.BSI also includes information for field flags, and provides flag values for the undocumented additional argument for the GTSCR.SBR xcall routine. The field usage flags that are used with the additional argument field in GTSCR.SBR is not a new enhancement. The additional argument field has been available with GTSCR.SBR for years. Only the documentation and flag values have been lacking. See TOOLBZ.BSI, available on the AMUS Network, for additional information about GTSCR.SBR. The basic include file TOOLBZ.BSI can be renamed or copied to the file name TOOLBX.BSI and still be compatible with the TOOLBX.BSI released with ESP from Alpha Micro. The TOOLBZ.SBR is one xcall with a number of offsets that perform the desired function. The calling format in a basic program for all desired functions is as follows: XCALL TOOLBZ, OFFSET, ARGUMENT, ARGUMENT, ARGUMENT Where: OFFSET = The desired function offset value as defined in TOOLBZ.BSI. ARGUMENT = The required argument as needed for the particular call. Following are the calling formats and functions available in TOOLBZ.SBR. TBX'FLDCNT - Get an ESP Screen's Field count. This call will return the number of fields that are in an ESP screen. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBZ, TBX'FLDCNT, SCREEN, FLDCNT Where: TBX'FLDCNT - Numeric value defined in TOOLBZ.BSI to process the TBX'FLDCNT call. SCREEN - The ESP Screen buffer to access. FLDCNT - Numeric value of the number of fields of the requested ESP SCREEN is returned to. TBX'GETOLH - Returns an ESP Screen's field on-line help text. This call will return the on-line text that is associated with the designated field. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBZ, TBX'GETOLH, SCREEN, FIELD, OLHTEXT$ Where: TBX'GETOLH - Numeric value defined in TOOLBZ.BSI to process the TBX'GETOLH call. SCREEN - The ESP Screen buffer to access. FIELD - The Field number to get the on-line help text from. OLHTEXT$ - String variable that the requested field's on-line help text is returned to. TBX'SQFLSZ - Returns the size of a sequential file. This call will return the size in bytes of a designated sequential file. Most often this call is used to find the size of an ESP screen to see if it will fit into the designated buffer before loading the ESP screen into the variable buffer using the FETCH.SBR xcall. It can also be used to find the size in bytes of any sequential file. Usage: xcall TOOLBZ, TBX'SQFLSZ, FILE$, FSIZE Where: TBX'SQFLSZ - Numeric value defined in TOOLBZ.BSI to process the TBX'SQFLSZ call. FILE$ - String name of the file to return the size of. FSIZE - Numeric field that the size of the sequential file is returned to. TBX'HIDFLD - HIDEs or SHOWs an ESP screen field. This call will set the HIDE or SHOW status of a designated ESP screen field. If the HIDE status is set then the designated field will be hidden from view. If the SHOW status is set then a hidden field will be shown. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'HIDFLD, SCREEN, FIELD, FLAG Where: TBX'HIDFLD - Numeric value defined in TOOLBZ.BSI to process the TBX'HIDFLD call. SCREEN - The ESP Screen buffer to access. FIELD - Numeric value that designates which field to HIDE or SHOW. FLAG - Numeric value to set to decide if this is to force a HIDE or SHOW function. HIDE = -1 or TRUE SHOW = 0 or NOT(TRUE) TBX'SKPFLD - SKIPs or ALLOWs an ESP screen field. This call will set the SKIP or ALLOW status of a designated ESP screen field. If the SKIP status is set then the designated field will not be allowed to be entered into. If the ALLOW status is set then a previously SKIPped field will be ALLOWed to be entered into. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'SKPFLD, SCREEN, FIELD, FLAG Where: TBX'SKPFLD - Numeric value defined in TOOLBZ.BSI to process the TBX'SKPFLD call. SCREEN - The ESP Screen buffer to access. FIELD - Numeric value that designates which field to SKIP or ALLOW. FLAG - Numeric value to set to decide if this is to force a SKIP or ALLOW function. SKIP = -1 or TRUE ALLOW = 0 or NOT(TRUE) TBX'SELFLD - Sets the Select or Deselect value for an ESP screen field. This call will set the SELECT or DESELECT status of a designated ESP screen field. If the SELECT status is set then the designated field will be marked as SELECTed (bright display). If the DESELECT status is set then the field will be DESELECted (dim display). The best way to describe this feature is to relate it to how selections are made in SEDIT. When editing a field in SEDIT and you are trying to figure the settings of say the "Field flags:", it is possible to Press the F9 function key that presents a window of possible field flag values to select from. The bright fields have the SELECT status set while the dim fields have the DESELECT status set. Pressing the SPACE bar will SELECT a Deselected field and DESELECT a selected field. This call presets the SELECT or DESELECT status before entering a selection screen. The information of whether a field has been selected or deselected can be obtained via the TBX'GETFLUF call. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'SELFLD, SCREEN, FIELD, FLAG Where: TBX'SELFLD - Numeric value defined in TOOLBZ.BSI to process the TBX'SELFLD call. SCREEN - The ESP Screen buffer to access. FIELD - Numeric value that designates which field to SELECT or DESELECT. FLAG - Numeric value to set to designated the field's SELECT or DESELECT Status. TBX'GETFLUF - Gets a field's user flag values. This call will return the current field usage flags. This call will return whether a field has status of HIDDEN, SKIPPED, or SELECTED. This call can return will return a single value or a logical sum of the current usage status of the designated field. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'GETFLUF, SCREEN, FIELD, FLAGS Where: TBX'SELFLD - Numeric value defined in TOOLBZ.BSI to process the TBX'SELFLD call. SCREEN - The ESP Screen buffer to access. FIELD - Numeric value that designates which field to get the Field User Flags from. FLAG - Returned Numeric value that designated the field's user status. Can be one of or a logical sum of the following values: FLUF'HIDE = 1 FLUF'SKIP = 2 FLUF'SELECT = 4 TBX'GETPUI - Gets an ESP screen's field POPUP item value. This call will get the current POPUP Item value of a designated field. No matter what text is associated with a POPUP item, the value of the first selection on the POP-up MENU selection is one, the second is two, the third is three and so on. This call will return the current POPUP item value. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'GETPUI, SCREEN, FIELD, VALUE Where: TBX'GETPUI - Numeric value defined in TOOLBZ.BSI to process the TBX'GETPUI call. SCREEN - The ESP Screen buffer to access. FIELD - Numeric value that designates which field to get the POPUP item value. VALUE - Numeric value of the designated field's current POPUP item. TBX'SETPUI - Sets an ESP screen's field POPUP item value. This call will set a POPUP Item value to a designated field. No matter what text is associated with a POPUP item the value of the first selection on the POP-up MENU selection is one, the second is two, the third is three and so on. This call can set the current POPUP item value so that the desired POP-UP text can be preset. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'SETPUI, SCREEN, FIELD, VALUE Where: TBX'SETPUI - Numeric value defined in TOOLBZ.BSI to process the TBX'SETPUI call. SCREEN - The ESP Screen buffer to access. FIELD - Numeric value that designates which field to set the POPUP item value. VALUE - Numeric value to set the POPUP item value of the designated field. TBX'GETFID - Gets a field number as referenced by the fields Permanent ID number. This call will return the current FIELD NUMBER by accessing the field's PERMANENT ID NUMBER. Each ESP field is assigned a PERMANENT ID number when it is created. This PERMANENT ID number is not modified until the field is deleted. The PERMANENT ID number is not to be confused with the ESP screen's field number. The field number is usually referred to as the entry sequence number. The PERMANENT ID can be displayed in SEDIT by setting the USRIMP READ SECURITY flag to 254. The PERMANENT ID number is displayed to the right of the Field number in SEDIT or the listing of an ESP screen that SEDIT creates with the /L option. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'GETFID, SCREEN, FLDID, FLDNUM Where: TBX'GETFID - Numeric value defined in TOOLBZ.BSI to process the TBX'GETFID call. SCREEN - The ESP Screen buffer to access. FLDID - Numeric value that contains the Permanent Field ID number that is to be accessed. FLDNUM - Returned Numeric value containing the Field number of the requested Permanent Field ID. TBX'GETFPN - Gets an ESP screen's field's Permanent ID number as referenced by the field's Field Number. This call will return the permanent ID number of an ESP field by accessing the field's FIELD NUMBER. The FIELD NUMBER is not to be confused with the field's PERMANENT ID NUMBER. Each ESP field is assigned a permanent ID number when it is created. This permanent ID number is not modified until the field is deleted. An ESP Screen's FIELD NUMBER is usually referred to as the entry sequence number. The permanent ID can be displayed in SEDIT by setting the USRIMP READ SECURITY flag to 254. The Permanent ID number is displayed to the right of the Field number in SEDIT or the listing of an ESP screen that SEDIT creates with the /L option. The ESP Screen must have been previously loaded using the xcall FETCH.SBR. Usage: xcall TOOLBX, TBX'GETFPN, SCREEN, FLDNUM, FLDID Where: TBX'GETFPN - Numeric value defined in TOOLBZ.BSI to process the TBX'GETFPN call. SCREEN - The ESP Screen buffer to access. FLDNUM - Numeric value that contains the Field number that is to be accessed. FLDID - Returned Numeric value containing the Permanent Field ID number of the requested field. Also available on the AMUS Network is SCROLL.BAS and SELFLD.BAS which gives specific examples of how to utilize some of the neat features available in TOOLBZ.SBR. Call up the AMUS Network and get your copy today!