home *** CD-ROM | disk | FTP | other *** search
/ Windoware / WINDOWARE_1_6.iso / source / pwez41 / demo.bas < prev    next >
BASIC Source File  |  1991-02-01  |  53KB  |  1,371 lines

  1. '----------------------------------------------------------------------------
  2. '-------------------------- Windows R-E-Z Demonstration ---------------------
  3. '-------------------------- CONNECT Software --------------------------------
  4. '-------------------------- Feb. 01, 1991 -----------------------------------
  5. '----------------------------------------------------------------------------
  6. '-------------------------- Copyright 1988,1989,1990,1991 -------------------
  7. '-------------------------- By: CONNECT Software ----------------------------
  8. '-------------------------- All rights reserved -----------------------------
  9. '----------------------------------------------------------------------------
  10. '
  11. '            **** VER 4.10 ------- LAST UPDATE ------- 02/01/1991 ****
  12. '
  13. '***************************************************************************
  14. '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES:    ****
  15. '***************************************************************************
  16. '**** For QB4.+ unenhanced version use QB4UNEN.QLB                      ****
  17. '**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB                  ****
  18. '**** For QB4.+ enhanced version use QB4ALL.QLB or QB4NER.QLB           ****
  19. '**** For BASIC 7.0 enhanced version use PDSALL70.QLB or PDSNER70.QLB   ****
  20. '**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB   ****
  21. '**** Load QB or QBX with the /L option using the correct library       ****
  22. '***************************************************************************
  23.  
  24. DECLARE SUB LINEW (ROW%, TYP%)
  25. DECLARE SUB CHNGPULL (bar%, WIND%, ATTR%)
  26. DECLARE SUB GETANS (TEXT$, CHOICE$, ANS$, TR%, LC%, ATTR%, BORDER%)
  27. DECLARE SUB FINDPATH (path$)
  28. DECLARE SUB FINDDIR (path$, TYPE$, F%)
  29. DECLARE SUB DISKSIZE (DISK%, DISKSZE&, FREESPACE&)
  30. DECLARE SUB CLRWIND ()
  31. DECLARE SUB DOSOUND ()
  32. DECLARE SUB NEWCOLOR (ATTR%)
  33. DECLARE SUB PRINTW (TEXT$, TR%, LC%)
  34. DECLARE SUB INPTWIND (PROMPT$, CODE$, TR%, LC%, WD%, ATTR%, RESTRICT$, RTRN$, BRD%)
  35. DECLARE SUB MULTINPT (SCRN%, FLD%, EXIT$, AUTOEXIT%, RTRN$())
  36. DECLARE SUB SETINPT (SCRN%, WD%, EXIT$, INPT%(), INPT$(), BACKCOL%)
  37. DECLARE SUB DELWIND (W%)
  38. DECLARE SUB PULLDOWN (A%, B%, ATTR%, HATTR%, BORDER%)
  39. DECLARE SUB SETPULL (bar$, PWIND$())
  40. DECLARE SUB SCRLWIND (LIST$(), ENTRIES%, RTRN$, RTRN%, HIATTR%)
  41. DECLARE SUB RSTRWIND (W%, DELFLAG%)
  42. DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
  43. DECLARE SUB SETWIND (FAST%, SND%, SHADCOL%, NOHI%, DOT%, SCROLLARROW%)
  44. DECLARE SUB SAVEWIND (W%, TR%, LC%, WD%, NR%)
  45. DECLARE FUNCTION MARKED% (RTRN$, START%)
  46. DECLARE SUB GETDISK (DR%)
  47. DECLARE SUB WINDSTATUS ()
  48. DECLARE SUB CHNGWIND (W%)
  49. DECLARE SUB MOUSEON (ONFLAF%)
  50. DECLARE FUNCTION KEYMOUSE%
  51. DECLARE SUB MBUTTONS (LBUTTON%, RBUTTON%)
  52.  
  53. '--------  MUST BE IN ANY MODULE USING "FINDDIR" DIRECTORY ROUTINE --------
  54. TYPE DIREC
  55.   size AS LONG              ' SIZE
  56.   date AS STRING * 10       ' DATE
  57.   TIME AS STRING * 6        ' TIME
  58.   ATTR AS INTEGER           ' ATTRIBUTE
  59. END TYPE
  60. COMMON SHARED /directory/ DIREC$(), DIRINFO() AS DIREC
  61. '---------------------------------------------------------------------------
  62. REALSTART:
  63. PREFLAG% = 1: A% = 15
  64. ON ERROR GOTO DISKERROR
  65.    CALL FINDPATH(path$)                    ' FIND PRESENT DISK AND  PATH
  66.    PREFLAG% = 0
  67. ON ERROR GOTO 0
  68. MOUSEON (1)                                ' TURN THE MOUSE ON
  69. WIDTH 80
  70. CLS
  71. '-------------------- SET DATA FOR MULTIPLE SCROLL WINDOWS ------------------
  72.          REDIM SRTRN1$(4), SRTRN2$(5), SRTRN3$(4), SRTRN4$(1), SRTRN5$(1)
  73.          D% = 6
  74.          REDIM SWIND%(D%), STR%(D%), SLC%(D%), SWID%(D%), SNR%(D%)
  75.          REDIM ST$(D%), SENTRIES%(D%)
  76.          FOR Y% = 1 TO 6                  ' 5 SCROLL WINDOWS + TITLES
  77.          READ SWIND%(Y%)
  78.          READ STR%(Y%)
  79.          READ SLC%(Y%)
  80.          READ SWID%(Y%)
  81.          READ SNR%(Y%)
  82.          READ SENTRIES%(Y%)                ' ENTRIES FOR EACH SCROLL WINDOW
  83.            FOR X% = 1 TO SENTRIES%(Y%)
  84.               SELECT CASE Y%
  85.                 CASE 1
  86.                   READ SRTRN1$(X%)
  87.                 CASE 2
  88.                   READ SRTRN2$(X%)
  89.                 CASE 3
  90.                   READ SRTRN3$(X%)
  91.                 CASE 4
  92.                   READ SRTRN4$(X%)
  93.                 CASE 5
  94.                   READ SRTRN5$(X%)
  95.                 CASE 6
  96.                   READ ST$(X%)
  97.                 CASE ELSE
  98.               END SELECT
  99.            NEXT
  100.          NEXT
  101.  
  102. ' DATA FOR EACH SCROLL WINDOW AND TITLES
  103. ' WINDOW#,TOPROW,LEFT COLUMN,WIDTH,ROWS,ENTRIES, ITEMS.......
  104. DATA 16,6,13,16,7,3,No Border,Single line,Double line
  105. DATA 17,6,33,16,9,5,No Shadow,Right/Bottom,Left/Bottom,Left/Top,Right/Top
  106. DATA 18,6,52,16,7,2, On Top Line,In Title Box
  107. DATA 19,15,15,14,3,1,"----OK----"
  108. DATA 20,15,52,14,3,1,"--CANCEL--"
  109. DATA 0,0,0,0,0,3,"@Border","@Shadow","@Title"
  110.  
  111. '--------------------- SET DATA FOR SCROLL WINDOW DEMO ----------------------
  112. DIM SCROLL$(20)                    ' READ DATA FOR SCROLL WINDOW DEMO
  113.  
  114. FOR X% = 1 TO 20                   '              "
  115.    READ SCROLL$(X%)                '              "
  116. NEXT                               '              "
  117.  
  118.                '***** DATA FOR SCROLL WINDOW DEMO *****
  119.  
  120. DATA This is a sample of a scroll window.
  121. DATA Us@e the  UP and DOWN  arrow keys to
  122. DATA scr@oll through the window or press
  123. DATA the d@ifferently colored letter to
  124. DATA to make@ a selection.  Press RETURN
  125. DATA or ENTER t@o return the selected
  126. DATA item if the s@croll window is a REG-
  127. DATA ULAR scroll win@dow.  If AUTO-EXIT is
  128. DATA ON the item will b@e returned auto-
  129. DATA matically provided t@he differently
  130. DATA colored letter of an i@tem was selec-
  131. DATA ted.  Pressing the END K@EY or HOME
  132. DATA KEY moves the scroll bar to t@he last
  133. DATA or first item in the list. With@ the
  134. DATA MARK option ON the "+" or "-" key@s
  135. DATA mark or unmark individual items i@n
  136. DATA the scroll window.  The PRINT@ key or
  137. DATA SPACE BAR  marks or unmark@s all
  138. DATA items.  Press ECS to retu@rn to the
  139. DATA pulldown menu@.
  140. '------------------ SET DATA FOR PULLDOWN WINDOWS -----------------------
  141.  
  142. bar$ = "Windows Input Print Directory Sound Color Order-Me"    ' SET PULLDOWN
  143. B% = 200                                                ' WINDOWS MENUBAR
  144. REDIM PWIND$(B%)                                        ' AND READ DATA
  145. TEMP% = 0                                               ' FOR PULLDOWN
  146. WHILE PWIND$(TEMP%) <> "ENDPULL"                        ' WINDOWS.
  147.   TEMP% = TEMP% + 1
  148.   READ PWIND$(TEMP%)
  149. WEND
  150.  
  151.                '***** DATA FOR PULLDOWN WINDOW DEMO *****
  152.  
  153. DATA Window Management System,-,Multiple S@croll windows. - Window Types,Regular Scroll window, Auto-exit Scroll window, Mark Scroll window,-,Get answer windows,-,Ex@it, ***
  154. DATA Multi-field input , Input window,***
  155. DATA Print in a window, Print in M@ultiple windows,-,Slow print ( Eliminates screen snow. ), Fast print,***
  156. DATA Directory routines,***
  157. DATA Beep,Click,No sound,***
  158. DATA Black and white,Color,No hi-intensity (Black & white),***
  159. DATA Make an order form,***
  160. DATA ENDPULL
  161.  
  162.  
  163. CALL SETPULL(bar$, PWIND$())                 ' SET UP PULLDOWN WINDOWS
  164. ERASE PWIND$                                 ' ERASE TEMPORARY ARRAY HOLD-
  165.                                              ' ING PULLDOWN WINDOW DATA.
  166.  
  167. '--------------- CALL SET UP ROUTINE FOR FIRST INPUT SCREEN -----------------
  168.  
  169. A% = 150: REDIM INPT%(A%)                ' INPT%() AND INPT$ HOLD DATA
  170. A% = 25: REDIM INPT$(A%)                 ' FOR FIELDS
  171.  
  172. Y% = 1: FLD% = 1
  173.  
  174. DO
  175.    READ INPT%(Y%)
  176.    IF INPT%(Y%) = 9999 THEN EXIT DO
  177.    Y% = Y% + 1
  178.    FOR X% = 1 TO 5
  179.       READ INPT%(Y%)
  180.       Y% = Y% + 1
  181.    NEXT
  182.       READ INPT$(FLD%)
  183.       FLD% = FLD% + 1
  184. LOOP
  185.  
  186. DATA 0,6,5,10,15,99,""
  187. DATA 10,8,5,10,15,99,""
  188. DATA 1,6,20,10,15,99,""
  189. DATA 2,6,35,10,15,99,""
  190.  
  191. DATA 30007,6,58,12,15,99,""
  192. DATA 30007,8,58,12,15,99,""
  193.  
  194. DATA 17,11,5,20,15,99,""
  195. DATA 27,11,31,20,15,99,""
  196. DATA 7,11,55,20,15,99,""
  197.  
  198. DATA 1017,16,22,1,15,99,"MF"
  199. DATA 1017,16,38,1,15,99,"YN"
  200.  
  201. DATA 1010,16,60,3,15,99,""
  202. DATA 1010,16,64,2,15,99,""
  203. DATA 1010,16,67,4,15,99,""
  204.  
  205. DATA 21000,21,23,6,15,99,""
  206. DATA 21000,21,38,6,15,99,""
  207. DATA 100,21,53,7,15,99,""
  208.  
  209. DATA 9999
  210.  
  211. CALL SETINPT(1, 80, "120", INPT%(), INPT$(), 0)  ' SET UP MULTI-INPUT SCREEN #1
  212. '----------------------------------------------------------------------------
  213.  
  214. DIM MRTRN1$(20), MRTRN2$(10)                   ' FOR MULTI-FIELD INPUT DEMO
  215. DIM COLCHOICE$(4), LOCHOICE$(4), LAN$(3), DISK$(2), VER$(10)
  216.  
  217. FAST% = 1         ' FAST PRINT
  218. SND% = 1          ' "CLICK" SOUND
  219. SHADCOL% = 7      ' BLACK/WHITE WINDOW SHADOWS
  220. NOHI% = 0         ' HI-INTENSITY ON
  221. DECPOINT% = 1
  222. SCROLLARROW% = 1
  223. GOSUB SETPARAMETERS
  224. '----------------------------- INTRODUCTION SCREEN --------------------------
  225.  
  226.  MAKEWIND 0, "", 2, 1, 80, 24, 112, 1
  227.  A$ = "WINDOWS R-E-Z ────── WINDOWS R-E-Z ────── WINDOWS R-E-Z ────── WINDOWS R-E-Z"
  228.  
  229.  FOR X% = 1 TO 21 STEP 2
  230.     PRINTW A$, X%, 2
  231.     PRINTW STRING$(76, 196), X% + 1, 2
  232.  NEXT
  233. INTRO:
  234.  
  235.  MAKEWIND 2, "@*** New for Version 4.10 ***", 3, 100, 65, 9, 15, 111
  236.  PRINTW "- Pulldown and scroll windows now respond to a MOUSE!", 1, 2
  237.  PRINTW "- Keyboard and mouse input routines.", 2, 2
  238.  PRINTW "- Fixed choice fields for multi-field input routine.", 3, 2
  239.  PRINTW "- Optional direction arrow for PULLDOWN and SCROLL windows.", 4, 2
  240.  PRINTW "- /Ea option useable with BASIC 7.0/7.1", 5, 2
  241. ONE:
  242.  GETANS "Color or Monochrome? (C/M)", "CM", ANS$, 12, 100, 143, 12
  243.  
  244.  IF ANS$ = CHR$(27) THEN GOTO ONE
  245.  IF ANS$ = "M" THEN
  246.    DEMOATTR% = 112
  247.      SHADCOL% = 7
  248.  ELSE
  249.      CALL CHNGPULL(6, 1, 0)
  250.      DEMOATTR% = 0
  251.      SHADCOL% = 8
  252.  END IF
  253.  GOSUB SETPARAMETERS
  254.  'RSTRWIND 1, 1
  255.  RSTRWIND 2, 1
  256. '----------------- SET DATA FOR SECOND MULTI-FIELD INPUT SCREEN -------------
  257.  
  258. PREMAIN.MENU:
  259.  RESTORE PREMAIN.MENU
  260.  A% = 120: REDIM INPT%(A%)                ' INPT%() AND INPT$ HOLD DATA
  261.  A% = 20: REDIM INPT$(A%)                 ' FOR FIELDS
  262.  
  263.  Y% = 1: FLD% = 1: Z% = 112
  264.  DO
  265.    READ INPT%(Y%)
  266.    IF INPT%(Y%) = 9999 THEN EXIT DO
  267.    Y% = Y% + 1
  268.    FOR X% = 1 TO 5
  269.       READ INPT%(Y%)
  270.       Y% = Y% + 1
  271.    NEXT
  272.       READ INPT$(FLD%)
  273.       FLD% = FLD% + 1
  274.  LOOP
  275.  
  276.           '***** DATA FOR SECOND MULTI-FIELD INPUT SCREEN *****
  277.  
  278.  DATA 10007,9,25,40,112,99,""
  279.  DATA 10007,10,25,30,112,99,""
  280.  DATA 10007,11,25,30,112,99,""
  281.  DATA 10010,11,56,5,112,99,""
  282.  DATA 10008,13,27,10,112,99,""
  283.  DATA 10001,16,36,8,112,99,""
  284.  DATA 10002,16,53,8,112,99,""
  285.  DATA 10003,16,70,8,112,99,""
  286.  IF DEMOATTR% = 0 THEN
  287.    FOR X% = 5 TO 65 STEP 6
  288.       INPT%(X%) = 71
  289.    NEXT
  290.  END IF
  291.  DATA 9999
  292.  
  293. CALL SETINPT(2, 80, "120", INPT%(), INPT$(), 15)  ' SET UP MULTI-INPUT SCREEN #2 AND
  294.  
  295. ERASE INPT%, INPT$
  296. '----------------------------------------------------------------------------
  297.  
  298. PREMAIN.MENU2:
  299. IF DEMOATTR% = 112 THEN A% = 112 ELSE A% = 120
  300.  
  301. '-------------- MAIN MENU WINDOW ---- USES PULLDOWN ROUTINE -----------------
  302.  
  303. MAIN.MENU:
  304.  
  305.  A% = 23: GOSUB COL
  306.    MAKEWIND 2, "@WINDOWS R-E-Z", 3, 50, 25, 7, A%, 111
  307.    PRINTW "Version 4.10", 1, 100
  308.    PRINTW "CONNECT Software", 2, 100
  309.    PRINTW "Feb. 1, 1991", 3, 100
  310.    
  311.    MAKEWIND 1, "@***** Instructions *****", 12, 100, 65, 10, A%, 112
  312.    PRINTW "       These are the PULLDOWN WINDOWS supplied with WINDOWS", 1, 3
  313.    PRINTW "R-E-Z.  This program  demonstrates most of the features in-", 2, 3
  314.    PRINTW "cluded. Use the arrow keys, mouse, or press the appropriate", 3, 3
  315.    PRINTW "letter to make your selection.   For this demonstration the", 4, 3
  316.    PRINTW "the left mouse botton is set to  ENTER and the right button", 5, 3
  317.    PRINTW "is set to ESC.  WINDOWS R-E-Z can re-define the buttons. ", 6, 3
  318.  
  319.    A% = 113: GOSUB COL: IF A% = 15 THEN A% = 112: HATTR% = 127 ELSE HATTR% = 124
  320. PULL:
  321.    PULLDOWN bar%, WIND%, A%, HATTR%, 11             ' PULLDOWN WINDOWS
  322.    IF bar% = 0 THEN GOTO PULL                    ' ESC OR VERSION
  323.    RSTRWIND 2, 1
  324.    RSTRWIND 1, 1
  325.  
  326. SELECT CASE bar%
  327.  
  328. '--------------------------- SCROLL WINDOW DEMO -----------------------------
  329.  
  330.  CASE 1                              'WINDOWS OPTION FROM PULLDOWN MENUBAR
  331.     SELECT CASE WIND%
  332.  
  333.        CASE 3                        'MULTIPLE SCROLL WINDOWS - SINGLE MARK
  334.  
  335.           SCROLLARROW% = 0: GOSUB SETPARAMETERS         ' NO ARROW
  336.           A% = 116: GOSUB COL: IF A% = 15 THEN A% = 112
  337.           MAKEWIND 14, "@** Multiple Scroll Windows  -- Window types. **", 1, 1, 80, 25, A%, 102
  338.           A% = 79: GOSUB COL
  339.           MAKEWIND 15, "@Instructions", 18, 100, 66, 8, A%, 132
  340.           PRINTW "Use the ARROW keys or MOUSE to select items.   The RIGHT MOUSE", 1, 2
  341.           PRINTW "BUTTON button or TAB moves to the next window.  Press ENTER or", 2, 2
  342.           PRINTW "the  LEFT MOUSE button with the  scroll bar on OK or CANCEL to", 3, 2
  343.           PRINTW "finalize or cancel the selections. ESC cancels all selections.", 4, 2
  344.           
  345.           A% = 116: GOSUB COL
  346.           FOR X% = 1 TO 5                 ' MAKE WINDOWS FOR SCROLL WINDOWS
  347.             IF X% > 3 THEN BRD% = 31 ELSE BRD% = 131
  348.             CALL MAKEWIND(SWIND%(X%), ST$(X%), STR%(X%) - 1, SLC%(X%), SWID%(X%), SNR%(X%), A%, BRD%)
  349.           NEXT
  350.           KIND$ = "SV"                     ' FIRST PASS - ALL "VIEW"  SCROLL
  351.                                            ' WINDOWS  ( PRINT AND EXIT )
  352.           CALL MBUTTONS(13, 9)             ' CHANGE LEFT MOUSE BUTTON TAB
  353. MSCROLL:
  354.           CHNGWIND 16
  355.           SCRLWIND SRTRN1$(), 3, KIND$, R1%, 0      ' BORDER SCROLL WINDOW
  356.           IF R1% = 0 THEN GOTO NOCHANGE             ' WAS ESC
  357.           CHNGWIND 17
  358.           SCRLWIND SRTRN2$(), 5, KIND$, R2%, 0      ' SHADOW SCROLL WINDOW
  359.           IF R2% = 0 THEN GOTO NOCHANGE             ' WAS ESC
  360.           CHNGWIND 18
  361.           SCRLWIND SRTRN3$(), 2, KIND$, R3%, 0      ' TITLE BOX SCROLL WINDOW
  362.           IF R3% = 0 THEN GOTO NOCHANGE             ' WAS ESC
  363.           CHNGWIND 19
  364.           SCRLWIND SRTRN4$(), 1, KIND$, R4%, 0      ' ---OK--- SCROLL WINDOW
  365.           IF KIND$ = "S" THEN                       ' NOT "VIEW"
  366.              IF R4% = 1 GOTO DSCRL                  ' WAS ENTER
  367.              IF R4% = 0 THEN GOTO NOCHANGE          ' WAS ESC
  368.           ELSE                                      ' KIND$ = "SV" FOR VIEW
  369.              PR1% = R1%: PR2% = R2%: PR3% = R3%     ' ONLY SCROLL WINDOWS.
  370.           END IF
  371.           CHNGWIND 20
  372.           SCRLWIND SRTRN5$(), 1, KIND$, R5%, 0      ' -CANCEL- SCROLL WINDOW
  373.           IF KIND$ = "SV" OR R5% = -1 THEN          ' WAS VIEW ONLY OR TAB
  374.              KIND$ = "S"                            ' MAKE SINGLE MARK SCROLL
  375.              GOTO MSCROLL                           ' WINDOWS FOR SUBSEQUENT
  376.           END IF                                    ' PASSES.
  377.           ' GO TO NOCHANGE IF R5%=1 <ENTER> OR R5%=0 <ESC>
  378. NOCHANGE:
  379.           R3% = PR3%: R2% = PR2%: R1% = PR1%      ' RETURN PREVIOUS VALUES
  380.           GOTO CLRSCRL
  381. DSCRL:
  382.           A% = 79: GOSUB COL
  383.           RSTRWIND 15, 1: RSTRWIND 19, 1: RSTRWIND 20, 1
  384.           BRD% = (R1% - 1) + (R2% - 1) * 10 + (R3% - 1) * 100
  385.           MAKEWIND 20, "@You made this window!", 16, 100, 40, 8, A%, BRD%
  386.           PRINTW "Border.." + SRTRN1$(R1%), 2, 9
  387.           PRINTW "Shadow.." + SRTRN2$(R2%), 3, 9
  388.           PRINTW "Title..." + SRTRN3$(R3%), 4, 9
  389.           GETANS "Press any key...", "", "", 23, 100, 240, 0
  390. CLRSCRL:
  391.           RSTRWIND 14, 1
  392.           FOR X% = 20 TO 15 STEP -1
  393.              DELWIND X%
  394.           NEXT
  395.           CALL MBUTTONS(13, 27)                   ' RESTORE MOUSE BUTTONS
  396.           SCROLLARROW% = 1: GOSUB SETPARAMETERS   ' TURN SCROLL ARROW ON
  397.  
  398.        CASE 4                                     ' REGULAR SCROLL WINDOW
  399.          RTRN$ = "": OP% = 3: MARK% = 0
  400.          OPT$ = "REGULAR"
  401.          GOTO SCROLLDEMO
  402.        CASE 5                                     ' AUTO-EXIT
  403.          RTRN$ = "A": OP% = 1: MARK% = 0
  404.          OPT$ = "AUTO-EXIT (ON)"
  405.          GOTO SCROLLDEMO
  406.        CASE 6                                     ' MARK
  407.          RTRN$ = "M": OP% = 2: MARK% = 1
  408.          OPT$ = "MARK (ON)"
  409.          GOTO SCROLLDEMO
  410.  
  411. SCROLLDEMO:
  412.          RSTRWIND 1, 1
  413.          IF RTRN$ = CHR$(27) THEN GOTO MAIN.MENU       ' ESC
  414.          A% = 116: GOSUB COL: IF A% = 15 THEN : HIATTR% = 15 ELSE HIATTR% = 113
  415.          MAKEWIND 2, "@" + OPT$ + " SCROLL WINDOW", 6, 100, 40, 11, A%, 122
  416.          RTRN% = 0
  417.          IF A% = 15 THEN NEWCOLOR 7
  418.          SCRLWIND SCROLL$(), 20, RTRN$, RTRN%, HIATTR%
  419.          IF RTRN% = 0 THEN GOTO DONESCROLL                 ' ESC
  420.                  
  421.          A% = 71: GOSUB COL
  422.          IF MARK% = 1 THEN
  423.             TR% = 2: NR% = 22: TEXT$ = "@[ ** THE MARKED ITEM(S) WERE: ** ]": BR% = 21
  424.             RSTRWIND 2, 1
  425.          ELSE
  426.             TR% = 19: NR% = 5: TEXT$ = "@The item selected was:": BR% = 121
  427.          END IF
  428.          MAKEWIND 3, TEXT$, TR%, 100, 40, NR%, A%, BR%
  429.  
  430.          IF MARK% = 1 THEN
  431.             IF RTRN$ = "" THEN
  432.                PRINTW "NO ITEMS WERE MARKED!", 10, 100
  433.             ELSE
  434.                TR% = 1: START% = 1               ' START SEARCH AT POSITION 1
  435.                DO
  436.                   B% = MARKED%(RTRN$, START%)    ' B%= MARKED ITEM # IN SCROLL$()
  437.                   IF B% <> 0 THEN
  438.                      S$ = SCROLL$(B%): GOSUB NEWSTR: PRINTW S$, TR%, 2
  439.                   ELSE
  440.                     EXIT DO
  441.                   END IF
  442.                   TR% = TR% + 1
  443.                LOOP
  444.            END IF
  445.          ELSE
  446.            S$ = SCROLL$(RTRN%): GOSUB NEWSTR
  447.            PRINTW S$, 1, 100
  448.          END IF
  449.          GETANS "[ Press any key ]", "", ANS$, 23, 100, 240, 0
  450.          RSTRWIND 3, 1
  451. DONESCROLL:
  452.          RSTRWIND 2, 1
  453.  
  454. '---------------------------- GET ANSWER DEMO -------------------------------
  455.  
  456.        CASE 8                                              'GET ANSWER DEMO
  457.           A% = 87: GOSUB COL
  458.           MAKEWIND 1, "@***** Get Answer Window Demonstration *****", 4, 100, 72, 8, A%, 132
  459.           PRINTW "Get answer  windows are used to ask a question and wait for a single", 1, 100
  460.           PRINTW "key response.  They can also be used to pause a program and wait for", 2, 100
  461.           PRINTW "any key to be pressed.  Prompts may be windowed or un-windowed.  The", 3, 100
  462.           PRINTW "area under the prompt or window is restored on exit.", 4, 2
  463.           GETANS "[ Press A,B or C to continue.. ]", "ABC", ANS$, 11, 100, 240, 0
  464.           IF ANS$ = CHR$(27) THEN GOTO ENDGET
  465.           GETANS "Are you sure? (Y/N)", "YN", ANS$, 16, 30, A%, 32
  466.           IF ANS$ = CHR$(27) THEN GOTO ENDGET
  467.           IF ANS$ = "Y" THEN TEMP$ = "YES" ELSE TEMP$ = "NO"
  468.           MAKEWIND 2, "", 16, 28, 25, 3, A%, 32
  469.           PRINTW "Your reply was: " + TEMP$, 1, 100
  470.           A% = 71: GOSUB COL
  471.           GETANS "Press any key...", "", ANS$, 21, 100, A% + 128, 32
  472. ENDGET:
  473.           RSTRWIND 2, 1
  474.           RSTRWIND 1, 1
  475.  
  476.        CASE 10               ' EXIT
  477.         CLS
  478.         END
  479. '---------------------------- WINDOW MANAGER DEMO ---------------------------
  480.  
  481.        CASE 1                                          'WINDOW MANAGER DEMO
  482.          
  483.           A% = 71: GOSUB COL
  484.           MAKEWIND 20, "", 3, 100, 74, 7, A%, 11
  485.           PRINTW "*** Window Demonstration ***", 1, 100
  486.           LINEW 2, 1
  487.           PRINTW "Window memory is dynamically allocated and returned to BASIC when a", 3, 3
  488.           PRINTW "window is restored.   Up to 20 windows may be stacked and restored.", 4, 3
  489.           PRINTW "Window memory is outside of BASIC's normal 64K storage area.", 5, 3
  490.           GETANS "Press any key...", "", ANS$, 9, 28, A% + 128, 11
  491.           CLRWIND
  492.           PRINTW "*** Window Demonstration Instructions ***", 1, 100
  493.           LINEW 2, 1
  494.           PRINTW "Press the UP ARROW or move the MOUSE up to generate windows at random", 3, 2
  495.           PRINTW "locations.  Press the DOWN ARROW or move the MOUSE down to remove the", 4, 2
  496.           PRINTW "windows.  Press ESC to return to the main menu.", 5, 2
  497.  
  498.           RANDOMIZE TIMER
  499.           MAXWIND% = 19
  500.           WIND% = 0
  501. GETMAKE:
  502.           K% = KEYMOUSE%
  503.           IF K% < 255 THEN TEMP$ = CHR$(K%) ELSE TEMP$ = CHR$(0) + CHR$(K% / 256)
  504.           IF TEMP$ = CHR$(27) THEN
  505.              FOR X% = 19 TO 1 STEP -1
  506.                CALL RSTRWIND(X%, 1)
  507.              NEXT
  508.              CALL RSTRWIND(20, 1)
  509.              GOTO MAIN.MENU
  510.           END IF
  511.           TR% = INT(13 * RND + 10): T% = TR%
  512.           LC% = INT(60 * RND + 3): l% = LC%
  513.           NR% = INT((25 - TR% - 3) * RND + 3)
  514.           WI% = INT((80 - LC% - 16) * RND + 16)
  515.           BO% = INT((2) * RND + 100) + 1
  516.           IF TEMP$ = CHR$(0) + "H" THEN
  517.             IF WIND% < MAXWIND% THEN WIND% = WIND% + 1 ELSE CALL DOSOUND: GOTO GETMAKE
  518.             A% = WIND% * 16: IF A% = 128 OR A% = 256 THEN A% = 135
  519.             IF A% > 127 THEN A% = A% - 128
  520.             GOSUB COL:
  521.             IF A% = 15 THEN IF WIND% / 2 <> INT(WIND% / 2) THEN A% = 112
  522.             IF NR% < 8 OR BO% = 100 THEN BO% = BO% - 100
  523.             MAKEWIND WIND%, "@Demo Window" + STR$(WIND%), TR%, LC%, WI%, NR%, A%, BO%
  524.           END IF
  525.           IF TEMP$ = CHR$(0) + "P" THEN
  526.              IF WIND% > 0 THEN
  527.                 RSTRWIND WIND%, 1
  528.                 WIND% = WIND% - 1
  529.              ELSE
  530.                 CALL DOSOUND
  531.              END IF
  532.           END IF
  533.           GOTO GETMAKE
  534.       END SELECT
  535. '------------------------- MULTI FIELD INPUT DEMO ---------------------------
  536.  CASE 2                                   'MULTI-FIELD INPUT DEMO
  537.    SELECT CASE WIND%
  538.       CASE 1
  539.          A% = 71: GOSUB COL: IF A% = 15 THEN A% = 112
  540.          MAKEWIND 20, "@***** Multi-field Input Demonstration *****", 4, 4, 74, 7, A%, 112
  541.          PRINTW "       Up to ten multi-field input screens may be defined using up to", 1, 2
  542.          PRINTW "100 input fields per screen.  Fields may be set to alpha/numeric num-", 2, 2
  543.          PRINTW "eric, date, or protected. Complete editing features are incorporated.", 3, 2
  544.          GETANS "Press any key.......", "", ANS$, 13, 100, A% + 128, 11
  545.          RSTRWIND 20, 1
  546.          IF ANS$ = CHR$(27) THEN GOTO ALLDONE
  547.          MAKEWIND 20, "@F1 - Next Input Screen    F2 - Main Menu    F10 - Help", 1, 1, 80, 25, A%, 102
  548.          IF MULTPASS% = 0 THEN
  549.             MRTRN2$(1) = "CONNECT SOFTWARE"
  550.             MRTRN2$(2) = "6192 FAWN MEADOW"
  551.             MRTRN2$(3) = "FARMINGTON, NY"
  552.             MRTRN2$(4) = "14425"
  553.             MRTRN2$(5) = "01/01/1991"
  554.             MRTRN2$(6) = "123,1"
  555.             MRTRN2$(7) = "123,12"
  556.             MRTRN2$(8) = "123,123"
  557.             MULTPASS% = 1
  558.             COLCHOICE$(1) = "RED"
  559.             COLCHOICE$(2) = "PURPLE"
  560.             COLCHOICE$(3) = "YELLOW"
  561.             COLCHOICE$(4) = "GREEN"
  562.             LOCHOICE$(1) = "NORTH"
  563.             LOCHOICE$(2) = "SOUTH"
  564.             LOCHOICE$(3) = "EAST"
  565.             LOCHOICE$(4) = "WEST"
  566.             COLCHOICE% = 1: LOCHOICE% = 1
  567.             MRTRN1$(5) = "RED": MRTRN1$(6) = "NORTH"
  568.          END IF
  569.          SCRN% = 1: FLD1% = 1: FLD2% = 1
  570.  
  571. MAKEINPT:
  572.          AUTOEXIT% = 0
  573.          IF SCRN% = 1 THEN
  574.             DECPOINT% = 1: Q% = 1: GOSUB SETPARAMETERS
  575.             NEWCOLOR A%
  576.             CLRWIND
  577.             PRINTW "**** FIXED CHOICE FIELDS ****", 1, 48
  578.             PRINTW "****** Press SPACE BAR ******.", 2, 48
  579.             PRINTW "Decimal(0)     Decimal(1)     Decimal(2)", 2, 4
  580.             PRINTW "Color...", 3, 48
  581.             PRINTW "( Padded with leading zeros.)     Location.", 5, 14
  582.             PRINTW "Alpha/num. Upper case     Alpha/num. Lower case       Alpha/numeric", 7, 4
  583.             PRINTW "*** Auto-advance fields -- Cursor moves to the next field automatically ***", 10, 100
  584.             PRINTW "(-- Restricted Input --)", 12, 14
  585.             PRINTW "M or F:         Y or N:      SOC SECURITY #..   -  -", 13, 100
  586.             PRINTW "* Auto-exit ( On change only ) and Auto-advance fields. (A,B ) *", 15, 100
  587.             PRINTW "* Single field update on protected field C allows fast exit and return *", 16, 100
  588.             PRINTW "[ PRESS F1 FOR MORE AUTO-EXIT EXAMPLES.]", 20, 100
  589.             PRINTW "A             +B             =C", 18, 20
  590.             PRINTW "If formatted number won't fit, field and input screen cannot be exited.", 21, 4
  591. MAKE1:
  592.             MULTINPT 1, FLD1%, EXIT$, AUTOEXIT%, MRTRN1$()
  593.             IF AUTOEXIT% <> 0 THEN
  594.                SELECT CASE AUTOEXIT%
  595.                   CASE 5, 6
  596.                      IF EXIT$ = "FIXED" THEN
  597.                         IF AUTOEXIT% = 5 THEN
  598.                             COLCHOICE% = COLCHOICE% + 1
  599.                             IF COLCHOICE% = 5 THEN COLCHOICE% = 1
  600.                             MRTRN1$(5) = COLCHOICE$(COLCHOICE%)
  601.                         ELSE
  602.                             LOCHOICE% = LOCHOICE% + 1
  603.                             IF LOCHOICE% = 5 THEN LOCHOICE% = 1
  604.                             MRTRN1$(6) = LOCHOICE$(LOCHOICE%)
  605.                         END IF
  606.                      END IF
  607.                   CASE 15, 16
  608.                      AUTOEXIT% = 17                  ' ONLY UPDATA THIS FIELD
  609.                      MRTRN1$(17) = STR$(VAL(MRTRN1$(15)) + VAL(MRTRN1$(16)))
  610.                      IF MRTRN1$(15) = "" AND MRTRN1$(16) = "" THEN MRTRN1$(17) = ""
  611.                    CASE ELSE
  612.                   
  613.                END SELECT
  614.                IF EXIT$ = "AUTO" OR EXIT$ = "FIXED" THEN GOTO MAKE1
  615.             END IF
  616.             IF EXIT$ = "F10" THEN GOSUB HELP: GOTO MAKE1
  617.          END IF
  618.  
  619.          IF SCRN% = 2 THEN
  620.             DECPOINT% = 0: Q% = 1: GOSUB SETPARAMETERS
  621.             CLRWIND
  622.             PRINTW "*** ---------- All fields are Auto-exit ( Always ) fields.---------- ***", 2, 100
  623.             PRINTW "*** The instruction line is made possible by using Auto-exit fields. ***", 3, 100
  624.             LINEW 4, 1
  625.             LINEW 11, 1
  626.             PRINTW "NAME..............", 6, 5
  627.             PRINTW "ADDRESS...........", 7, 5
  628.             PRINTW "CITY/STATE/ZIP....", 8, 5
  629.             PRINTW "DATE...(mm/dd/yyyy)..", 10, 5
  630.             PRINTW "Decimal 1        Decimal 2        Decimal 3", 12, 35
  631.             PRINTW "Comma as decimal ( foreign ):", 13, 5
  632.             LINEW 14, 1
  633.             PRINTW "* This example sets the active field to a different color than the  inactive *", 16, 1
  634.             PRINTW "* fields allowing the fields to be placed on consecutive rows without blend- *", 17, 1
  635.             PRINTW "* ing into  each other.   The user's attention is drawn to the active field. *", 18, 1
  636.  
  637.             LINEW 20, 1
  638.             NEWCOLOR 15
  639.             PRINTW SPACE$(78), 21, 100
  640. MAKE2:
  641.             SELECT CASE FLD2%
  642.               CASE 1
  643.                 I$ = "INPUT YOUR NAME"
  644.               CASE 2
  645.                 I$ = "INPUT YOUR STREET ADDRESS"
  646.               CASE 3
  647.                 I$ = "INPUT YOUR CITY AND STATE"
  648.               CASE 4
  649.                 I$ = "INPUT YOUR ZIP CODE"
  650.               CASE 5
  651.                 I$ = "FIELD CAN NOT BE EXITED IF DATE FORMAT IS NOT CORRECT!"
  652.               CASE 6, 7, 8
  653.                 I$ = "FIELD CAN NOT BE EXITED IF FORMATED NUMBER WILL NOT FIT!"
  654.               CASE ELSE
  655.             END SELECT
  656.             PRINTW "                                          ", 21, 30
  657.             PRINTW "INSTRUCTIONS: " + I$, 21, 2
  658.             MULTINPT 2, FLD2%, EXIT$, AUTOEXIT%, MRTRN2$()
  659.             AUTOEXIT% = 1
  660.             IF EXIT$ = "F10" THEN GOSUB HELP: GOTO MAKE2
  661.             IF EXIT$ = "AUTO" THEN GOTO MAKE2
  662.          END IF
  663.  
  664.  
  665.         IF EXIT$ = "F1" THEN
  666.            IF SCRN% = 1 THEN
  667.               SCRN% = 2
  668.            ELSE
  669.               NEWCOLOR A%
  670.               LINEW 4, 0: LINEW 11, 0: LINEW 14, 0: LINEW 20, 0
  671.               SCRN% = 1
  672.            END IF
  673.            GOTO MAKEINPT
  674.         END IF
  675.  
  676.         GOTO ALLDONE
  677.  
  678. HELP:
  679.         MAKEWIND 15, "@***** Multi-field Input Instructions *****", 100, 100, 76, 14, 15, 101
  680.         PRINTW "Key(s):               Function:", 1, 2
  681.         PRINTW "CTRL END/ CTRL HOME   Move to first or last field.", 1, 2
  682.         PRINTW "TAB/ SHIFT TAB        Move from field to field horizontally.", 2, 2
  683.         PRINTW "UP/ DOWN ARROW /ENTER Move from field to field. ( user defined order )", 3, 2
  684.         PRINTW "BACKSPACE/ DELETE     Erase character to left of or under cursor.", 4, 2
  685.         PRINTW "LEFT/ RIGHT ARROW     Moves cursor from start to end of text.", 5, 2
  686.         PRINTW "INSERT                Toggle between insert and overstrike mode.", 6, 2
  687.         PRINTW "ESC/ CTRL E           Returns field to pre-edited state. / Erases field.", 7, 2
  688.         PRINTW "HOME/ END             Moves cursor to start or end of text.", 8, 2
  689.         PRINTW "SPACE BAR             Erases field if it this is the first key pressed.", 9, 2
  690.         GETANS "[ PRESS ANY KEY TO EXIT HELP ]", "", "", 19, 100, 240, 0
  691.         RSTRWIND 15, 1
  692.         CHNGWIND 20
  693. RETURN
  694.  
  695. ALLDONE:
  696.         DECPOINT% = 1: GOSUB SETPARAMETERS
  697.         RSTRWIND 20, 1
  698.  
  699. '------------------------------- INPUT WINDOW -------------------------------
  700.     CASE 2                                          'INPUT WINDOW DEMO
  701.        A% = 32: GOSUB COL         ' GREEN
  702.        IF A% = 32 THEN AADD% = 1000 ELSE AADD% = 0
  703.        MAKEWIND 20, "@*** Input Window Demonstration ***", 3, 4, 70, 6, A%, 112
  704.        PRINTW "An input window can be used to prompt for, and receive, input. The", 1, 2
  705.        PRINTW "area under the window is automatically saved and restored on exit.", 2, 2
  706.        GETANS "Press any key.......", "", ANS$, 13, 100, A% + 128, 11
  707.        RSTRWIND 20, 1
  708.  
  709.        MAKEWIND 20, "@[ Input Window Instructions ]", 3, 100, 72, 9, A%, 12
  710.        PRINTW "SPACE BAR/ CTRL E  Erases field if first key pressed./ Erases field.", 1, 2
  711.        PRINTW "ENTER              Exits the procedure. ( Returns the string )", 2, 2
  712.        PRINTW "BACKSPACE/ DELETE  Erase character to left of or under cursor.", 3, 2
  713.        PRINTW "LEFT/ RIGHT ARROW  Moves cursor from start to end of input text.", 4, 2
  714.        PRINTW "INSERT             Toggle between insert and overstrike mode.", 5, 2
  715.        PRINTW "ESC                Returns field to pre-edited state, and exits.", 6, 2
  716.        PRINTW "HOME/ END          Move cursor to start or end of text.", 7, 2
  717. START.EDIT:
  718.        GETANS "Press <U> for upper case - <L> for lower case - <B> for both.", "ULB", P$, 21, 100, A% + 128, 11
  719.        IF P$ = CHR$(27) THEN GOTO DONEIWIND
  720.        IF P$ = "B" THEN P$ = "A"
  721.        I$ = "Input prompts can be printed "
  722.        MAKEWIND 15, "", 20, 100, 74, 4, A% + 128, 11
  723.        NEWCOLOR A%
  724.        PRINTW I$ + "in the window's title box.", 1, 100
  725.        INPTWIND "@** Input Your Name **", P$, 14, 100, 30, A% + AADD%, "", RTR$, 112
  726.        PRINTW I$ + "to the left of the prompt in the window.", 1, 100
  727.        PRINTW "** Date format must be: mm/dd/yyyy  (1980 to 2099) to exit field **", 2, 100
  728.        INPTWIND "DATE:", "D", 15, 100, 10, A% + AADD%, "", RTR2$, 11
  729.        IF DEC$ = "" THEN
  730.           CLRWIND
  731.           GETANS "Number of decimal places to return for next Input Window ( 0-6 ) ?", "0123456", ANS$, 21, 100, A%, 0
  732.           DEC$ = ANS$
  733.           IF ANS$ = CHR$(27) THEN GOTO DONEIWIND
  734.         END IF
  735.         PRINTW "       " + I$ + "without a window!!!        ", 1, 100
  736.         PRINTW "** The number with " + DEC$ + " decimals must fit to exit the field.**", 2, 100
  737.         IF A% = 15 THEN ADD% = 97 ELSE ADD% = 0
  738.         INPTWIND "Now Input a Number:", DEC$, 15, 100, 15, A% + AADD% + ADD% + 1000, "", RTR1$, 0
  739.         RSTRWIND 15, 1
  740.         MAKEWIND 2, "@**** The Data Entered Was:****", 14, 100, 41, 5, A%, 12
  741.         PRINTW "NAME: " + RTR$, 1, 2
  742.         PRINTW "DATE: " + RTR2$, 2, 2
  743.         PRINTW "NUMBER: " + RTR1$, 3, 2
  744.         GETANS "Press (E) to Edit Data or (R) to Return to Main Menu.", "RE", ANS$, 21, 100, A% + 128, 11
  745.         RSTRWIND 2, 1
  746.         IF ANS$ = "E" THEN GOTO START.EDIT
  747.  
  748. DONEIWIND:
  749.         RSTRWIND 15, 1
  750.         RSTRWIND 20, 1
  751.         RTR$ = "": RTR1$ = "": DEC$ = "": RTR2$ = ""
  752.       CASE ELSE
  753.     END SELECT
  754. '----------------------------- WINDOW PRINT DEMO ----------------------------
  755.  CASE 3      'PRINT IN A WINDOW
  756.    A% = 48: GOSUB COL
  757.    SELECT CASE WIND%
  758.  
  759.       CASE 1
  760.  
  761.         MAKEWIND 1, "@*** Window Printing Demonstration ***", 3, 100, 58, 20, A%, 112
  762.         PRINTW "Printing in a window is easy with WINDOWS R-E-Z.  Text ", 1, 2
  763.         PRINTW "can printed at any location in the window or centered:", 2, 2
  764.         PRINTW "CENTERED TEXT", 4, 100
  765.         PRINTW "Changing the text's color is easy also!", 6, 100
  766.         FOR X% = 2 TO 4
  767.         Y% = X% - 1: Z% = 128: IF A% = 15 THEN Y% = 0: Z% = 225
  768.         IF Y% = 3 THEN Y% = 15
  769.         NEWCOLOR A% + Y%: PRINTW "COLORED TEXT", 6 + X%, 15
  770.         NEWCOLOR A% + Y% + Z%: PRINTW "COLORED TEXT", 6 + X%, 30
  771.         NEXT
  772.         NEWCOLOR A%
  773.         PRINTW "Single or double lines can be printed....", 11, 100
  774.         LINEW 12, 1
  775.         LINEW 13, 2
  776.         PRINTW "The text in all windows in this demonstration", 14, 100
  777.         PRINTW "was printed using the print routine  supplied", 15, 100
  778.         PRINTW "with WINDOWS R-E-Z.", 16, 6
  779.  
  780.         GETANS "[ ******* Press any key ******* ]", "", ANS$, 22, 100, 143, 0
  781.         RSTRWIND 1, 1
  782.  
  783.       CASE 2
  784.         MAKEWIND 1, "@Window #1", 4, 6, 30, 15, A%, 142
  785.         PRINTW "(*** SAMPLE ****)", 11, 100
  786.         B% = 71: IF A% = 15 THEN B% = 112
  787.         MAKEWIND 2, "@Window #2", 4, 45, 30, 15, B%, 142
  788.         PRINTW "(*** SAMPLE ****)", 11, 100
  789.  
  790.         GA$ = "to print in Window #1."
  791.         GOSUB Press
  792.  
  793.         CHNGWIND 1
  794.         PRINTW "  Text can be printed in", 2, 3
  795.         PRINTW "multiple windows.  WIND-", 3, 3
  796.         PRINTW "OWS R-E-Z  remembers the", 4, 3
  797.         PRINTW "color of text printed in", 5, 3
  798.         PRINTW "the  window and uses the", 6, 3
  799.         PRINTW "same color the next time", 7, 3
  800.         PRINTW "text is printed.", 8, 3
  801.  
  802.         GA$ = "to print in Window #2."
  803.         GOSUB Press
  804.  
  805.         CHNGWIND 2
  806.         PRINTW "A window's interior can be", 2, 2
  807.         PRINTW "cleared with any color....", 3, 2
  808.  
  809.         GA$ = "to clear Window #1 with a new color."
  810.         GOSUB Press
  811.  
  812.         B% = 95: IF A% = 15 THEN B% = 112
  813.         CHNGWIND 1
  814.         NEWCOLOR B%: CLRWIND
  815.         PRINTW "(* New print-to color *)", 11, 100
  816.  
  817.         GA$ = "to print in Window #1 with the new print-to color"
  818.         GOSUB Press
  819.  
  820.         PRINTW "When a window is cleared", 2, 3
  821.         PRINTW "The color of text subse-", 3, 3
  822.         PRINTW "quently printed, matches", 4, 3
  823.         PRINTW "the print-to color speci-", 5, 3
  824.         PRINTW "ied when the  window was", 6, 3
  825.         PRINTW "cleared.", 7, 3
  826.  
  827.         GA$ = "....."
  828.         GOSUB Press
  829.  
  830.         B% = 92: IF A% = 15 THEN B% = 7
  831.         NEWCOLOR B%
  832.         PRINTW "The text's  color can be", 8, 100
  833.         PRINTW "changed at any time !!!!", 9, 100
  834.  
  835.         GOSUB Press
  836.  
  837.         RSTRWIND 1, 1: RSTRWIND 2, 1
  838.  
  839.  
  840. '---------------- TOGGLE FAST FROM ON TO OFF - OR OFF TO ON -----------------
  841.  
  842.         CASE 4
  843.            B$ = "is set to SLOW"
  844.            CALL CHNGPULL(3, 5, 0)
  845.            FAST% = 0
  846.            GOTO PRINTSPEED
  847.  
  848.         CASE 5
  849.            B$ = "is set to FAST"
  850.            CALL CHNGPULL(3, 4, 0)
  851.            FAST% = 1
  852. PRINTSPEED:
  853.            A% = 113: GOSUB COL
  854.            MAKEWIND 1, "@***** Print " + B$ + " *****", 100, 100, 67, 6, A%, 112
  855.            IF B$ = "is set to FAST" THEN
  856.               PRINTW "Windowing and print speed are set to fast.  This may cause snow", 1, 2
  857.               PRINTW "or screen flicker if certain  CGA display adaptors are used....", 2, 2
  858.            ELSE
  859.               PRINTW "Windowing and print speed are set to slow if a CGA display ad-", 1, 2
  860.               PRINTW "aptor is present.  This will eliminate screen snow or flicker.", 2, 2
  861.            END IF
  862.            A% = A% + 128
  863.            GETANS "Press any key.......", "", ANS$, 15, 28, A%, 12
  864.            RSTRWIND 1, 1
  865.          CASE ELSE
  866.          END SELECT
  867.          GOSUB SETPARAMETERS
  868.          GOTO PREMAIN.MENU2
  869. '--------------------------- DIRECTORY ROUTINES -----------------------------
  870.  CASE 4
  871.    A% = 23
  872.    GOSUB COL
  873.    MAKEWIND 10, "@**** Directory Demonstration ****", 3, 100, 70, 10, A%, 111
  874.    PRINTW "Directory routines permit files from any path to be placed in an", 1, 100
  875.    PRINTW "array.  All, or selected files, can be found. Wildcards (*?) are", 2, 100
  876.    PRINTW "permitted.   Searches  can include files with any combination of", 3, 100
  877.    PRINTW "attributes. To suppliment functions included in QuickBASIC rout-", 4, 100
  878.    PRINTW "ines to find disk size, free disk  space, the  current drive and", 5, 100
  879.    PRINTW "path are included.", 6, 3
  880.  
  881.    A% = A% + 128
  882.    GETANS "Press any key.....", "", "", 15, 100, A%, 11
  883.    A% = A% - 128
  884.    RSTRWIND 10, 1
  885. DISKINST:
  886.    MAKEWIND 10, "@[ Instructions ]", 3, 100, 45, 13, A%, 11
  887.    PRINTW "Input the path for the directory search.", 1, 100
  888.    PRINTW "When prompted input the file  attributes", 2, 100
  889.    PRINTW "for the search.", 3, 2
  890.    PRINTW "Attributes are......", 4, 100
  891.    PRINTW "A - archived", 5, 6
  892.    PRINTW "H - hidden", 6, 6
  893.    PRINTW "R - read only", 7, 6
  894.    PRINTW "S - system", 8, 6
  895.    PRINTW "D - sub-directory", 9, 6
  896.    PRINTW "O - other - no attribute", 10, 6
  897.    PRINTW "V - volumn - must be root directory!", 11, 6
  898.  
  899.   PATH2$ = path$
  900. GETPATH:
  901.   INPTWIND "@PATH: FORMAT = DRIVE:\DIRECTORY\....( WILDCARDS PERMITTED )", "U", 19, 100, 63, A%, "1234567890QWERTYUIOPLKJHGFDSAZXCVBNM\:?*_.", PATH2$, 111
  902.   IF PATH2$ <> "" THEN
  903.     path$ = PATH2$
  904.   ELSE
  905.      DOSOUND
  906.      RSTRWIND 10, 1
  907.      GOTO OVER
  908.   END IF
  909. GETTYPE:
  910.   TYPE$ = ""
  911.   INPTWIND " FILE ATTRIBUTES (A/H/R/S/O/D/V):", "U", 19, 100, 7, A%, "AHRSODV", TYPE$, 111
  912.   IF TYPE$ = "" THEN RSTRWIND 10, 1: GOTO OVER
  913.  
  914.   IF MID$(path$, 2, 1) = ":" THEN   'DRIVE WAS SPECIFIED
  915.     DR% = ASC(UCASE$(path$)) - 64
  916.   ELSE                              'DRIVE NOT SPECIFIED - USE CURRENT DRIVE.
  917.     GETDISK DR%: path$ = CHR$(DR% + 64) + ":" + path$
  918.   END IF
  919.  
  920. ON ERROR GOTO DISKERROR             'ALWAYS TRAP FOR ERRORS WHEN
  921.                                     'ACESSING A DISK.
  922.    FINDDIR path$, TYPE$ + "L", F%   'PUT DIRECTORY IN DIREC$. "L" FOR LONG DIR
  923.    DISKSIZE DR%, size&, free&       'GET DISK ROOM AND FREE ROOM.
  924.    ON ERROR GOTO 0
  925.    RSTRWIND 10, 1
  926.    MAKEWIND 10, "@PATH: " + path$, 3, 100, 74, 17, A%, 111
  927.    PRINTW "DISK SIZE =" + STR$(size&) + " BYTES", 11, 100
  928.    PRINTW "BYTES FREE =" + STR$(free&) + " BYTES", 12, 100
  929.    PRINTW "FILE ATTRIBUTES: " + TYPE$, 13, 100
  930.  
  931.    IF F% = 0 THEN                                  'NO DIRECTORY ENTRIES
  932.       A% = A% + 128
  933.       GETANS "NO ENTRIES.  CONTINUE... (Y/N)?", "YN", ANS$, 21, 100, A%, 11
  934.       A% = A% - 128
  935.       RSTRWIND 10, 1
  936.       IF ANS$ <> "Y" THEN GOTO OVER
  937.       GOTO DISKINST
  938.    ELSE                                           'DIRECTORY ENTRIES EXISTED
  939.       PRINTW "[ DIRECTIONS: SELECT FILE WITH SCROLL BAR AND PRESS ENTER.]", 9, 100
  940.       RTRN$ = "A"
  941.       MAKEWIND 11, "", 6, 100, 16, 6, 112, 11
  942.       HIATTR% = 0: RTRN% = 0
  943.       SCRLWIND DIREC$(), F%, RTRN$, RTRN%, HIATTR%    'PUT DIREC$() IN WINDOW #1
  944.       CHNGWIND 10
  945.       LINEW 9, 0
  946.    END IF
  947.  
  948.    RTRN$ = DIREC$(RTRN%)
  949.  
  950.    IF RTRN% = 0 THEN RSTRWIND 11, 1: RSTRWIND 10, 1: GOTO OVER
  951.  
  952.    FATTR% = DIRINFO(RTRN%).ATTR
  953.  
  954.    T$ = "File: ": IF FATTR% = 8 THEN T$ = "Volumn: " ELSE IF FATTR% = 16 THEN T$ = "Directory: "
  955.    MAKEWIND 13, "              " + T$ + RTRN$, 14, 100, 44, 7, 112, 112
  956.    PRINTW "SIZE:" + STR$(DIRINFO(RTRN%).size) + " bytes", 1, 15
  957.    PRINTW "DATE: " + DIRINFO(RTRN%).date, 2, 15
  958.    PRINTW "TIME: " + DIRINFO(RTRN%).TIME, 3, 15
  959.    GETANS "[ Repeat directory search (Y/N)? ]", "YN", ANS$, 20, 100, 143, 0
  960.    RSTRWIND 13, 1
  961.    RSTRWIND 11, 1
  962.    RSTRWIND 10, 1
  963.  
  964.    IF ANS$ <> "Y" THEN GOTO OVER
  965.    GOTO DISKINST
  966.  
  967. DISKERROR:
  968.   IF PREFLAG% = 1 THEN path$ = CURRDISK$
  969.   SELECT CASE ERR
  970.      CASE 75, 76
  971.         E$ = "PATH NOT FOUND"
  972.      CASE 71
  973.         E$ = "DRIVE NOT READY"
  974.      CASE 72
  975.         E$ = "DISK MEDIA ERROR"
  976.      CASE 57
  977.         E$ = "I/O ERROR"
  978.      CASE 68
  979.         E$ = "DRIVE NOT AVAILABLE"
  980.      CASE ELSE
  981.         E$ = "UNIDENTIFIED ERROR"
  982.    END SELECT
  983.    A% = A% + 128
  984.    GETANS "DRIVE " + LEFT$(path$, 2) + ".  " + E$ + ". Press any key...", "", "", 21, 100, A%, 11
  985.    A% = A% - 128
  986.    IF PREFLAG% = 1 THEN RESUME REALSTART
  987.    RSTRWIND 10, 1
  988. RESUME DISKINST
  989.  
  990. OVER:
  991. ERASE DIREC$: DIREC$ = ""                           'GET MEMORY BACK
  992.  
  993. ON ERROR GOTO 0
  994. '----------------- ESC KEY PRESSED BACK-UP TO INTRO SCREEN ------------------
  995.  
  996. CASE 0
  997. GOTO INTRO
  998. '------------------------------ COLOR ---------------------------------------
  999.  CASE 6
  1000.    CHNGPULL 6, 1, 0                       ' ALL SELECTIONS ACTIVE
  1001.    CHNGPULL 6, 2, 0
  1002.    CHNGPULL 6, 3, 0
  1003.    DEMOATTR% = 112                        ' DEFAULT B/W
  1004.    NOHI% = 0                              ' DEFAULT IS HI-INTEN
  1005.    SHADCOL% = 7
  1006.    IF WIND% = 2 THEN
  1007.      DEMOATTR% = 0                        ' FLAG FOR COLOR
  1008.      SHADCOL% = 8                         ' SHADOW DIM FOR COLOR
  1009.    ELSEIF WIND% = 3 THEN
  1010.      NOHI% = 1                             ' SET NO HI-INTENSITY FLAG
  1011.    END IF
  1012.    GOSUB SETPARAMETERS
  1013.    GOTO PREMAIN.MENU
  1014. '------------------------ SOUND = CLICK OR BEEP OR  OFF --------------------
  1015.  
  1016.  CASE 5
  1017.     SELECT CASE WIND%
  1018.        CASE 1                         ' TOGGLE SOUND
  1019.           B$ = "BEEP": SND% = 2
  1020.           GOTO DOSOUND
  1021.        CASE 2
  1022.           B$ = "CLICK": SND% = 1
  1023.           GOTO DOSOUND
  1024.        CASE 3
  1025.           B$ = "OFF": SND% = 0
  1026.           GOTO DOSOUND
  1027.         CASE ELSE
  1028.     END SELECT
  1029.  
  1030. DOSOUND:
  1031.     CALL CHNGPULL(5, 1, 0)
  1032.     CALL CHNGPULL(5, 2, 0)
  1033.     CALL CHNGPULL(5, 3, 0)
  1034.     GOSUB SETPARAMETERS
  1035.     A% = 23
  1036.     GOSUB COL
  1037.     GETANS "The sound for all routines is set to " + B$ + ".  Press any key.....", "", "", 100, 100, A%, 11
  1038.  
  1039. '----------------------------- NO CASE ELSE ---------------------------------
  1040.  
  1041. CASE 7
  1042.    RESTORE ORDERDATA
  1043.    A% = 151: B% = 25
  1044.    REDIM INPT%(A%), INPT$(B%)
  1045.    Y% = 1: FLD% = 1
  1046.    DO
  1047.       READ INPT%(Y%)
  1048.       IF INPT%(Y%) = 9999 THEN EXIT DO
  1049.       Y% = Y% + 1
  1050.       FOR X% = 1 TO 5
  1051.          READ INPT%(Y%)
  1052.          Y% = Y% + 1
  1053.       NEXT
  1054.       READ INPT$(FLD%)
  1055.       FLD% = FLD% + 1
  1056.    LOOP
  1057. ORDERDATA:
  1058.    DATA 10007,5,14,32,15,99,""
  1059.    DATA 10007,7,14,32,15,99,""
  1060.    DATA 10007,9,14,32,15,99,""
  1061.    DATA 10007,11,14,32,15,99,""
  1062.    DATA 10010,13,14,5,15,99,""
  1063.    DATA 10008,5,56,10,15,99,""
  1064.    DATA 11017,7,69,1,15,99,"YN"
  1065.    DATA 10000,9,69,5,15,99,""
  1066.    DATA 30002,11,69,4,15,99,""
  1067.    DATA 30007,15,25,20,15,99," "
  1068.    DATA 30007,15,58,20,15,99,""
  1069.    DATA 11017,17,33,1,15,99,"YN"
  1070.    DATA 10007,22,24,20,15,99,"1234567890 "
  1071.    DATA 10007,22,63,5,15,99,"1234567890/"
  1072.    DATA 9999
  1073.    CALL SETINPT(2, 80, "10", INPT%(), INPT$(), 0)  ' SET UP MULTI-INPUT SCREEN #2 AND
  1074.    ERASE INPT%, INPT$                               ' ERASE TEMPORARY ARRAYS
  1075.  
  1076.    A% = 23: GOSUB COL: IF A% = 15 THEN A% = 112
  1077.    IF ORDERPASS% = 0 THEN
  1078.      ORDERPASS% = 1
  1079.      DIM ORDER$(20)
  1080.  
  1081.      LAN$(1) = "QuickBASIC 4.++"
  1082.      LAN$(2) = "BASIC 7.0 - PDS"
  1083.      LAN$(3) = "BASIC 7.1 - PDS"
  1084.      LAN% = 1: ORDER$(10) = LAN$(1)
  1085.  
  1086.      VER$(1) = ""
  1087.      VER$(2) = "3.10"
  1088.      VER$(3) = "3.20"
  1089.      VER$(4) = "3.30"
  1090.      VER$(5) = "3.40"
  1091.      VER$(6) = "3.60"
  1092.      VER$(7) = "4.00"
  1093.      VER$(8) = "4.01"
  1094.      VERS% = 1: ORDER$(9) = ""
  1095.  
  1096.      DISK$(1) = "5.25 inch - 360K"
  1097.      DISK$(2) = "3.5 inch - 720K"
  1098.      DSIZE% = 1: ORDER$(11) = DISK$(1)
  1099.  
  1100.  
  1101.   END IF
  1102.  
  1103.   FLD% = 1: AUTOEXIT% = 0
  1104.  
  1105.   MAKEWIND 1, "@[ F1 = ABORT ]   *** WINDOWS R-E-Z  Order Form ***   [ F10 = Print ]", 100, 100, 80, 25, A%, 101
  1106.   PRINTW "Name.......                                 Date.....", 2, 2
  1107.   PRINTW "Address....                                 Registered User (Y/N).", 4, 2
  1108.   PRINTW "Address....                                 Registration Number..", 6, 2
  1109.   PRINTW "City/State.                                 Registered Version...", 8, 2
  1110.   PRINTW "Zip Code...       ( Enter 0 if not USA )", 10, 2
  1111.   PRINTW "Programming Language..                      Disk Size............", 12, 2
  1112.  
  1113.  
  1114.   PRINTW "Hard Copy Documentation (Y/N).    ( Same as on disk. Lazer printed. Three  ) ", 14, 2
  1115.   PRINTW "( ring binder - $10.00 - USA orders only.)", 15, 36
  1116.  
  1117.   PRINTW "TERMS: Check/ money order/ Visa/ MC.  Fees detailed on hard copy order form.", 17, 2
  1118.   PRINTW "Visa / Master card #                        Expiration date:", 19, 2
  1119.  
  1120. NEWCOLOR 15
  1121. PREYN$ = ORDER$(7)
  1122. PREORDER:
  1123.  
  1124.   I$ = ""
  1125.   
  1126. SELECT CASE FLD%
  1127.   CASE 1
  1128.      I$ = "Input your name."
  1129.   CASE 2, 3, 4
  1130.      I$ = "Input your address."
  1131.   CASE 5
  1132.      I$ = "Input your zip code."
  1133.   CASE 6
  1134.      I$ = "Enter today's date.  (mm/dd/yyyy) "
  1135.   CASE 7
  1136.      I$ = "Input Y if you are a registered user or N if not."
  1137.   CASE 8
  1138.      I$ = "If you are a registered user input your registation number."
  1139.   CASE 9
  1140.      I$ = "CHOICES:  /    / 3.10/ 3.20/ 3.30/ 3.30/ 3.40/ 3.50/ 3.60/ 4.00/ 4.01"
  1141.      GOSUB SPINST
  1142.   CASE 10
  1143.      I$ = "CHOICES:  QuickBASIC 4.++ / BASIC 7.0 - PDS / BASIC 7.1 - PDS "
  1144.      GOSUB SPINST
  1145.   CASE 11
  1146.       I$ = "CHOICES:  5.25 inch - 360k / 3.5 inch - 720k"
  1147.       GOSUB SPINST
  1148.   CASE 12
  1149.       I$ = "Enter Y for hard copy documentation or N for none."
  1150.   CASE 13
  1151.       I$ = "Enter Visa/Master Card number if using same."
  1152.   CASE 14
  1153.       I$ = "Enter Visa/Master card expiration date. ( mm/yy )"
  1154. END SELECT
  1155.       IF FLD% < 9 OR FLD% > 11 THEN I$ = "INSTRUCTIONS: " + I$
  1156.  
  1157. PRINTW I$ + SPACE$(76 - LEN(I$)), 21, 100
  1158.  
  1159. MULTINPT 2, FLD%, EXIT$, AUTOEXIT%, ORDER$()
  1160.  
  1161. IF EXIT$ = "FIXED" THEN                         ' Space bar - fields 9,10,11
  1162.  
  1163.   SELECT CASE AUTOEXIT%
  1164.     CASE 9                                      ' Space bar - field 9
  1165.        VERS% = VERS% + 1: IF VERS% = 9 THEN VERS% = 1
  1166.        ORDER$(9) = VER$(VERS%)                  ' change version
  1167.  
  1168.     CASE 10                                     ' Space bar - field 10
  1169.         LAN% = LAN% + 1: IF LAN% = 4 THEN LAN% = 1
  1170.         ORDER$(10) = LAN$(LAN%)                 ' change language
  1171.  
  1172.     CASE 11                                     ' Space bar - field 11
  1173.         DSIZE% = DSIZE% + 1: IF DSIZE% = 3 THEN DSIZE% = 1
  1174.         ORDER$(11) = DISK$(DSIZE%)              ' change disk type
  1175.   END SELECT
  1176.   GOTO PREORDER
  1177.  
  1178. END IF
  1179.  
  1180. ' Delete the space bar instruction window if the field is not a
  1181. ' "multi-choice field or MULTINPT is exited via a function key.
  1182. ' ( EXIT$ <> "AUTO" )
  1183.  
  1184. IF AUTOEXIT% >= 9 AND AUTOEXIT% <= 11 THEN
  1185.   IF FLD% < 9 OR FLD% > 11 OR EXIT$ <> "AUTO" THEN
  1186.     RSTRWIND 3, 1
  1187.     WFLAG% = 0
  1188.   END IF
  1189. END IF
  1190.  
  1191. IF EXIT$ = "AUTO" THEN       ' Was not a F1 or F10 as EXIT$ = "AUTO".
  1192.   GOTO PREORDER              ' AUTOEXIT% can't = 0 so single field
  1193. END IF                       ' only will update ( for speed ).
  1194.                              ' Program can get here if cursor movement
  1195.                              ' key is pressed on fixed-choice field or
  1196.                              ' any other field
  1197.  
  1198. IF EXIT$ = "F10" THEN        ' F10 key was pressed to exit MULTINPT
  1199.   FERR% = 0
  1200.   FOR X% = 1 TO 14           ' check for blank fields
  1201.      SELECT CASE X%
  1202.          CASE 1, 4, 5, 6, 7, 12      ' fields require entry
  1203.             IF ORDER$(X%) = "" THEN
  1204.                FERR% = 1
  1205.                EXIT FOR
  1206.             END IF
  1207.          CASE 8, 9           ' fields 8 & 9 require entry if field 7 = "Y"
  1208.             IF ORDER$(7) = "Y" AND ORDER$(X%) = "" THEN
  1209.                 FERR% = 1
  1210.                 EXIT FOR
  1211.             ELSE
  1212.             IF ORDER$(7) = "N" AND ORDER$(X%) <> "" THEN
  1213.                    FERR% = 2
  1214.                    EXIT FOR
  1215.                 END IF
  1216.             END IF
  1217.          CASE 14             ' field 14 requires entry if field 13 has entry
  1218.             IF ORDER$(13) <> "" AND ORDER$(14) = "" THEN
  1219.                FERR% = 1
  1220.                EXIT FOR
  1221.             END IF
  1222.      END SELECT
  1223.   NEXT
  1224.  
  1225.   IF FERR% = 1 THEN           ' a blank field was found
  1226.      CALL GETANS("BLANK FIELD: Entry required.  Press any key...", "", "", 100, 100, 112, 11)
  1227.      FLD% = X%: AUTOEXIT% = 1: GOTO PREORDER
  1228.   ELSEIF FERR% = 2 THEN
  1229.      CALL GETANS("Field must be blank if Registered user field = N.  Press any key...", "", "", 100, 100, 112, 11)
  1230.      FLD% = X%: AUTOEXIT% = 1: GOTO PREORDER
  1231.   END IF
  1232.  
  1233.  
  1234.   GETANS "Prepare your printer.  Press any key when ready...", "", OANS$, 18, 100, 143, 2
  1235.   IF OANS$ = CHR$(27) THEN GOTO PREORDER
  1236.  
  1237.   ON ERROR GOTO PRINTERROR
  1238.      LI$ = STRING$(76, "-")
  1239.      LPRINT
  1240.      LPRINT TAB(4); LI$
  1241.      LPRINT TAB(28); "WINDOWS R-E-Z ORDER FORM"
  1242.      LPRINT TAB(34); "Version 4.10"
  1243.      LPRINT TAB(4); LI$
  1244.      LPRINT
  1245.      FOR P% = 1 TO 4
  1246.        LPRINT "    " + ORDER$(P%);
  1247.        IF P% = 1 THEN LPRINT TAB(53); "Date: " + ORDER$(6);
  1248.        IF P% = 2 THEN LPRINT TAB(53); "Registered User: " + ORDER$(7);
  1249.        IF P% = 3 THEN LPRINT TAB(53); "Registration Number: " + ORDER$(8)
  1250.        IF P% = 4 THEN
  1251.           LPRINT "   " + ORDER$(5);
  1252.           LPRINT TAB(53); "Registered Version: " + ORDER$(9)
  1253.        ELSE
  1254.           LPRINT : LPRINT
  1255.        END IF
  1256.      NEXT
  1257.      LPRINT
  1258.      LPRINT TAB(4); LI$
  1259.      LPRINT
  1260.      LPRINT "    Programming Language: " + ORDER$(10)
  1261.      LPRINT
  1262.      LPRINT "    Disk Size: " + ORDER$(11)
  1263.      LPRINT
  1264.      LPRINT TAB(4); LI$
  1265.      LPRINT
  1266.      LPRINT "    Visa / Master card # " + ORDER$(13); TAB(55); "Expiration Date: " + ORDER$(14)
  1267.      LPRINT
  1268.      LPRINT TAB(4); LI$
  1269.      LPRINT
  1270.      LPRINT TAB(35); "Registration / Update fee: -------- ";
  1271.      IF ORDER$(7) = "N" THEN
  1272.         FEE$ = "$30.00": FEE = 30
  1273.      ELSE
  1274.         IF ORDER$(9) = "4.00" OR ORDER$(9) = "4.01" THEN
  1275.            FEE$ = "$15.00": FEE = 15
  1276.         ELSE
  1277.            FEE$ = "$20.00": FEE = 20
  1278.         END IF
  1279.      END IF
  1280.      LPRINT FEE$
  1281.      LPRINT
  1282.      LPRINT TAB(35); "Hard copy documentation charge ---- ";
  1283.      IF ORDER$(12) = "Y" THEN
  1284.         FEE$ = "$10.00": FEE = FEE + 10
  1285.      ELSE
  1286.         FEE$ = ""
  1287.      END IF
  1288.      LPRINT FEE$
  1289.      LPRINT
  1290.      LPRINT TAB(35); "Shipping and Handling--------------  $2.50"
  1291.      LPRINT
  1292.      FEE$ = STR$(FEE + 2.5): MID$(FEE$, 1) = "$"
  1293.      
  1294.      LPRINT TAB(35); "             TOTAL CHARGE --------- ";
  1295.      LPRINT USING "$##.##"; FEE + 2.5
  1296.      LPRINT
  1297.      LPRINT TAB(4); LI$
  1298.      LPRINT
  1299.      LPRINT "    Make checks and money orders payable to: CONNECT Software"
  1300.      LPRINT
  1301.      LPRINT "    Send completed order form to:   CONNECT Software"
  1302.      LPRINT TAB(37); "6192 Fawn Meadow"
  1303.      LPRINT TAB(37); "Farmington, NY   14425"
  1304.      LPRINT
  1305.      LPRINT
  1306.      LPRINT "    Orders paid with a credit card or money order will be shipped within "
  1307.      LPRINT "    two weeks of receipt.  Orders paid with checks will be shipped within"
  1308.      LPRINT "    three weeks of receipt."
  1309.      LPRINT
  1310.      LPRINT "    Phone Orders - 6:OOpm - 9:00pm EST  Monday - Friday"
  1311.      LPRINT "                 - 1:OOpm - 5:00pm EST  Saturday - Sunday"
  1312.      LPRINT "                 - (716) 924-3439"
  1313.      LPRINT
  1314.      LPRINT "    Call person to person for RICH - CONNECT SOFTWARE"
  1315.  
  1316.      LPRINT TAB(4); LI$
  1317.      LPRINT CHR$(12)
  1318. DONEORDER:
  1319.      ON ERROR GOTO 0
  1320.  
  1321. END IF
  1322.  
  1323.  
  1324. RSTRWIND 1, 1                  ' It was a function key
  1325. GOTO PREMAIN.MENU
  1326. CASE ELSE
  1327.    
  1328. END SELECT
  1329. GOTO MAIN.MENU
  1330.  
  1331. PRINTERROR:
  1332.    GETANS "PRINTER ERROR:  (R)etry or (A)bort.", "RA", OANS$, 100, 100, 143, 2
  1333.    IF OANS$ = "R" THEN RESUME ELSE RESUME DONEORDER
  1334.  
  1335. SPINST:
  1336.   IF WFLAG% = 0 THEN
  1337.     CALL MAKEWIND(3, "", 18, 100, 75, 3, 240, 1)
  1338.     NEWCOLOR 15
  1339.     CALL PRINTW("Press SPACE BAR for selection. Press cursor movement key to exit field.", 1, 100)
  1340.     CHNGWIND 1
  1341.     WFLAG% = 1
  1342.   END IF
  1343. RETURN
  1344.  
  1345. '------ SUB FOR COLOR OR MONO DISPLAY \ SUB FOR PRESS ANY KEY ---------------
  1346.  
  1347. COL:
  1348.   IF DEMOATTR% = 112 THEN A% = 15
  1349. RETURN
  1350.  
  1351. Press:
  1352. GETANS "Press any key " + GA$, "", ANS$, 22, 100, A% + 128, 41
  1353. RETURN
  1354. NEWSTR:
  1355.   SA% = INSTR(S$, "@")
  1356.   IF SA% THEN S$ = LEFT$(S$, SA% - 1) + MID$(S$, SA% + 1)
  1357. RETURN
  1358.  
  1359. SETPARAMETERS:
  1360.   CALL SETWIND(FAST%, SND%, SHADCOL%, NOHI%, DECPOINT%, SCROLLARROW%)
  1361.   IF Q% = 1 THEN Q% = 0: RETURN
  1362.   IF DEMOATTR% = 112 THEN A% = 112 ELSE A% = 120
  1363.   IF FAST% = 1 THEN W% = 5 ELSE W% = 4
  1364.   CALL CHNGPULL(3, W%, A%)              ' DISABLE SELECTION FOR FAST PRINT.
  1365.   IF SND% = 1 THEN W% = 2 ELSE IF SND% = 2 THEN W% = 1 ELSE W% = 3
  1366.   CALL CHNGPULL(5, W%, A%)              ' DISABLE SELECTION FOR "CLICK" SOUND.
  1367.   IF NOHI% = 1 THEN W% = 3 ELSE IF SHADCOL% = 8 THEN W% = 2 ELSE W% = 1
  1368.   CALL CHNGPULL(6, W%, A%)               ' DISAPLE SELECTION FOR COLOR OR B/W
  1369. RETURN
  1370.  
  1371.