home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / dnalib7a.zip / CALCBOX.BAS < prev    next >
BASIC Source File  |  1994-05-14  |  15KB  |  404 lines

  1. DECLARE SUB Popwind(Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%)
  2. DECLARE SUB RestoreScreen(ScreenID$,TopRow%,LeftColumn%)
  3. DECLARE SUB SaveScreen(ScreenID$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%)
  4. DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%)
  5. DECLARE SUB Clicked(Rgt%,Lft%,Row%,Col%)
  6. DECLARE SUB HideCursor()
  7. DECLARE SUB ShowCursor()
  8. DECLARE FUNCTION LeftButtonReleased%()
  9.  
  10. SUB CalcBox(Mouse%,Fill%,TopRow%,LeftColumn%,ButtonAttr%,TextAttr%,Attr%,Shadow%,Border%)PUBLIC
  11.  
  12. $CODE SEG "DNASEG2"
  13.  
  14. CalcByte Attr%,FGround%,BGround%
  15. CalcByte ButtonAttr%,BtFG%,BtBG%
  16.  
  17. Math$ = ""
  18. NoPoint% = 1
  19.  
  20. IF Mouse% THEN HideCursor
  21.  
  22. RightColumn% = LeftColumn% + 25
  23.  
  24. SaveScreen CalcScreen$,TopRow%,LeftColumn%,TopRow% + 13,RightColumn%,Shadow%
  25.  
  26. Popwind Title$,TopRow%,LeftColumn%,TopRow% + 13,RightColumn%,Attr%,Shadow%,Border%
  27.  
  28. IF Mouse% THEN
  29.   COLOR FGround%,BGround%
  30.   LOCATE TopRow%,LeftColumn% + 2,0
  31.   PRINT CHR$(91,254,93);
  32. END IF
  33.  
  34. DO
  35.  
  36. COLOR 14,0
  37. LOCATE TopRow% + 1,LeftColumn% + 2,0: PRINT LEFT$(Math$ + STRING$(22,176),22);
  38.  
  39. COLOR BtFG%,BtBG%
  40. LOCATE TopRow% + 3,LeftColumn% + 2,0: PRINT "NUM";
  41. LOCATE TopRow% + 3,LeftColumn% + 8,0: PRINT " / ";
  42. LOCATE TopRow% + 3,LeftColumn% + 14,0: PRINT " * ";
  43. LOCATE TopRow% + 3,LeftColumn% + 20,0: PRINT " - ";
  44.  
  45. LOCATE TopRow% + 5,LeftColumn% + 2,0: PRINT " 7 ";
  46. LOCATE TopRow% + 5,LeftColumn% + 8,0: PRINT " 8 ";
  47. LOCATE TopRow% + 5,LeftColumn% + 14,0: PRINT " 9 ";
  48. LOCATE TopRow% + 5,LeftColumn% + 20,0: PRINT "   ";
  49.  
  50. LOCATE TopRow% + 6,LeftColumn% + 20,0: PRINT " + ";
  51.  
  52. LOCATE TopRow% + 7,LeftColumn% + 2,0: PRINT " 4 ";
  53. LOCATE TopRow% + 7,LeftColumn% + 8,0: PRINT " 5 ";
  54. LOCATE TopRow% + 7,LeftColumn% + 14,0: PRINT " 6 ";
  55. LOCATE TopRow% + 7,LeftColumn% + 20,0: PRINT "   ";
  56.  
  57. LOCATE TopRow% + 9,LeftColumn% + 2,0: PRINT " 1 ";
  58. LOCATE TopRow% + 9,LeftColumn% + 8,0: PRINT " 2 ";
  59. LOCATE TopRow% + 9,LeftColumn% + 14,0: PRINT " 3 ";
  60. LOCATE TopRow% + 9,LeftColumn% + 20,0: PRINT "   ";
  61.  
  62. LOCATE TopRow% + 10,LeftColumn% + 20,0: PRINT " = ";
  63.  
  64. LOCATE TopRow% + 11,LeftColumn% + 2,0: PRINT "    0    ";
  65. LOCATE TopRow% + 11,LeftColumn% + 14,0: PRINT " . ";
  66. LOCATE TopRow% + 11,LeftColumn% + 20,0: PRINT "   ";
  67.  
  68. COLOR 0,BGround%
  69.  
  70. LOCATE TopRow% + 3,LeftColumn% + 5,0: PRINT "▄";
  71. LOCATE TopRow% + 3,LeftColumn% + 11,0: PRINT "▄";
  72. LOCATE TopRow% + 3,LeftColumn% + 17,0: PRINT "▄";
  73. LOCATE TopRow% + 3,LeftColumn% + 23,0: PRINT "▄";
  74.  
  75. LOCATE TopRow% + 5,LeftColumn% + 5,0: PRINT "▄";
  76. LOCATE TopRow% + 5,LeftColumn% + 11,0: PRINT "▄";
  77. LOCATE TopRow% + 5,LeftColumn% + 17,0: PRINT "▄";
  78. LOCATE TopRow% + 5,LeftColumn% + 23,0: PRINT "▄";
  79.  
  80. LOCATE TopRow% + 6,LeftColumn% + 23,0: PRINT "█";
  81.  
  82. LOCATE TopRow% + 7,LeftColumn% + 5,0: PRINT "▄";
  83. LOCATE TopRow% + 7,LeftColumn% + 11,0: PRINT "▄";
  84. LOCATE TopRow% + 7,LeftColumn% + 17,0: PRINT "▄";
  85. LOCATE TopRow% + 7,LeftColumn% + 23,0: PRINT "█";
  86.  
  87. LOCATE TopRow% + 9,LeftColumn% + 5,0: PRINT "▄";
  88. LOCATE TopRow% + 9,LeftColumn% + 11,0: PRINT "▄";
  89. LOCATE TopRow% + 9,LeftColumn% + 17,0: PRINT "▄";
  90. LOCATE TopRow% + 9,LeftColumn% + 23,0: PRINT "▄";
  91.  
  92. LOCATE TopRow% + 11,LeftColumn% + 11,0: PRINT "▄";
  93. LOCATE TopRow% + 11,LeftColumn% + 17,0: PRINT "▄";
  94. LOCATE TopRow% + 11,LeftColumn% + 23,0: PRINT "█";
  95.  
  96.  
  97. LOCATE TopRow% + 10,LeftColumn% + 23,0: PRINT "█";
  98.  
  99. LOCATE TopRow% + 4,LeftColumn% + 3,0: PRINT "▀▀▀";
  100. LOCATE TopRow% + 4,LeftColumn% + 9,0: PRINT "▀▀▀";
  101. LOCATE TopRow% + 4,LeftColumn% + 15,0: PRINT "▀▀▀";
  102. LOCATE TopRow% + 4,LeftColumn% + 21,0: PRINT "▀▀▀";
  103.  
  104. LOCATE TopRow% + 6,LeftColumn% + 3,0: PRINT "▀▀▀";
  105. LOCATE TopRow% + 6,LeftColumn% + 9,0: PRINT "▀▀▀";
  106. LOCATE TopRow% + 6,LeftColumn% + 15,0: PRINT "▀▀▀";
  107.  
  108. LOCATE TopRow% + 8,LeftColumn% + 3,0: PRINT "▀▀▀";
  109. LOCATE TopRow% + 8,LeftColumn% + 9,0: PRINT "▀▀▀";
  110. LOCATE TopRow% + 8,LeftColumn% + 15,0: PRINT "▀▀▀";
  111. LOCATE TopRow% + 8,LeftColumn% + 21,0: PRINT "▀▀▀";
  112.  
  113. LOCATE TopRow% + 10,LeftColumn% + 3,0: PRINT "▀▀▀";
  114. LOCATE TopRow% + 10,LeftColumn% + 9,0: PRINT "▀▀▀";
  115. LOCATE TopRow% + 10,LeftColumn% + 15,0: PRINT "▀▀▀";
  116.  
  117. LOCATE TopRow% + 12,LeftColumn% + 3,0: PRINT "▀▀▀▀▀▀▀▀▀";
  118. LOCATE TopRow% + 12,LeftColumn% + 15,0: PRINT "▀▀▀";
  119. LOCATE TopRow% + 12,LeftColumn% + 21,0: PRINT "▀▀▀";
  120.  
  121.  
  122.  
  123. WHILE NOT INSTAT
  124.   IF Mouse% THEN
  125.     ShowCursor
  126.     Rgt% = 0:Lft% = 0:MRow% = 0:MCol% = 0
  127.     Clicked Rgt%,Lft%,MRow%,MCol%
  128.     IF Lft% AND MRow% >= TopRow% AND MRow% < TopRow% + 14_
  129.      AND MCol% >= LeftColumn% AND MCol% =< RightColumn% THEN
  130.       SELECT CASE MRow%
  131.         CASE TopRow%
  132.           IF MCol% = LeftColumn% + 3 THEN
  133.             IF LeftButtonReleased% THEN
  134.                 Ky$ = CHR$(27): HideCursor: GOTO MouseJump
  135.             END IF
  136.           END IF
  137.         CASE TopRow% + 3
  138.           SELECT CASE MCol%
  139.             CASE LeftColumn% + 8 to LeftColumn% + 10  '/
  140.               IF LeftButtonReleased% THEN
  141.                 Ky$ = "/": HideCursor: GOTO MouseJump
  142.               END IF
  143.             CASE LeftColumn% + 14 to LeftColumn% + 16  '*
  144.               IF LeftButtonReleased% THEN
  145.                 Ky$ = "*": HideCursor: GOTO MouseJump
  146.               END IF
  147.             CASE LeftColumn% + 20 to LeftColumn% + 22  '-
  148.               IF LeftButtonReleased% THEN
  149.                 Ky$ = "-": HideCursor: GOTO MouseJump
  150.               END IF
  151.           END SELECT
  152.         CASE TopRow% + 5
  153.           SELECT CASE MCol%
  154.             CASE LeftColumn% + 2 to LeftColumn% + 6    '7
  155.               IF LeftButtonReleased% THEN
  156.                 Ky$ = "7": HideCursor: GOTO MouseJump
  157.               END IF
  158.             CASE LeftColumn% + 8 to LeftColumn% + 10   '8
  159.               IF LeftButtonReleased% THEN
  160.                 Ky$ = "8": HideCursor: GOTO MouseJump
  161.               END IF
  162.             CASE LeftColumn% + 14 to LeftColumn% + 16  '9
  163.               IF LeftButtonReleased% THEN
  164.                 Ky$ = "9": HideCursor: GOTO MouseJump
  165.               END IF
  166.             CASE LeftColumn% + 20 to LeftColumn% + 22  '+
  167.               IF LeftButtonReleased% THEN
  168.                 Ky$ = "+": HideCursor: GOTO MouseJump
  169.               END IF
  170.           END SELECT
  171.         CASE TopRow% + 6
  172.           SELECT CASE MCol%
  173.             CASE LeftColumn% + 20 to LeftColumn% + 22  '+
  174.               IF LeftButtonReleased% THEN
  175.                 Ky$ = "+": HideCursor: GOTO MouseJump
  176.               END IF
  177.           END SELECT
  178.         CASE TopRow% + 7
  179.           SELECT CASE MCol%
  180.             CASE LeftColumn% + 2 to LeftColumn% + 4    '4
  181.               IF LeftButtonReleased% THEN
  182.                 Ky$ = "4": HideCursor: GOTO MouseJump
  183.               END IF
  184.             CASE LeftColumn% + 8 to LeftColumn% + 10   '5
  185.               IF LeftButtonReleased% THEN
  186.                 Ky$ = "5": HideCursor: GOTO MouseJump
  187.               END IF
  188.             CASE LeftColumn% + 14 to LeftColumn% + 16  '6
  189.               IF LeftButtonReleased% THEN
  190.                 Ky$ = "6": HideCursor: GOTO MouseJump
  191.               END IF
  192.             CASE LeftColumn% + 20 to LeftColumn% + 22  '+
  193.               IF LeftButtonReleased% THEN
  194.                 Ky$ = "+": HideCursor: GOTO MouseJump
  195.               END IF
  196.           END SELECT
  197.         CASE TopRow% + 9
  198.           SELECT CASE MCol%
  199.             CASE LeftColumn% + 2 to LeftColumn% + 4    '1
  200.               IF LeftButtonReleased% THEN
  201.                 Ky$ = "1": HideCursor: GOTO MouseJump
  202.               END IF
  203.             CASE LeftColumn% + 8 to LeftColumn% + 10   '2
  204.               IF LeftButtonReleased% THEN
  205.                 Ky$ = "2": HideCursor: GOTO MouseJump
  206.               END IF
  207.             CASE LeftColumn% + 14 to LeftColumn% + 16  '3
  208.               IF LeftButtonReleased% THEN
  209.                 Ky$ = "3": HideCursor: GOTO MouseJump
  210.               END IF
  211.             CASE LeftColumn% + 20 to LeftColumn% + 22  'Enter
  212.               IF LeftButtonReleased% THEN
  213.                 Ky$ = CHR$(13): HideCursor: GOTO MouseJump
  214.               END IF
  215.           END SELECT
  216.         CASE TopRow% + 10
  217.           SELECT CASE MCol%
  218.             CASE LeftColumn% + 20 to LeftColumn% + 22  'Enter
  219.               IF LeftButtonReleased% THEN
  220.                 Ky$ = CHR$(13): HideCursor: GOTO MouseJump
  221.               END IF
  222.           END SELECT
  223.         CASE TopRow% + 11
  224.           SELECT CASE MCol%
  225.             CASE LeftColumn% + 2 to LeftColumn% + 10    '0
  226.               IF LeftButtonReleased% THEN
  227.                 Ky$ = "0": HideCursor: GOTO MouseJump
  228.               END IF
  229.             CASE LeftColumn% + 14 to LeftColumn% + 16   '.
  230.               IF LeftButtonReleased% THEN
  231.                 Ky$ = ".": HideCursor: GOTO MouseJump
  232.               END IF
  233.             CASE LeftColumn% + 20 to LeftColumn% + 22   'Enter
  234.               IF LeftButtonReleased% THEN
  235.                 Ky$ = CHR$(13): HideCursor: GOTO MouseJump
  236.               END IF
  237.           END SELECT
  238.       END SELECT
  239.     ELSE
  240.       IF LeftButtonReleased% THEN
  241.         Ky$ = CHR$(27): HideCursor: GOTO MouseJump
  242.       END IF
  243.     END IF
  244.   END IF
  245. WEND
  246.  
  247. Ky$ = INKEY$
  248.  
  249. MouseJump:
  250.  
  251. IF LEN(Ky$) = 1 THEN
  252.   Choice% = ASC(Ky$)
  253. ELSE
  254.   Choice% = -ASC(RIGHT$(Ky$,1))
  255. END IF
  256.  
  257. SELECT CASE Choice%
  258.  
  259.         CASE 13     'EnterKey
  260.           COLOR BtFG%,BtBG%
  261.           LOCATE TopRow% + 9,LeftColumn% + 21,0: PRINT "   ";
  262.           LOCATE TopRow% + 10,LeftColumn% + 21,0: PRINT " = ";
  263.           LOCATE TopRow% + 11,LeftColumn% + 21,0: PRINT "   ";
  264.           COLOR 0,BGround%
  265.           LOCATE TopRow% + 12,LeftColumn% + 21,0: PRINT "   ";
  266.           LOCATE TopRow% + 9,LeftColumn% + 20,0: PRINT " ";
  267.           LOCATE TopRow% + 10,LeftColumn% + 20,0: PRINT " ";
  268.           LOCATE TopRow% + 11,LeftColumn% + 20,0: PRINT " ";
  269.           Math$ = ""
  270.         CASE 27     'Esc
  271.           EXIT LOOP
  272.         CASE 42     '*
  273.           COLOR BtFG%,BtBG%
  274.           LOCATE TopRow% + 3,LeftColumn% + 15,0: PRINT " * ";
  275.           COLOR 0,BGround%
  276.           LOCATE TopRow% + 4,LeftColumn% + 15,0: PRINT "   ";
  277.           LOCATE TopRow% + 3,LeftColumn% + 14,0: PRINT " ";
  278.           GOSUB Multiplication
  279.         CASE 43     '+
  280.           COLOR BtFG%,BtBG%
  281.           LOCATE TopRow% + 5,LeftColumn% + 21,0: PRINT "   ";
  282.           LOCATE TopRow% + 6,LeftColumn% + 21,0: PRINT " + ";
  283.           LOCATE TopRow% + 7,LeftColumn% + 21,0: PRINT "   ";
  284.           COLOR 0,BGround%
  285.           LOCATE TopRow% + 8,LeftColumn% + 21,0: PRINT "   ";
  286.           LOCATE TopRow% + 5,LeftColumn% + 20,0: PRINT " ";
  287.           LOCATE TopRow% + 6,LeftColumn% + 20,0: PRINT " ";
  288.           LOCATE TopRow% + 7,LeftColumn% + 20,0: PRINT " ";
  289.           GOSUB Addition
  290.         CASE 45     '-
  291.           COLOR BtFG%,BtBG%
  292.           LOCATE TopRow% + 3,LeftColumn% + 21,0: PRINT " - ";
  293.           COLOR 0,BGround%
  294.           LOCATE TopRow% + 4,LeftColumn% + 21,0: PRINT "   ";
  295.           LOCATE TopRow% + 3,LeftColumn% + 20,0: PRINT " ";
  296.           GOSUB Subtraction
  297.         CASE 46     '.
  298.           COLOR BtFG%,BtBG%
  299.           LOCATE TopRow% + 11,LeftColumn% + 15,0: PRINT " . ";
  300.           COLOR 0,BGround%
  301.           LOCATE TopRow% + 12,LeftColumn% + 15,0: PRINT "   ";
  302.           LOCATE TopRow% + 11,LeftColumn% + 14,0: PRINT " ";
  303.           IF NoPoint% THEN Math$ = Math$ + Ky$ :NoPoint% = 0
  304.         CASE 47     '/
  305.           COLOR BtFG%,BtBG%
  306.           LOCATE TopRow% + 3,LeftColumn% + 9,0: PRINT " / ";
  307.           COLOR 0,BGround%
  308.           LOCATE TopRow% + 4,LeftColumn% + 9,0: PRINT "   ";
  309.           LOCATE TopRow% + 3,LeftColumn% + 8,0: PRINT " ";
  310.           GOSUB Division
  311.         CASE 48     '0
  312.           COLOR BtFG%,BtBG%
  313.           LOCATE TopRow% + 11,LeftColumn% + 3,0: PRINT "    0    ";
  314.           COLOR 0,BGround%
  315.           LOCATE TopRow% + 12,LeftColumn% + 3,0: PRINT "         ";
  316.           LOCATE TopRow% + 11,LeftColumn% + 2,0: PRINT " ";
  317.           Math$ = Math$ + Ky$
  318.         CASE 49     '1
  319.           COLOR BtFG%,BtBG%
  320.           LOCATE TopRow% + 9,LeftColumn% + 3,0: PRINT " 1 ";
  321.           COLOR 0,BGround%
  322.           LOCATE TopRow% + 10,LeftColumn% + 3,0: PRINT "   ";
  323.           LOCATE TopRow% + 9,LeftColumn% + 2,0: PRINT " ";
  324.           Math$ = Math$ + Ky$
  325.         CASE 50     '2
  326.           COLOR BtFG%,BtBG%
  327.           LOCATE TopRow% + 9,LeftColumn% + 9,0: PRINT " 2 ";
  328.           COLOR 0,BGround%
  329.           LOCATE TopRow% + 10,LeftColumn% + 9,0: PRINT "   ";
  330.           LOCATE TopRow% + 9,LeftColumn% + 8,0: PRINT " ";
  331.           Math$ = Math$ + Ky$
  332.         CASE 51     '3
  333.           COLOR BtFG%,BtBG%
  334.           LOCATE TopRow% + 9,LeftColumn% + 15,0: PRINT " 3 ";
  335.           COLOR 0,BGround%
  336.           LOCATE TopRow% + 10,LeftColumn% + 15,0: PRINT "   ";
  337.           LOCATE TopRow% + 9,LeftColumn% + 14,0: PRINT " ";
  338.           Math$ = Math$ + Ky$
  339.         CASE 52     '4
  340.           COLOR BtFG%,BtBG%
  341.           LOCATE TopRow% + 7,LeftColumn% + 3,0: PRINT " 4 ";
  342.           COLOR 0,BGround%
  343.           LOCATE TopRow% + 8,LeftColumn% + 3,0: PRINT "   ";
  344.           LOCATE TopRow% + 7,LeftColumn% + 2,0: PRINT " ";
  345.           Math$ = Math$ + Ky$
  346.         CASE 53     '5
  347.           COLOR BtFG%,BtBG%
  348.           LOCATE TopRow% + 7,LeftColumn% + 9,0: PRINT " 5 ";
  349.           COLOR 0,BGround%
  350.           LOCATE TopRow% + 8,LeftColumn% + 9,0: PRINT "   ";
  351.           LOCATE TopRow% + 7,LeftColumn% + 8,0: PRINT " ";
  352.           Math$ = Math$ + Ky$
  353.         CASE 54     '6
  354.           COLOR BtFG%,BtBG%
  355.           LOCATE TopRow% + 7,LeftColumn% + 15,0: PRINT " 6 ";
  356.           COLOR 0,BGround%
  357.           LOCATE TopRow% + 8,LeftColumn% + 15,0: PRINT "   ";
  358.           LOCATE TopRow% + 7,LeftColumn% + 14,0: PRINT " ";
  359.           Math$ = Math$ + Ky$
  360.         CASE 55     '7
  361.           COLOR BtFG%,BtBG%
  362.           LOCATE TopRow% + 5,LeftColumn% + 3,0: PRINT " 7 ";
  363.           COLOR 0,BGround%
  364.           LOCATE TopRow% + 6,LeftColumn% + 3,0: PRINT "   ";
  365.           LOCATE TopRow% + 5,LeftColumn% + 2,0: PRINT " ";
  366.           Math$ = Math$ + Ky$
  367.         CASE 56     '8
  368.           COLOR BtFG%,BtBG%
  369.           LOCATE TopRow% + 5,LeftColumn% + 9,0: PRINT " 8 ";
  370.           COLOR 0,BGround%
  371.           LOCATE TopRow% + 6,LeftColumn% + 9,0: PRINT "   ";
  372.           LOCATE TopRow% + 5,LeftColumn% + 8,0: PRINT " ";
  373.           Math$ = Math$ + Ky$
  374.         CASE 57     '9
  375.           COLOR BtFG%,BtBG%
  376.           LOCATE TopRow% + 5,LeftColumn% + 15,0: PRINT " 9 ";
  377.           COLOR 0,BGround%
  378.           LOCATE TopRow% + 6,LeftColumn% + 15,0: PRINT "   ";
  379.           LOCATE TopRow% + 5,LeftColumn% + 14,0: PRINT " ";
  380.           Math$ = Math$ + Ky$
  381. END SELECT
  382.  
  383. DELAY .05
  384.  
  385. LOOP
  386.  
  387. IF Mouse% THEN HideCursor
  388. RestoreScreen CalcScreen$,TopRow%,LeftColumn%
  389.  
  390. EXIT SUB
  391. '----------------------------------------------------------------------------
  392. Multiplication:
  393. RETURN
  394. '----------------------------------------------------------------------------
  395. Addition:
  396. RETURN
  397. '----------------------------------------------------------------------------
  398. Subtraction:
  399. RETURN
  400. '----------------------------------------------------------------------------
  401. Division:
  402. RETURN
  403. '----------------------------------------------------------------------------
  404. END SUB