home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / qbasic / qwez42.zip / DEMO.BAS < prev    next >
BASIC Source File  |  1991-04-01  |  55KB  |  1,397 lines

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