' +---------------------------------------------------------------------+ ' | | ' | - C V I C O D E . B a s - | ' | | ' | Public Domain - FreeWare | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | CviCode.Bas was written by Don Smith. | ' | EMail: smithdonb@earthlink.net | ' | Todays date is: 08/24/2008 | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | - ABOUT THE AUTHOR - | ' +---------------------------------------------------------------------+ ' | Hello. My name is Don Smith and I am a retired Math/History/Spanish | ' | teacher residing in Orange County, California. I am also a former | ' | 6-year Sergeant of Marines. Who-Rah! On certain forums I am known | ' | as MarineDon. My email is: smithdonb@earthlink.net | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | - COPYING AND DISTIBUTING - | ' +---------------------------------------------------------------------+ ' | Since this code is public domain and freeware, anyone may freely | ' | copy and distribute it. If you use the QuickBasic code in one of | ' | your own programs, you do not have to cite my name as the author, | ' | and you may even change its name. | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | | ' | Compile: BC: CviCode.Bas | ' | LINK: CviCode.Bas | ' | LIB: BCom45.Lib | ' +---------------------------------------------------------------------+ DECLARE SUB TinyBox (ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) charhunt: COLOR 15, 1: CLS '====================================================================== ' Set up for SUB TinyBox for box at top/center '====================================================================== ULRow = 1 ULCol = 23 LRRow = 3 LRCol = 57 BoxFGColr = 15 BoxBGColr = 1 SingOrDoub = 1 CALL TinyBox(ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) LOCATE 2, 26, 0, 0, 0 COLOR 15, 1: PRINT "K e y C o d e P r o g r a m"; '====================================================================== ' Set up for SUB TinyBox for main box '====================================================================== ULRow = 4 ULCol = 2 LRRow = 25 LRCol = 78 BoxFGColr = 15 BoxBGColr = 1 SingOrDoub = 1 CALL TinyBox(ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) Ms1$ = "Press to exit or for information. Please do not press these" Ms2$ = "keys otherwise. is number 27 and is number 15104." Ms3$ = "Ã" + STRING$(76, 196) + "´" Ms4$ = "Press any key or key combination to find the CVI keycode number:" COLOR 15, 1 LOCATE 5, 5: PRINT Ms1$; COLOR 11, 1 LOCATE 5, 12: PRINT "Esc"; LOCATE 5, 29: PRINT "F1"; COLOR 15, 1 LOCATE 6, 5: PRINT Ms2$; LOCATE 8, 2: PRINT Ms3$; LOCATE 7, 5: PRINT Ms4$; CVICol% = 9 CVIRow% = 8 DO DO WhatNum$ = INKEY$ LOOP UNTIL LEN(WhatNum$) > 0 k% = CVI(WhatNum$ + CHR$(0)) SELECT CASE k% CASE 27 'ESC key CLS : END CASE 15104 'F1 key GOSUB cvi.information GOTO charhunt CASE ELSE Info = 0: Info3 = 0 GOSUB find.number GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 SELECT CASE k% CASE 127 TO 255 'Extended ASCII, characters 127 to 255 COLOR 15, 1 PRINT "Extended ASCII..."; CHR$(k%); ".. = " + STR$(k%); CASE 10 COLOR 15, 1 PRINT " J or j....... = 10"; GOSUB set.row.col LOCATE CVIRow%, CVICol%: PRINT " ...... = 10"; LOCATE 25, 35: PRINT "[ *Same ]"; COLOR 14, 1 LOCATE CVIRow%, CVICol% - 1, 0, 0, 0: PRINT "*"; LOCATE 25, 37: PRINT "*"; CASE 16 COLOR 15, 1 PRINT " P or p....... = 16"; GOSUB set.row.col LOCATE CVIRow%, CVICol%: PRINT " = 16"; LOCATE 25, 35: PRINT "[ *Same ]"; COLOR 14, 1 LOCATE CVIRow%, CVICol% - 1, 0, 0, 0: PRINT "*"; LOCATE CVIRow%, CVICol% - 1: PRINT "*"; LOCATE 25, 37: PRINT "*"; CASE IS <> 10, IS <> 16 IF LEN(k$) <= 20 THEN NumDots% = 20 - LEN(k$) END IF COLOR 15, 1 PRINT k$ + STRING$(NumDots%, ".") + " = " + STR$(k%); IF Info = 2 THEN COLOR 14, 1 LOCATE CVIRow%, CVICol% - 1: PRINT "*"; GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 COLOR 15, 1 PRINT k2$ + " = " + STR$(k%); LOCATE 25, 35: PRINT "[ *Same ]"; COLOR 14, 1 LOCATE CVIRow%, CVICol% - 1: PRINT "*"; LOCATE 25, 37: PRINT "*"; END IF IF Info3 = 3 THEN GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 COLOR 15, 1 PRINT k3$ + " = " + STR$(k%); COLOR 14, 1 LOCATE CVIRow%, CVICol% - 1: PRINT "*"; END IF IF Info4 = 4 THEN GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 COLOR 15, 1 PRINT k4$ + " = " + STR$(k%); COLOR 14, 1 LOCATE CVIRow%, CVICol% - 1: PRINT "*"; END IF END SELECT END SELECT Info = 0 Info3 = 0 Info4 = 0 LOOP set.row.col: IF CVICol% = 9 THEN CVICol% = 9 CVIRow% = CVIRow% + 1 IF CVIRow% > 23 THEN CVICol% = 43 CVIRow% = 9 END IF ELSEIF CVICol% = 43 THEN CVICol% = 43 CVIRow% = CVIRow% + 1 IF CVIRow% > 23 THEN FOR ClearScrn% = 9 TO 23 LOCATE ClearScrn%, 4 COLOR 15, 1 PRINT SPACE$(73); NEXT COLOR 15, 1 LOCATE 25, 2: PRINT "À" + STRING$(76, "Ä") + "Ù"; CVICol% = 9 CVIRow% = 9 END IF END IF RETURN find.number: IF k% = 97 THEN k$ = "a" IF k% = 98 THEN k$ = "b" IF k% = 99 THEN k$ = "c" IF k% = 100 THEN k$ = "d" IF k% = 101 THEN k$ = "e" IF k% = 102 THEN k$ = "f" IF k% = 103 THEN k$ = "g" IF k% = 104 THEN k$ = "h" IF k% = 105 THEN k$ = "i" IF k% = 106 THEN k$ = "j" IF k% = 107 THEN k$ = "k" IF k% = 108 THEN k$ = "l" IF k% = 109 THEN k$ = "m" IF k% = 110 THEN k$ = "n" IF k% = 111 THEN k$ = "o" IF k% = 112 THEN k$ = "p" IF k% = 113 THEN k$ = "q" IF k% = 114 THEN k$ = "r" IF k% = 115 THEN k$ = "s" IF k% = 116 THEN k$ = "t" IF k% = 117 THEN k$ = "u" IF k% = 118 THEN k$ = "v" IF k% = 119 THEN k$ = "w" IF k% = 120 THEN k$ = "x" IF k% = 121 THEN k$ = "y" IF k% = 122 THEN k$ = "z" IF k% = 65 THEN k$ = "A" IF k% = 66 THEN k$ = "B" IF k% = 67 THEN k$ = "C" IF k% = 68 THEN k$ = "D" IF k% = 69 THEN k$ = "E" IF k% = 70 THEN k$ = "F" IF k% = 71 THEN k$ = "G" IF k% = 72 THEN k$ = "H" IF k% = 73 THEN k$ = "I" IF k% = 74 THEN k$ = "J" IF k% = 75 THEN k$ = "K" IF k% = 76 THEN k$ = "L" IF k% = 77 THEN k$ = "M" IF k% = 78 THEN k$ = "N" IF k% = 79 THEN k$ = "O" IF k% = 80 THEN k$ = "P" IF k% = 81 THEN k$ = "Q" IF k% = 82 THEN k$ = "R" IF k% = 83 THEN k$ = "S" IF k% = 84 THEN k$ = "T" IF k% = 85 THEN k$ = "U" IF k% = 86 THEN k$ = "V" IF k% = 87 THEN k$ = "W" IF k% = 88 THEN k$ = "X" IF k% = 89 THEN k$ = "Y" IF k% = 90 THEN k$ = "Z" IF k% = 48 THEN k$ = "0" IF k% = 49 THEN k$ = "1" IF k% = 50 THEN k$ = "2" IF k% = 51 THEN k$ = "3" IF k% = 52 THEN k$ = "4" IF k% = 53 THEN k$ = "5" IF k% = 54 THEN k$ = "6" IF k% = 55 THEN k$ = "7" IF k% = 56 THEN k$ = "8" IF k% = 57 THEN k$ = "9" IF k% = 15104 THEN k$ = "F1" IF k% = 15360 THEN k$ = "F2" IF k% = 15616 THEN k$ = "F3" IF k% = 15872 THEN k$ = "F4" IF k% = 16128 THEN k$ = "F5" IF k% = 16384 THEN k$ = "F6" IF k% = 16640 THEN k$ = "F7" IF k% = 16896 THEN k$ = "F8" IF k% = 17152 THEN k$ = "F9" IF k% = 17408 THEN k$ = "F10" IF k% = 96 THEN k$ = "< ` >" IF k% = 126 THEN k$ = "< ~ >" IF k% = 33 THEN k$ = "< ! >" IF k% = 64 THEN k$ = "< @ >" IF k% = 35 THEN k$ = "< # >" IF k% = 36 THEN k$ = "< $ >" IF k% = 37 THEN k$ = "< % >" IF k% = 94 THEN k$ = "< ^ >" IF k% = 38 THEN k$ = "< & >" IF k% = 42 THEN k$ = "< * >" IF k% = 40 THEN k$ = "< ( >" IF k% = 41 THEN k$ = "< ) >" IF k% = 45 THEN k$ = "< - > Dash" IF k% = 61 THEN k$ = "< = >" IF k% = 95 THEN k$ = "< _ > Underline" IF k% = 43 THEN k$ = "< + >" 'IF k% = 9 THEN k$ = "" IF k% = 32 THEN k$ = "" IF k% = 91 THEN k$ = "< [ >" IF k% = 93 THEN k$ = "< ] >" IF k% = 92 THEN k$ = "< \ >" IF k% = 47 THEN k$ = "< / >" IF k% = 123 THEN k$ = "< { >" IF k% = 125 THEN k$ = "< } >" IF k% = 124 THEN k$ = "< | >" 'IF k% = 8 THEN k$ = "" IF k% = 27 THEN k$ = "" IF k% = 44 THEN k$ = "< , > Comma" IF k% = 46 THEN k$ = "< . > Period" IF k% = 20992 THEN k$ = "" IF k% = 21248 THEN k$ = "" IF k% = 18176 THEN k$ = "" IF k% = 20224 THEN k$ = "" IF k% = 18688 THEN k$ = "" IF k% = 20736 THEN k$ = "" IF k% = 18432 THEN k$ = "" IF k% = 20480 THEN k$ = "" IF k% = 19712 THEN k$ = "" IF k% = 19200 THEN k$ = "" IF k% = 60 THEN k$ = "( < )" IF k% = 62 THEN k$ = "( > )" IF k% = 63 THEN k$ = "< ? >" IF k% = 34 THEN k$ = "< " + CHR$(34) + " > Apostrophe" IF k% = 59 THEN k$ = "< ; > Semi-colon" IF k% = 58 THEN k$ = "< : > Colon" IF k% = 1 THEN k$ = " A or a" Info = 2 k2$ = " <1> on keypad " END IF IF k% = 2 THEN k$ = " B or b" Info = 2 k2$ = " <2> on keypad " Info3 = 3 k3$ = " <" + CHR$(25) + "> on keypad " END IF IF k% = 3 THEN k$ = " C or c" Info = 2 k2$ = " <3> on keypad " END IF IF k% = 4 THEN k$ = " D or d" Info = 2 k2$ = " <4> on keypad " Info3 = 3 k3$ = " <" + CHR$(17) + "-> on keypad" END IF IF k% = 5 THEN k$ = " E or e" Info = 2 k2$ = " <5> on keypad " END IF IF k% = 6 THEN k$ = " F or f" Info = 2 k2$ = " <6> on keypad " Info3 = 3 k3$ = " <-" + CHR$(16) + "> on keypad" END IF IF k% = 7 THEN k$ = " G or g" Info = 2 k2$ = " <7> on keypad " END IF IF k% = 8 THEN k$ = " H or h" Info = 2 k2$ = "<8><" + CHR$(24) + ">on keypad" Info3 = 3 k3$ = " " Info4 = 4 k4$ = "........." END IF IF k% = 9 THEN k$ = "" Info = 2 k2$ = " I or i......." Info3 = 3 k3$ = " <9> on keypad " END IF IF k% = 10 THEN k$ = " J or j" Info = 2 k2$ = " ......" END IF IF k% = 11 THEN k$ = " K or k" IF k% = 12 THEN k$ = " L or l" IF k% = 13 THEN k$ = " M or m" Info = 2 k2$ = "............." END IF IF k% = 14 THEN k$ = " N or n" IF k% = 15 THEN k$ = " O or o" IF k% = 17 THEN k$ = " Q or q" IF k% = 18 THEN k$ = " R or r" IF k% = 19 THEN k$ = " S or s" IF k% = 20 THEN k$ = " T or t" IF k% = 21 THEN k$ = " U or u" IF k% = 22 THEN k$ = " V or v" IF k% = 23 THEN k$ = " W or w" IF k% = 24 THEN k$ = " X or x" IF k% = 25 THEN k$ = " Y or y" IF k% = 26 THEN k$ = " Z or z" IF k% = 768 THEN k$ = "<2> under F keys" IF k% = 30 THEN k$ = "<6> under F keys" IF k% = 29 THEN k$ = " < ] >...." IF k% = 21504 THEN k$ = " F1" IF k% = 21760 THEN k$ = " F2" IF k% = 22016 THEN k$ = " F3" IF k% = 22272 THEN k$ = " F4" IF k% = 22528 THEN k$ = " F5" IF k% = 22784 THEN k$ = " F6" IF k% = 23040 THEN k$ = " F7" IF k% = 23296 THEN k$ = " F8" IF k% = 23552 THEN k$ = " F9" IF k% = 23808 THEN k$ = " F10" IF k% = 3840 THEN k$ = " " IF k% = -28160 THEN k$ = " " IF k% = -27904 THEN k$ = " " IF k% = 30464 THEN k$ = " " IF k% = -31744 THEN k$ = " " IF k% = 30208 THEN k$ = " " IF k% = -29440 THEN k$ = " " IF k% = -28416 THEN k$ = " " IF k% = 29696 THEN k$ = " " IF k% = 29440 THEN k$ = " " IF k% = -27648 THEN k$ = " " IF k% = -27392 THEN k$ = " " IF k% = 28 THEN k$ = " < \ >" IF k% = -27136 THEN k$ = " <* on keypad>" IF k% = 127 THEN k$ = " " IF k% = 31 THEN k$ = " < - >" IF k% = 29184 THEN k$ = " " IF k% = 7680 THEN k$ = " A or a" IF k% = 12288 THEN k$ = " B or b" IF k% = 11776 THEN k$ = " C or c" IF k% = 8192 THEN k$ = " D or d" IF k% = 4608 THEN k$ = " E or e" IF k% = 8448 THEN k$ = " F or f" IF k% = 8704 THEN k$ = " G or g" IF k% = 8960 THEN k$ = " H or h" IF k% = 5888 THEN k$ = " I or i" IF k% = 9216 THEN k$ = " J or j" IF k% = 9472 THEN k$ = " K or k" IF k% = 9728 THEN k$ = " L or l" IF k% = 12800 THEN k$ = " M or m" IF k% = 12544 THEN k$ = " N or n" IF k% = 6144 THEN k$ = " O or o" IF k% = 6400 THEN k$ = " P or p" IF k% = 4096 THEN k$ = " Q or q" IF k% = 4864 THEN k$ = " R or r" IF k% = 7936 THEN k$ = " S or s" IF k% = 5120 THEN k$ = " T or t" IF k% = 5632 THEN k$ = " U or u" IF k% = 12032 THEN k$ = " V or v" IF k% = 4352 THEN k$ = " W or w" IF k% = 11520 THEN k$ = " X or x" IF k% = 5376 THEN k$ = " Y or y" IF k% = 11264 THEN k$ = " Z or z" IF k% = -23296 THEN k$ = " " IF k% = -24064 THEN k$ = " " IF k% = -23808 THEN k$ = " " IF k% = -26880 THEN k$ = " " IF k% = -24832 THEN k$ = " " IF k% = -26368 THEN k$ = " " IF k% = -24320 THEN k$ = " " IF k% = 13056 THEN k$ = " < " IF k% = 13312 THEN k$ = " > " IF k% = 13568 THEN k$ = " < / >" IF k% = 9984 THEN k$ = " < ; > Semi-colon" IF k% = 10240 THEN k$ = " < ' >" IF k% = 6656 THEN k$ = " < [ >" IF k% = 6912 THEN k$ = " < ] >" IF k% = 11008 THEN k$ = " < \ >" IF k% = 32512 THEN k$ = " <0>" IF k% = 30720 THEN k$ = " <1>" IF k% = 30976 THEN k$ = " <2>" IF k% = 31232 THEN k$ = " <3>" IF k% = 31488 THEN k$ = " <4>" IF k% = 31744 THEN k$ = " <5>" IF k% = 32000 THEN k$ = " <6>" IF k% = 32256 THEN k$ = " <7>" IF k% = 32512 THEN k$ = " <8>" IF k% = -32768 THEN k$ = " <9>" IF k% = -32512 THEN k$ = " <0>" IF k% = 9984 THEN k$ = " < ; >Semi-Colon" IF k% = 10496 THEN k$ = " < ` >" IF k% = -32256 THEN k$ = " < - >" IF k% = -32000 THEN k$ = " < = >" IF k% = -26624 THEN k$ = " " IF k% = -24576 THEN k$ = " " IF k% = -25344 THEN k$ = " " IF k% = -25856 THEN k$ = " " IF k% = 7168 THEN k$ = " " IF k% = -23552 THEN k$ = " < / on keypad>" IF k% = 14080 THEN k$ = " < * on keypad>" IF k% = 19968 THEN k$ = " < + on keypad>" IF k% = -28672 THEN k$ = " < + on keypad>" IF k% = 29952 THEN k$ = " <1> on keypad" Info = 2 k2$ = " ........" END IF IF k% = -28416 THEN k$ = " <2> on keypad" Info = 2 k2$ = " " END IF IF k% = 30208 THEN k$ = " <3> on keypad" Info = 2 k2$ = " .." END IF IF k% = 29440 THEN k$ = " <4> on keypad" Info = 2 k2$ = " " END IF IF k% = -28928 THEN k$ = " <5 on keypad>" IF k% = 29696 THEN k$ = " <6> on keypad" Info = 2 k2$ = " " END IF IF k% = 30464 THEN k$ = " <7> on keypad" Info = 2 k2$ = " ......." END IF IF k% = -29440 THEN k$ = " <8> on keypad" Info = 2 k2$ = " " END IF IF k% = -31744 THEN k$ = " <9> on keypad" Info = 2 k2$ = " ...." END IF IF k% = 20992 THEN k$ = "" IF k% = 24064 THEN k$ = " F1" IF k% = 24320 THEN k$ = " F2" IF k% = 24576 THEN k$ = " F3" IF k% = 24832 THEN k$ = " F4" IF k% = 25088 THEN k$ = " F5" IF k% = 25344 THEN k$ = " F6" IF k% = 25600 THEN k$ = " F7" IF k% = 25856 THEN k$ = " F8" IF k% = 26112 THEN k$ = " F9" IF k% = 26368 THEN k$ = " F10" IF k% = 3584 THEN k$ = " " IF k% = 26624 THEN k$ = " F1" IF k% = 26880 THEN k$ = " F2" IF k% = 27136 THEN k$ = " F3" IF k% = 27392 THEN k$ = " F4" IF k% = 27648 THEN k$ = " F5" IF k% = 27904 THEN k$ = " F6" IF k% = 28160 THEN k$ = " F7" IF k% = 28416 THEN k$ = " F8" IF k% = 28672 THEN k$ = " F9" IF k% = 28928 THEN k$ = " F10" RETURN cvi.information: COLOR 15, 1: CLS REDIM Cvi.Info$(1 TO 23) Cvi.Info$(1) = "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" Cvi.Info$(2) = "³ Use The CVI Command To Trap Keyboard Keys : ³" Cvi.Info$(3) = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´" Cvi.Info$(4) = "³ The CVI QuickBasic command returns unique numbers which ³" Cvi.Info$(5) = "³ enable the programmer to employ almost all keys of the ³" Cvi.Info$(6) = "³ keyboard. Set up a double DO: LOOP as follows: ³" Cvi.Info$(7) = "³ (An example only:) ³" Cvi.Info$(8) = "³ DO ³" Cvi.Info$(9) = "³ DO ³" Cvi.Info$(10) = "³ PressKey$ = INKEY$ ³" Cvi.Info$(11) = "³ LOOP until LEN(PressKey$) > 0 ³" Cvi.Info$(12) = "³ KeyPressed% = CVI(PressKey$ + CHR$(0)) ³" Cvi.Info$(13) = "³ SELECT CASE KeyPressed% ³" Cvi.Info$(14) = "³ CASE 15104 ' Key ³" Cvi.Info$(15) = "³ GOSUB Information ³" Cvi.Info$(16) = "³ CASE 27: CLS: END ' ³" Cvi.Info$(17) = "³ END SELECT ³" Cvi.Info$(18) = "³ LOOP ³" Cvi.Info$(19) = "³ ³" Cvi.Info$(20) = "³ The programmer can continue to create a list of CASE ³" Cvi.Info$(21) = "³ or IF/ELSEIF commands to take care of the key presses. ³" Cvi.Info$(22) = "³ ³" Cvi.Info$(23) = "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ Press To Exit ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" COLOR 15, 1 FOR InfoScreen% = 1 TO 23 LOCATE InfoScreen% + 1, 11, 0, 0, 0 PRINT Cvi.Info$(InfoScreen%); NEXT COLOR 11, 1 LOCATE 3, 20: PRINT "Use The CVI Command To Trap Keyboard Keys :"; LOCATE 24, 30: PRINT "Press To Exit"; COLOR 15, 1 LOCATE 24, 37, 0, 0, 0: PRINT "Esc"; DO: LOOP UNTIL INKEY$ = CHR$(27) RETURN SUB TinyBox (ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) ' +----------------------------------------------------------------------+ ' | SUB TinyBox | ' +----------------------------------------------------------------------+ ' | ULRow = Upper Left Row. ULCol = Upper Left Column. | ' | LRRow = Lower Right Row. LRCol = Lower Right Column. | ' | BoxFGColr = The Foreground Color The Box. | ' | BoxBGColr = The Back Ground Color Of The Box. | ' | SingOrDoub = 1 (Single Line Box). SingOrDoub = 2 (Double Line Box). | ' +----------------------------------------------------------------------+ COLOR BoxFGColr, BoxBGColr IF SingOrDoub = 1 THEN LOCATE ULRow, ULCol PRINT CHR$(218) + STRING$(LRCol - ULCol, CHR$(196)) + CHR$(191); FOR BoxY = ULRow + 1 TO LRRow - 1 LOCATE BoxY, ULCol PRINT CHR$(179) + STRING$(LRCol - ULCol, " ") + CHR$(179); NEXT LOCATE LRRow, ULCol PRINT CHR$(192) + STRING$(LRCol - ULCol, CHR$(196)) + CHR$(217); ELSEIF SingOrDoub = 2 THEN LOCATE ULRow, ULCol PRINT CHR$(201) + STRING$(LRCol - ULCol, CHR$(205)) + CHR$(187); FOR BoxY = ULRow + 1 TO LRRow - 1 LOCATE BoxY, ULCol PRINT CHR$(186) + STRING$(LRCol - ULCol, " ") + CHR$(186); NEXT LOCATE LRRow, ULCol PRINT CHR$(200) + STRING$(LRCol - ULCol, CHR$(205)) + CHR$(188); END IF END SUB