! VUE.BAS how to use Dave Pallman's VUE.SBR
! by James A. Jarboe IV, GR/AM  (409) 295-5767
! 02/20/86
!
! VUE.SBR by Dave Pallman allows editing of a string with VUE-like editing.
! This is a simple demo of how I use it
! Hope it helps someone else
!
!        XCALL VUE,ST,ROWS,COLUMNS,LEFTROW,LEFTCOL
!
!  ST       =  variable string to input or change
!              I map it as ARRAY(?) to make display easier
!              although just using the ST as the variable will work just as well
! ROWS      =  the maximum amount of rows you choose to use
! COLUMNS   =  the maximum amount of columns you choose to use
! START'ROW =  the row that you wish the editing to begin on.
!              This is actually the row minus 1. In other words if you
!              want the display to start on row 5 then make START'ROW = 4
!
! START'COL =  the column that you wish the editing to begin on.
!              This is actually the column minus 1. In other words if you
!              want the display to start on column 8 then make START'COL = 7
!
! ESCAPE    : the escape key gets you out of the VUE.SBR editing mode and
!           : returns the string ST with the changes you have made
!
! EXTRA  -   Using START'ROW, START'COL, ROWS, and COLUMNS for your ? TAB
!            Statements makes movement of the editing area easier than changing
!            everything. I.E. try changing the value of START'ROW to 5 and
!            START'COL to 8 and everything moves accordingly
!


MAP1 ST                 ! make string length as long as you want
   MAP2 ARRAY(4),S,64  ! easier way to get at display of ST
                       ! this string is 256 bytes long
MAP1 ROWS,F,6,4         ! maximum number of rows you want to have
MAP1 COLUMNS,F,6,64     ! maximum number of columns per row that you want
MAP1 START'ROW,F,6,3    ! what screen row you want to start display at-1
MAP1 START'COL,F,6,3    ! what screen col you want to start display at-1
MAP1 DASH,S,66          ! horizontal border

       FOR I = 1 TO 2
       DASH=DASH+"---------------------------------"
       NEXT I

CLEAR'SCREEN:
       ? tab(-1,0);

PRINT'BORDER:
       ! print borders around editing area and show user some columns and rows
       ! for reference

       ? TAB(START'ROW,START'COL);DASH
       FOR I=1 TO 4
               ? TAB(START'ROW+I,START'COL);"|";
               ? TAB(START'ROW+I,START'COL+COLUMNS+1);"|";
       NEXT I
       ? TAB(START'ROW+ROWS+1,START'COL);DASH

       ? TAB(1,1);"1234567890";! lets see what column is where
       ? "    column positions"

               FOR I=2 TO 9    ! lets see what row is where
                       ? TAB(I,1);I USING "#"
               NEXT I

LOAD'STRING:
! could be a read statement or could be nothing
ST = "THIS IS THE STRING ST. IT CAN BE INPUT BY PROGRAM OR BY &
READING A SEQUENTIAL OR RANDOM FILE AND INPUTTING THE DATA &
TO THE STRINGST. MAKE ANY CHANGES YOU WANT, HIT THE <ESC> &
AND I WILL SHOW YOUTHE CHANGES YOU MADE."

PRINT'STRING:
! display data to edit using VUE.SBR
    FOR I= 1 TO 4
       ? TAB(START'ROW+I,START'COL+1);ARRAY(I);
    NEXT I

SHOW'TABLE:
! what you can do in VUE.SBR
       ? TAB(10,1);
       ? "        These are the useable control codes in vue.sbr"
       ?
       ? "            ^H (BACKSPACE, LEFT-ARROW)"
       ? "            ^L (RIGHT ARROW)"
       ? "            ^K (UP-ARROW)"
       ? "            ^J (LINE FEED, DOWN-ARROW)"
       ? "            ^M (RETURN)"
       ? "            ^U (BEGINNING OF LINE)"
       ? "            ^N (END OF LINE)"
       ? "            ^Y (ERASE FROM CURSOR TO END OF LINE"
       ? "            <ESC>  GET OUT OF VUE.SBR OR BACK TO PROGRAM"

VUE:
! here it is the infamous VUE.SBR

 XCALL VUE, ST,ROWS,COLUMNS,START'ROW,START'COL


RESHOW'DATA:
! reprint string just to show that vue.sbr does change the string

           FOR I=1 TO 4
               ? TAB(START'ROW+I,START'COL+1);ARRAY(I);
           NEXT I

DO'AGAIN:

       ? TAB(23,1);
       INPUT "Would you like to re-edit the string ?",Y$
       ? tab(23,1);TAB(-1,10);
       IF Y$[1;1]="Y" THEN GOTO VUE
       ? TAB(-1,0);"Hope this helps someone !!!!"
END