!*! Updated on 15-Dec-92 at 11:56 PM by James A. Jarboe I V; edit time: 1:23:30 !*! Created on 15-Oct-91 at 1:16 AM by James A. Jarboe I V; edit time: 0:03:58 !**************************************************************************** ! ! SELFLD.BAS - Sample ESP program to test TOOLBZ.SBR xcall subroutines. ! !**************************************************************************** ! [101] 15-Dec-92 - updated comments and off to AMUS. ! [100] 15-Oct-90 by James A. Jarboe I V ! ! Sample program to show usage of: ! TOOLBZ.SBR - Available on AMUS Network. ! TOOLBZ.BSI - Available on AMUS Network. ! And ! Additional argument value on GTSCR.SBR ! ! This Program uses: ! SELFLD.SCR - Available on AMUS Network ! SELFL2.SCR - Available on AMUS Network ++include SYSSTD.BSI ! ESP standard values. ++include TOOLBZ.BSI ! TOOLBZ.SBR offsets and user flags. MAP1 SCREEN1$, S, 26, "SELFLD.SCR" MAP1 SCREEN2$, S, 26, "SELFL2.SCR" MAP1 SCREEN1, X, 3500 ! Main ESP screen buffer. MAP1 SCREEN2, X, 2500 ! SELFL2 screen buffer. MAP1 SC1'FLDCNT, F ! Screen 1 field count. MAP1 SC2'FLDCNT, F ! Screen 2 field count. MAP1 SC1'SCRSIZ, F ! Screen 1 size in bytes. MAP1 SC2'SCRSIZ, F ! Screen 2 size in bytes. MAP1 CHAR2, F ! Screen 2 Character value. MAP1 FIELD2, F ! Screen 2 Field number. MAP1 PREVSELECT, F ! Previous selection value. MAP1 SELVAL, F ! Select value. MAP1 A, F ! Misc MAP1 Z, F ! Misc MAP1 FFVAL(8), f ! Flag values to match second screen. ! The following are field selection flag values used with GTSCR's extended ! argument field. Usually GTSCR is called. ! ! XCALL GTSCR, SCREEN, CHAR, FIELD ! ! When using GTSCR as with an additional argument field you can designate ! some Field select options: ! ! XCALL GTSCR, SCREEN, CHAR, FIELD ,ESP'FLSSEL ! ! Field Select options. (Defined in TOOLBZ.BSI) ! !MAP1 ESP'FLSSEL, f, 6 ! Flag value for Select screen. !MAP1 ESP'FLSDEC, f, 6, 512*65536 ! Use filler character as edit filler. !MAP1 ESP'FLSSLA, f, 6, 1024*65536 ! Allow selection of ALL fields. !MAP1 ESP'FLSNEV, f, 6, 2048*65536 ! DON'T evaluate expressions. !MAP1 ESP'FLSNRF, f, 6, 4096*65536 ! DON'T print report only fields. !MAP1 ESP'FLSDSL, f, 6, 8192*65536 ! Disable selection during select mode. !MAP1 ESP'FLSSLM, f, 6, 16384*65536 ! Select mode enabled. !MAP1 ESP'FLSDBF, f, 6, 32768*65536 ! Display blanked field(s). ! Returned flag values for TBX'GETFLUF (Get Field User flags.) ! ! (Defined in TOOLBZ.BSI) ! !MAP1 FLUF'HIDE, F, 6, 1 ! Returned if field is hidden. !MAP1 FLUF'SKIP, F, 6, 2 ! Returned if field is skipped. !MAP1 FLUF'SELECT, F, 6, 4 ! Returned if field is Selected. ! Start of SELFLD program Example. ! SELFLD: ! Always properly init terminal. ! XCALL INITRM,"Testing TOOLBZ.SBR", "By James A. Jarboe IV" ! Fetch needed screens. ! XCALL FETCH, SCREEN1$, SCREEN1, X IF X goto BAD'SCREEN XCALL FETCH, SCREEN2$, SCREEN2, X IF X goto BAD'SCREEN ! Set up needed situation. ! CALL SET'MAIN'SCREEN ! Always properly open screens for windowing. ! XCALL OPNSCR, SCREEN1 FIELD = 1 CHAR = ESP'BEGLIN ! Main Screen loop ! GET'SCREEN: ! Set main screen to use the filler character "." to demonstrate. ! XCALL GTSCR, SCREEN1, CHAR, FIELD, ESP'FLSDEC+ASC(".") IF (CHAR AND 255)=ESP'MENU GOTO ALLDUN IF (CHAR AND 255)=ESP'EXECUTE GOTO ALLDUN IF (CHAR AND ESP'PREEDIT) THEN call DO'SELECT GOTO GET'SCREEN ! End of Processsing. ! ALLDUN: XCALL CLSSCR, SCREEN1 XCALL INITRM END ! Set up second screen for Space bar selection. ! DO'SELECT: ! Get Field value from main screen to set second screen select ! values accordingly. ! XCALL GETVAL, SCREEN1, 7, PREVSELECT ! Open Second screen properly. ! XCALL OPNSCR, SCREEN2 ! Set proper fields as selected or unselected. ! A = 2 ! Set first value to test for. FOR X = 1 to 8 ! First always make field as Deselected (Dim) ! XCALL TOOLBZ, TBX'SELFLD, SCREEN2, X, FALSE ! Get individual screen value using logical AND. ! Z = (PREVSELECT AND A) ! If we match flag value make field as Selected (Bright) ! IF Z > 0 XCALL TOOLBZ, TBX'SELFLD, SCREEN2, X, TRUE A=A*2 ! Bump to next bit. NEXT X ! Flags NOT set, so we will not: ! ESP'FLSSLA - Select all fields, (use only those that are NOT display only). ! ESP'FLSNEV - DON'T evaluate expressions. (We will evaluate any expressions). ! ESP'FLSNRF - DON'T print report only fields. (We will print report fields). ! ESP'FLSDSL - Disable selection during select mode. (We are enabling select). ! ! According to FLAG values set below, we will do: ! ESP'FLSDEC - Use default filler character (SPACE). ! ESP'FLSSLM - Enable Select mode. ! ESP'FLSDBF - Also display any blank fields. ESP'FLSSEL = ESP'FLSDEC OR ESP'FLSSLM OR ESP'FLSDBF ! Set display all fields in case we enter this screen more than once. ! CHAR2 = ESP'DAF ! Preset Display all fields. FIELD2 = 1 ! Always set first field. ! Select screen editing with added argument flag. ! EDIT'SELECT: ! **NOTE*** ! This is an example of the extra argument on GTSCR call ! that allows field selection flags. ! XCALL GTSCR, SCREEN2, CHAR2, FIELD2 ,ESP'FLSSEL ! If user presses menu on this screen make NO changes. ! IF (CHAR2 AND 255) =ESP'MENU goto CLOSE'1 ! If user presses EXECUTE then collect changes. ! IF (CHAR2 AND 255) = ESP'EXECUTE goto SET'CLOSE'1 GOTO EDIT'SELECT ! User pressed EXECUTE, they want the change. ! SET'CLOSE'1: ! Preclear previous selection flags. ! PREVSELECT = 0 ! First we see what they selected. ! FOR X = 1 to 8 ! Get field user flags. ! XCALL TOOLBZ, TBX'GETFLUF, SCREEN2, X, SELVAL ! If field was selected save selection value. ! IF (SELVAL AND FLUF'SELECT) = FLUF'SELECT then & PREVSELECT = PREVSELECT OR FFVAL(X) NEXT X ! Then we set the value in the first screen. ! XCALL SETVAL, SCREEN1, 7, PREVSELECT ! Always close screen properly. ! CLOSE'1: XCALL CLSSCR, SCREEN2 RETURN ! Set up the main SCREEN. ! SET'MAIN'SCREEN: ! Get sequential file size of screens. ! XCALL TOOLBZ, TBX'SQFLSZ, SCREEN1$, SC1'SCRSIZ XCALL TOOLBZ, TBX'SQFLSZ, SCREEN2$, SC2'SCRSIZ ! Get total field count of screens. ! XCALL TOOLBZ, TBX'FLDCNT, SCREEN1, SC1'FLDCNT XCALL TOOLBZ, TBX'FLDCNT, SCREEN2, SC2'FLDCNT ! Set wanted values in First screen. ! XCALL SETVAL, SCREEN1, 1, SCREEN1$, SC1'SCRSIZ, SC1'FLDCNT, & SCREEN2$, SC2'SCRSIZ, SC2'FLDCNT, 130 ! Set up appropriate values for selection. ! This could be set up any number of ways, but for simple ! testing this is appropriate. It could be gotten from the ! ESP screen. ! A = 2 FOR X = 1 to 8 FFVAL(X) = A A=A*2 NEXT X RETURN BAD'SCREEN: XCALL ERRDSP, "ESP Screen problem" END ++include ERRSBR END