home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib41b.dsk / GEOMETRY.bas < prev    next >
BASIC Source File  |  2023-02-26  |  20KB  |  250 lines

  1. 10  REM  GEOMETRY
  2. 20  REM  BY MARK R. CRAVEN
  3. 30  REM  COPYRIGHT (C) 1991
  4. 40  REM  MINDCRAFT PUBL. CORP.
  5. 50  REM  LINCOLN, MA 01773
  6. 100  REM 
  7. 110  HOME : HCOLOR= 3: ROT= 0: SCALE= 1:BEEP = 768:CUR = 36384: HIMEM: 35328
  8. 120  FOR I = 1 TO 39:L$ = "=" +L$: NEXT :D = 25:BL = 50
  9. 130  DIM XP%(20),YP%(20),PG$(15),CH%(15),Q1$(15),EQ$(15),AQ$(11),H1$(15),H2$(15)
  10. 140 D$ =  CHR$(4):PI = 3.141592654
  11. 150  VTAB 10: HTAB 5: PRINT "One Moment....Loading Files": ONERR  GOTO 2500
  12. 160  PRINT : PRINT D$"BLOAD CURSOR.5,A$8E20": REM  36384
  13. 170  PRINT D$"BLOAD TECH.FONT,A$8F00"
  14. 180  POKE 216,0: POKE 233,143: POKE 232,0
  15. 190  FOR I = 1 TO 15: READ PG$(I): NEXT 
  16. 200  FOR I = 0 TO 13: READ J: POKE I +BEEP,J: NEXT : REM  TONE ROUTINE POKE INTO MEMORY
  17. 210  FOR I = 1 TO 15: READ Q1$(I): NEXT 
  18. 220  FOR I = 1 TO 7: READ SG$(I): NEXT : REM  SOLID FIGURES
  19. 230  FOR I = 1 TO 7: READ Q2$(I): NEXT 
  20. 240  FOR I = 1 TO 9: READ EQ$(I): NEXT : REM  PLANE AREAS
  21. 250 EQ$(3) = "a" + CHR$(126):EQ$(8) = "! r" + CHR$(126):EQ$(9) =  CHR$(96) +" na" + CHR$(126) +" COT(180" + CHR$(123) +"/n)"
  22. 260  FOR I = 1 TO 15: READ H1$(I),H2$(I): NEXT : REM  'HELP'
  23. 270  FOR I = 1 TO 8: READ AQ$(I): NEXT : REM  SOLID AREA EQ'NS
  24. 280 AQ$(1) = "6a" + CHR$(126):AQ$(2) = "4! r" + CHR$(126):AQ$(4) = "! r  r" + CHR$(126) +"+h" + CHR$(126) +" ":AQ$(10) = "a" + CHR$(126) +"+b" + CHR$(126) +"+c" + CHR$(126)
  25. 290 VQ$(8) = AQ$(1):VQ$(9) = AQ$(2)
  26. 300  FOR I = 1 TO 7: READ VQ$(I): NEXT : REM  VOLUME EQ'NS  
  27. 310 VQ$(1) = "a" + CHR$(124):VQ$(2) = "% ! r" + CHR$(124):VQ$(4) = ": ! r" + CHR$(126) +"h":VQ$(7) = "! r" + CHR$(126) +"h"
  28. 320 AQ$(11) = AQ$(8):AQ$(9) = VQ$(1):AQ$(8) = VQ$(2)
  29. 330  DEF  FN P(J) = (J = 1) +(J = 2) +(J = 3) +(J = 4) +(J -3) *((J >4)  AND (J <12)) +9 *(J >11)
  30. 340  GOTO 1310
  31. 350 X1 = 20:Y1 = 45:X2 = 40: GOSUB 670: RETURN : REM  ISOC.
  32. 360 X1 = 40:Y1 = 35:X2 = 25: GOSUB 670: RETURN : REM  SCALENE
  33. 370 X1 = 0:Y1 = 43:X2 = 25: GOSUB 670: HPLOT X,Y -6 TO X +6,Y -6 TO X +6,Y: RETURN : REM  RIGHT
  34. 380 X1 = 20:Y1 = 30:X2 = 40: GOSUB 670: RETURN : REM  EQUILATERAL
  35. 390 X1 = 0:X2 = 40:Y1 = 20:Y2 = Y1:X3 = X2: GOSUB 680: RETURN : REM  RECTANGLE
  36. 400 X1 = 0:Y1 = 35:X2 = 40:Y2 = Y1:X3 = X2: GOSUB 680: RETURN : REM  SQUARE
  37. 410 X1 = 15:X2 = 40:X3 = X2 -X1:Y1 = 37:Y2 = Y1: GOSUB 680: RETURN : REM  PAR'GRAM
  38. 420 X1 = 15:Y1 = 31:X2 = 54:Y2 = Y1:X3 = X2 -X1: GOSUB 680: RETURN : REM  RHOMBUS
  39. 430 X1 = 12:Y1 = 30:X2 = 30:Y2 = Y1:X3 = X1 +X2: GOSUB 680: RETURN : REM  TRAPEZOID 
  40. 440 X1 = 15:Y1 = 35:X2 = 60:Y2 = 20:X3 = X2 -X1: GOSUB 680: RETURN : REM  TRAPEZIUM
  41. 450  HPLOT X +X2/2,Y -3 TO X +X2/2,Y +3: REM  TRIANGLE TIC
  42. 460  DRAW 61 AT X +X1/2 -4,Y -Y1/2: DRAW 16 AT X +(X2 +X1)/2,Y -Y1/2: RETURN : REM  TRIANGLE TICS  
  43. 470  ROT= 16: DRAW 30 AT X +X1/2 +X2/2 +4,Y -Y1 -2: DRAW 30 AT X +X3/2 +2,Y -2: ROT= 0: REM  VERT TICS (=)
  44. 480  HPLOT X +X1/2 -3,Y -Y1/2 TO X +X1/2 +3,Y -Y1/2: HPLOT X +(X2 +X3)/2 -3,Y -Y2/2 TO X +(X2 +X3)/2 +3,Y -Y2/2: IF J = 5  OR J = 7  THEN  RETURN : REM  HORIZ TICS
  45. 490  HPLOT X +X2/2 +X1/2,Y -Y2 -3 TO X +X2/2 +X1/2,Y -Y2 +3: HPLOT X +X3/2,Y -3 TO X +X3/2,Y +3
  46. 500  RETURN 
  47. 510 N% = 5: GOSUB 610: RETURN 
  48. 520 N% = 6: GOSUB 610: RETURN 
  49. 530 N% = 8: GOSUB 610: RETURN 
  50. 540 N% = 10: GOSUB 610: RETURN 
  51. 550 Z1 = 60:S1 = 0:X1 = 73:Z = 18: GOSUB 660: RETURN : REM  CIRCLE
  52. 560  VTAB 21: HTAB 1: PRINT L$: PRINT "  <- -> to Select  Return  to Execute": PRINT  TAB( 4)"  Up and Down Arrows May be Used": PRINT L$;: RETURN 
  53. 570 LINE = ( PEEK(4) +1)/2: RETURN 
  54. 580  FOR I = 1 TO  LEN(X$): DRAW  ASC( MID$ ((X$),I,1)) -31 AT X +6 *I,Y: NEXT : RETURN 
  55. 590  DRAW  ASC(X$) -31 AT X,Y: RETURN : REM  PLACE DIMENSIONS
  56. 600  REM  DRAW POLYGON
  57. 610  FOR I = 1 TO N%:TH = 2 *PI *I/N% +(PI/8 *(N% >6)):XP%(I) = 29.2 *(1 + SIN(TH)):YP%(I) = 20 *(1 - COS(TH)): NEXT I
  58. 620  FOR I = 1 TO N% -1
  59. 630  HPLOT XP%(I) +X -4,YP%(I) +35 TO XP%(I +1) +X -4,YP%(I +1) +35: NEXT 
  60. 640  HPLOT X -4 +XP%(I),YP%(I) +35 TO X -4 +XP%(1),YP%(1) +35: RETURN 
  61. 650  POKE 230,64: CALL 62450: POKE 49232,0: POKE 49234,0: POKE 49237,0: POKE 49239,0: RETURN 
  62. 660  FOR I = S1 TO PI  STEP PI/30: HPLOT Z * COS(I) +X1,Z * SIN(I) +Z1: HPLOT X1 -Z * COS(I),Z1 -Z * SIN(I): NEXT : RETURN 
  63. 670  HPLOT X,Y TO X +X1,Y -Y1 TO X +X2,Y TO X,Y: RETURN : REM  GENERIC RECTANGLE
  64. 680  HPLOT X,Y TO X +X1,Y -Y1 TO X +X2,Y -Y2 TO X +X3,Y TO X,Y: RETURN : REM  GENERIC RECTANGLE
  65. 690 HC =  PEEK(228): HCOLOR= 0: FOR I = 1 TO D -B -1: HPLOT A +1,B +I TO C -1,B +I: NEXT : POKE 228,HC: RETURN : REM  ERASE BOX     
  66. 700  DRAW 31 AT C +7,10 +B +J *9: RETURN : REM   DRAW CURSOR  
  67. 710  XDRAW 31 AT C +7,10 +B +J *9: RETURN 
  68. 720  POKE 7,15: FOR L = 1 TO 8: POKE 6,20 -L: CALL BEEP: NEXT : RETURN : REM   RIGHT ANSWER   
  69. 730  POKE 6,60: POKE 7,20: CALL BEEP: RETURN : REM   WRONG ANSWER 
  70. 740  POKE 6,20: POKE 7,40: CALL BEEP: RETURN : REM   WRONG KEY   
  71. 750  FOR I = 1 TO 15:CH%(I) = 0: NEXT : RETURN 
  72. 760 X$ = "CORRECT.":X = 35:Y = D -13: GOSUB 580: GOSUB 690: GOTO 780
  73. 770 X$ = "NO, try again.":X = 20:Y = D -17: GOSUB 580
  74. 780 X$ = "Press Return..":X = 20:Y = D -8: GOSUB 580: RETURN 
  75. 790 X$ = X$ +" GEOMETRY FIGURE":X = 72:Y = 1: GOSUB 580:X$ = "IDENTIFICATION":X = 92:Y = Y +9: GOSUB 580
  76. 800 A = 20:B = 20:C = 120:D = 100: HPLOT A,B TO A,D TO C,D TO C,B TO A,B: FOR I = 1 TO 3: HPLOT A -I,B +I TO A -I,D +I TO C -I,D +I: NEXT 
  77. 810 X$ = "Select by < > ^ @":X = 1:Y = D +15: GOSUB 580:X$ = "and Press Return":Y = Y +10: GOSUB 580:X$ = "Escape for Main Menu":Y = Y +20: GOSUB 580:X$ = "? for Help":Y = Y +20:X = X +20: GOSUB 580:X = 1
  78. 820 X$ = "CHOICES":Y = B +5:X = (279 +C)/2 -20: GOSUB 580:Y = Y +1: GOSUB 580: HPLOT X -2,Y -3 TO X +53,Y -3 TO X +53,Y +9 TO X -2,Y +9 TO X -2,Y -3: HPLOT X -3,Y -2 TO X -3,Y +10 TO X +52,Y +10
  79. 830  RETURN 
  80. 840  VTAB 23 +(Q >0): PRINT "Press Return to Continue...";: GET X$: POKE  -16368,0:: HOME : POKE 49232,0: POKE 49237,0: POKE 49239,0: RETURN 
  81. 850 X4 = 0:X5 = 0:X6 = 0:Y4 = 0:Y5 = 0:Y6 = 0: RETURN 
  82. 860  DRAW  ASC(X$) -31 AT  +X +X1 -8,Y -((Y -Y1)/2) +(Y1/2) *(J = 5): RETURN : REM  PUT A'S, B'S, ETC
  83. 870  DRAW  ASC(";") -31 AT X +6,Y -9: RETURN : REM  THETA
  84. 880  FOR G = Y -Y1 TO Y  STEP 2: HPLOT X +X1,G: NEXT G: DRAW  ASC( CHR$(104)) -31 AT X +X1 +6,Y +5 -(Y -Y1)/2: RETURN 
  85. 890  DRAW  ASC(X$) -31 AT X +X2/2,Y +3: RETURN 
  86. 900  GOSUB 390:X4 = X:Y4 = Y:X = X +15:Y = Y -8: GOSUB 390: REM  PARALLELEPIPED
  87. 910  HPLOT X,Y TO X4,Y4: HPLOT X +X1,Y -Y1 TO X4 +X1,Y4 -Y1: HPLOT X +X2,Y -Y2 TO X4 +X2,Y4 -Y2: HPLOT X +X3,Y -Y3 TO X4 +X3,Y4 -Y3
  88. 920 Y = Y +8: GOSUB 850: RETURN 
  89. 930 Y = Y +8: GOSUB 400:X4 = X:Y4 = Y:X = X +20:Y = Y -15: GOSUB 400: GOSUB 910:Y = Y -7: RETURN : REM  CUBE
  90. 940 X = X -15: GOSUB 380:X4 = X:Y4 = Y:X = X +40:Y = Y -15: GOSUB 380: REM  PRISM
  91. 950  HPLOT X,Y TO X4,Y4: HPLOT X +X1,Y -Y1 TO X4 +X1,Y4 -Y1: HPLOT X +X2,Y TO X4 +X2,Y4:X = X -40:Y = Y4: GOSUB 850: RETURN 
  92. 960 Y = Y4:X = X +15: GOSUB 850: RETURN 
  93. 970 Y = Y +8:X1 = 15:X2 = 45:X3 = X2 -X1:Y1 = 18:Y2 = Y1: GOSUB 680:X4 = X +25:Y4 = Y -55: HPLOT X,Y TO X4,Y4: HPLOT X +X1,Y -Y1 TO X4,Y4: HPLOT X +X2,Y -Y2 TO X4,Y4: HPLOT X +X3,Y +Y3 TO X4,Y4: REM  PYRAMID
  94. 980 Y = Y -10: GOSUB 850: RETURN 
  95. 990  GOSUB 550: REM  SPHERE
  96. 1000  FOR I = 0 TO PI  STEP PI/64: HPLOT X1 +18 * COS(I),Z1 +6 * SIN(I): NEXT : REM  ELLIPSE
  97. 1010  FOR I = PI TO 2 *PI  STEP PI/16: HPLOT X1 +18 * COS(I),Z1 +6 * SIN(I): NEXT 
  98. 1020  IF J < >7  THEN  HPLOT X1,Z1 TO X1 +Z,Z1
  99. 1030  RETURN 
  100. 1040 Z1 = 70:X1 = 73:Z = 18: GOSUB 1000: HPLOT X1 -Z,Z1 TO X1,23 TO X1 +Z,Z1: RETURN : REM  CONE
  101. 1050  HPLOT X1,23 TO X1,Z1 TO X1 +Z,Z1: RETURN : REM  CONE
  102. 1060 Z1 = 70:Z3 = Z1:X1 = 73:Z = 18: GOSUB 1000:Z1 = 30: GOSUB 1000: FOR G = X1 -Z TO X1 +Z  STEP Z: HPLOT G,Z1 TO G,Z3: NEXT G: HPLOT X1,Z3 TO X1 +Z,Z3: RETURN : REM  CONE 
  103. 1070  GOSUB 880:X$ =  CHR$(98): GOSUB 890: RETURN 
  104. 1080 SP = Y:P = X:X$ =  CHR$(104):X = X -13:Y = Y -(Y -Y1)/2: GOSUB 580:X = P:Y = SP:X$ =  CHR$(98): GOSUB 890: RETURN 
  105. 1090 X$ =  CHR$(97): GOSUB 860:X$ =  CHR$(98): GOSUB 890: RETURN 
  106. 1100 X$ =  CHR$(97): GOSUB 860: GOSUB 890: RETURN 
  107. 1110  GOSUB 880:X$ =  CHR$(97):P = X:SP = Y:X = X -10:Y = Y -5: GOSUB 860:X = P:Y = SP:X$ =  CHR$(98):X = X -8: GOSUB 890:X = P: GOSUB 870: RETURN 
  108. 1120  HPLOT X,Y TO X +X2,Y -Y2: HPLOT X +X1,Y -Y1 TO X +X3,Y:X$ =  CHR$(99): DRAW  ASC(X$) -31 AT X +11 +4 *(J = 10),Y -17 +2 *(J = 10):X$ =  CHR$(100): DRAW  ASC(X$) -31 AT X +X3 -15 -(J = 10),Y -28 +(J = 10)
  109. 1130  DRAW  ASC(";") -31 AT (X +X1 +X2)/2 +13 -2 *(J = 10),(Y -Y1)/2 +39 -2 *(J = 10): RETURN : REM  TRAPEZIUM
  110. 1140  GOSUB 880:X$ =  CHR$(98): GOSUB 890:X$ =  CHR$(97):P = X:SP = Y:X = X +14:Y = Y1: GOSUB 860:X = P:Y = SP: RETURN 
  111. 1150  DRAW  ASC( CHR$(114)) -31 AT X1 -1 +Z/2,Z1 -8: HPLOT X1,Z1 TO X1 +Z,Z1: RETURN : REM  CIRCLE 
  112. 1160  HPLOT XP%(1) +X -4,YP%(1) +35 TO 70,55 TO XP%(2) +X -4,YP%(2) +35: DRAW  ASC(";") -31 AT 54,51: DRAW  ASC(">") -31 AT 62,51
  113. 1170 X$ =  CHR$(97): DRAW  ASC(X$) -31 AT (XP%(1) +XP%(2))/2 +X,(YP%(1) +YP%(2))/2 +30: RETURN 
  114. 1180 Y = 55:X = 37:X$ =  CHR$(97): GOSUB 590:X = 63:Y = 77: GOSUB 590:X = 100:Y = 67: GOSUB 590: RETURN : REM  CUBE
  115. 1190  GOSUB 1150: RETURN : REM  SPHERE
  116. 1200 X$ =  CHR$(97):X = 37:Y = 55: GOSUB 590:X$ =  CHR$(98):X = 63:Y = 72: GOSUB 590:X$ =  CHR$(99):X = 95:Y = 64: GOSUB 590: RETURN : REM  P'PIPED
  117. 1210 X$ =  CHR$(104):X = 76:Y = 48: GOSUB 590:X$ =  CHR$(114):X = X1 +Z/2::Y = Z1 -8: GOSUB 590: FOR Q = 23 TO Z1  STEP 2: HPLOT X1,Q: NEXT : RETURN : REM  CONE
  118. 1220 X$ =  CHR$(97):X = X -1 +X3/2:Y = SP +9: GOSUB 590:X = X +29:Y = SP: GOSUB 590: REM  PYRAMID
  119. 1230  IF FLAG = 5  THEN  FOR Q = 23 TO 69  STEP 2: HPLOT 69,Q: NEXT :X$ =  CHR$(104):X = 78:Y = 51: GOSUB 590: RETURN 
  120. 1240  HPLOT 70,23 TO 84,68:X$ = "<":X = 81:Y = 52: GOSUB 590:X$ =  CHR$(108):X = 92: GOSUB 590: RETURN : REM  PYR<CTRL-A>AMID
  121. 1250 X = 32:Y = 50:X$ =  CHR$(97): GOSUB 590:X$ =  CHR$(98):X = 49:Y = 72: GOSUB 590:X$ =  CHR$(99):X = 62:Y = 46: GOSUB 590:X$ =  CHR$(104):X = 96:Y = 63: GOSUB 590: RETURN : REM  PYRAMID
  122. 1260 X$ =  CHR$(114):X = 78:Y = 62: GOSUB 590:X$ =  CHR$(104):X = 75:Y = 47: GOSUB 590: RETURN : REM  CYL
  123. 1270  HOME : TEXT : VTAB 1: PRINT  TAB( 15)"HELP SCREEN": PRINT L$: PRINT "Symbol" TAB( 17)"Description": PRINT L$: RETURN 
  124. 1280  REM 
  125. 1290  REM  MAIN MENU
  126. 1300  REM 
  127. 1310  HOME : POKE 49233,0: POKE 49236,0
  128. 1320  HOME : VTAB 1: HTAB 7: PRINT "NIBBLE GEOMETRY -- MAIN MENU": PRINT "  Copyright 1991, MindCraft Publ. Corp.": PRINT "<?> = Help";: HTAB 27: PRINT "Escape = Quit": PRINT L$
  129. 1330  GOSUB 560
  130. 1340  VTAB 8: HTAB 12: PRINT "FIGURE RECOGNITION": PRINT : HTAB 14: PRINT "AREAS - PLANES": PRINT : HTAB 14: PRINT "AREAS - SOLIDS": PRINT : HTAB 12: PRINT "VOLUMES OF FIGURES"
  131. 1350  CALL CUR,8,16,10,31
  132. 1360  GOSUB 570
  133. 1370  ON LINE GOTO 1410,2000,2100,2180
  134. 1380  IF LINE = 128  THEN  GOSUB 1920: GOTO 1320: REM  HELP
  135. 1390  HOME : VTAB 10: PRINT "Really want to QUIT Program ? (Y/N)";: GET X$: IF X$ = "Y"  OR X$ = "y"  THEN  HOME : END 
  136. 1400  GOTO 1310
  137. 1410  HOME : HTAB 12: PRINT "FIGURE RECOGNITION": PRINT : PRINT  TAB( 24)"Escape=Main Menu": PRINT L$: VTAB 10: HTAB 14: PRINT "PLANE FIGURES": PRINT : HTAB 14: PRINT "SOLID FIGURES"
  138. 1420  GOSUB 560
  139. 1430  CALL CUR,10,14,12,28: GOSUB 570
  140. 1440  IF LINE = 128  THEN 1430
  141. 1450  ON LINE GOTO 1470,1960
  142. 1460  GOTO 1310: REM  MAIN MENU IF ZERO
  143. 1470 FLAG = 1: GOSUB 650: REM  SET UP GRAPHICS PAGE
  144. 1480 X$ = "PLANE": GOSUB 790
  145. 1490  GOSUB 750:N = 15:N1 = N
  146. 1500  FOR J = 1 TO N:X$ =  STR$(J) +". " +PG$(J):X = C +11:Y = (9 *J) +B +10: GOSUB 580: NEXT 
  147. 1510  FOR K = 1 TO N
  148. 1520 J =  INT( RND(1) *N) +1: IF CH%(J) = 1  THEN 1520
  149. 1530 CH%(J) = 1:ANS = J:X = A +25:Y = 70
  150. 1540  REM  DRAW FIGURES
  151. 1550  ON FLAG GOTO 1560,1590,1590,1590,1590
  152. 1560  ON J GOSUB 350,360,370,380,390,400,410,420,430,440,550,510,520,530,540
  153. 1570  ON J GOSUB 460,500,500,450,470,480,470,480,500,500,500,500,500,500,500: REM  ADD TICS
  154. 1580  GOTO 1610
  155. 1590  ON J GOSUB 930,990,900,1040,970,940,1060
  156. 1600  IF FLAG = 4  OR FLAG = 5  THEN P = X:SP = Y: ON J GOSUB 1180,1190,1200,1210,1220,1250,1260:Y = SP:X = P
  157. 1610 J = 1: GOSUB 700: REM  DRAW ARROW CURSOR
  158. 1620  POKE  -16368,0: GET X$
  159. 1630  IF X$ = "?"  THEN 1780
  160. 1640  IF X$ =  CHR$(27)  THEN K = N: NEXT : HOME : TEXT : CALL 62450: GOTO 1310
  161. 1650  IF X$ < > CHR$(21)  AND X$ < > CHR$(10)  THEN 1690
  162. 1660  GOSUB 710
  163. 1670 J = J +1: IF J = N1 +1  THEN J = 1
  164. 1680  GOSUB 700: GOTO 1620
  165. 1690  IF X$ < > CHR$(11)  AND X$ < > CHR$(8)  THEN 1730
  166. 1700  GOSUB 710
  167. 1710 J = J -1: IF J = 0  THEN J = N1
  168. 1720  GOSUB 700: GOTO 1620
  169. 1730  IF X$ < > CHR$(13)  THEN  GOSUB 740: GOTO 1620
  170. 1740  IF J = ANS  THEN  GOSUB 720: GOSUB 760: GET X$: GOSUB 710: HCOLOR= 0: GOSUB 780: HCOLOR= 3: GOTO 1760
  171. 1750  GOSUB 730: GOSUB 770: GET X$: HCOLOR= 0: GOSUB 770: HCOLOR= 3: GOTO 1620
  172. 1760  NEXT K
  173. 1770  GOSUB 690: GOSUB 720: GOSUB 720: GOSUB 720:X$ = "Drill Complete.":X = 25:Y = 60: GOSUB 580:X$ = "Press Return...":Y = 70: GOSUB 580: GET X$: HOME : TEXT : FOR I = 1 TO 15:CH%(I) = 0: NEXT : ON FLAG GOTO 1410,1410,1310,1310,1310
  174. 1780  ON FLAG GOTO 1790,1800,1810,1870,1870
  175. 1790  HOME : TEXT : VTAB 2: PRINT PG$(J): VTAB 10: PRINT Q1$(J): GOSUB 840: GOTO 1620
  176. 1800  HOME : TEXT : VTAB 2: PRINT SG$(J): VTAB 10: PRINT Q2$(J): GOSUB 840: GOTO 1620
  177. 1810  GOSUB 1270
  178. 1820  FOR Q = 1 TO 4: HTAB 3: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): NEXT : PRINT : FOR Q = 5 TO 7: HTAB 3: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): NEXT 
  179. 1830  FOR Q = 8 TO 9: HTAB 2: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): NEXT : PRINT : HTAB 3: PRINT H1$(10);: HTAB 12: PRINT H2$(10)
  180. 1840  FOR Q = 11 TO 15: HTAB 2: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): IF Q = 13  THEN  PRINT 
  181. 1850  NEXT : PRINT 
  182. 1860  GOSUB 840:Q = 0:X$ = "": GOTO 1620
  183. 1870  GOSUB 1270: FOR Q = 1 TO 2: HTAB 3: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): NEXT : HTAB 3: PRINT H1$(3);: HTAB 12: PRINT H2$(2): PRINT 
  184. 1880  FOR Q = 5 TO 7: HTAB 3: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): NEXT : HTAB 3: PRINT  CHR$(108);: HTAB 12: PRINT "Slant height of figure": PRINT 
  185. 1890  FOR Q = 14 TO 15: HTAB 2: PRINT H1$(Q);: HTAB 12: PRINT H2$(Q): NEXT : PRINT 
  186. 1900  IF FLAG = 5  THEN  HTAB 3: PRINT "A";: HTAB 12: PRINT "The Area of the base": PRINT : PRINT : PRINT "NOTE:The prism base is the triangular": HTAB 6: PRINT "end.The prism is drawn on its side."
  187. 1910  GOSUB 840:Q = 0:X$ = "": GOTO 1620
  188. 1920  HOME : HTAB 12: PRINT "HELP - MAIN MENU": PRINT L$: PRINT : PRINT "NIBBLE GEOMETRY is a recognition and": PRINT : PRINT "drill program designed to improve your": PRINT : PRINT "familiarity with the more common plane": PRINT 
  189. 1930  PRINT "and solid geometric figures and recog-": PRINT : PRINT "nition of the mathematical relation-": PRINT : PRINT "ships between the figures and their": PRINT : PRINT "areas and volumes."
  190. 1940  PRINT : PRINT "Use the '?' key frequently for help in": PRINT : PRINT "using the program.": VTAB 24: PRINT "Press Return to continue...";: GET X$: POKE  -16368,0: RETURN 
  191. 1950  REM  SOLIDS RECOG.
  192. 1960 FLAG = 2: GOSUB 650:X$ = "SOLID": GOSUB 790
  193. 1970  GOSUB 750:N = 7:N1 = 7
  194. 1980  FOR J = 1 TO N:X$ =  STR$(J) +". " +SG$(J):X = C +17:Y = (9 *J) +B +10: GOSUB 580: NEXT :N = 7: GOTO 1510
  195. 1990  REM  PLANE AREAS
  196. 2000 FLAG = 3: GOSUB 650:X$ = "AREAS OF PLANE FIGURES":X = 72:Y = 1: GOSUB 580: GOSUB 800
  197. 2010  GOSUB 750:N1 = 9: FOR J = 1 TO N1:X$ =  STR$(J) +". " +"A = " +EQ$(J):X = C +13:Y = (9 *J) +B +10: GOSUB 580: NEXT : REM  SHOW EQUATIONS
  198. 2020 N = 15: FOR K = 1 TO N
  199. 2030 J =  INT( RND(1) *N) +1: IF CH%(J) = 1  THEN 2030
  200. 2040 CH%(J) = 1:ANS =  FN P(J):X = A +25:Y = 70
  201. 2050  ON J GOSUB 350,360,370,380,390,400,410,420,430,440,550,510,520,530,540: REM  DRAW FIGURES
  202. 2060  ON J GOSUB 460,500,500,500,500,500,500,480: REM  ADD TICS
  203. 2070  GOSUB 500
  204. 2080  ON J GOSUB 1070,1070,1080,1070,1090,1100,1110,1120,1140,1120,1150,1160,1160,1160,1160: REM  ADD DESCRIPTIONS
  205. 2090  GOTO 1610
  206. 2100 FLAG = 4: GOSUB 650:X$ = "AREAS OF SOLID FIGURES":X = 72:Y = 1: GOSUB 580: GOSUB 800
  207. 2110 N1 = 10: FOR J = 1 TO N1 -1:X$ = " " + STR$(J) +". " +"A = " +AQ$(J):X = C +13:Y = (9 *J) +B +10: GOSUB 580: GOSUB 580: REM  SHOW EQUATIONS
  208. 2120  IF J = 4  THEN  HPLOT 210,70 TO 212,73 TO 216,65 TO 249,65
  209. 2130  NEXT 
  210. 2140 X$ =  STR$(N1) +". " +"A = " +AQ$(N1):Y = (9 *N1) +B +10: GOSUB 580
  211. 2150 N = 7
  212. 2160 Y = 115 +B:X$ = AQ$(11): GOSUB 580
  213. 2170  GOTO 1510
  214. 2180 FLAG = 5: GOSUB 650:X$ = "VOLUME OF SOLID FIGURES":X = 72:Y = 1: GOSUB 580: GOSUB 800
  215. 2190 N1 = 9: FOR J = 1 TO N1:X$ =  STR$(J) +". " +"V = " +VQ$(J):X = C +13:Y = (9 *J) +B +10: GOSUB 580: REM  SHOW EQUATIONS
  216. 2200  NEXT :N = 7: GOTO 1510
  217. 2210  REM  PG$(I)-PLAN GEOEMTRY NAMES
  218. 2220  DATA  " Isoceles Triangle"," Scalene Triangle"," Right Triangle"," Equilateral Triangle"
  219. 2230  DATA  " Rectangle"," Square"," Parallelogram"," Rhombus"," Trapezoid"
  220. 2240  DATA  "Trapezium","Circle","Pentagon","Hexagon","Octagon","Decagon"
  221. 2250  REM  SOUND ROUTINE
  222. 2260  DATA  166,7,173,48,192,165,6,32,168,252,202,208,245,96
  223. 2270  REM  Q1$(I) - HELP RESPONSES
  224. 2280  DATA  "Three sided figure - 2 sides equal.","Three sided figure - no sides equal.","Three sided figure with one right       (90 degree) angle included.","Three sided figure - all sides equal.": REM  7 SPACES 
  225. 2290  DATA  "A quadrilateral with four right         (90 degree) angles.","A four sided plane figure with four     equal sides and four right angles.","A four sided plane figure with opposite sides equal and parallel."
  226. 2300  DATA  "An equilateral parallellogram with      oblique (non 90 degree) angles.","A four sided plane figure with only two sides parallel.","A plane figure with four sides, none of which are parallel.": REM  6 SPACES
  227. 2310  DATA  "A plane figure bounded by a single      curved line, every point of which is    equally distant from the point at the   center of the figure.": REM  6,4,3 SPACES
  228. 2320  DATA  "A plane figure with five angles and fivesides.","A plane figure with six angles and six  sides.","A plane figure with eight angles and    eight sides.","A figure with ten sides and ten angles."
  229. 2330  REM  SQ$(I) - SOLID SHAPES
  230. 2340  DATA  "Cube","Sphere","Parallelepiped","Right circular cone","Right pyramid","Prism","Right cylinder"
  231. 2350  REM  SG$(I) - SOLID SHAPES
  232. 2360  DATA  "A solid with six equal, square sides.","A round figure having the surface       equally distant from the center at all  points.": REM  7 SPACES
  233. 2370  DATA  "A solid with six faces, each of which   is a parallellogram.","A solid described by the hypotenuse of  a right triangle rotated about either ofits legs as an axis."
  234. 2380  DATA  "A solid figure having a polygonal base  the sides of which form the bases of    triangular surfaces meeting at a common vertex."
  235. 2390  DATA  "A solid figure whose ends are polygonal,equal in size and shape, and parallel,  and whose sides are parallellograms."
  236. 2400  DATA  "A solid figure described by the edge of a rectangle rotated around the parallel edge as axis; the ends are parallel and equal circles."
  237. 2410  REM  EQ$(I) - AREA EQUATIONS-PLANES
  238. 2420  DATA  "hb/2","ab",,"bh","' cd","' (a+b)h","' cd SIN(;)",,
  239. 2430  DATA  "a","Length of a side","b","Length of a side","c","Length of a diagonal","d","Length of a diagonal","n","# of sides to polygon","r","radius of circle"
  240. 2440  DATA  "h","Altitude of polygon","SIN","Trigonometric SINE function","COT","Trig COTANGENT function","A","Area of polygon","theta","Greek symbol similar to"," ","(0), which represents an"," ","an angle measured in degrees"
  241. 2450  DATA  "pi","Greek symbol for the"," ","constant value 3.1416"
  242. 2460  REM  SOLID AREA EQUATIONS
  243. 2470  DATA  ,,"2ab + 2bc + 2ac"
  244. 2480  DATA  ,"' nal","h(a+b+c)","2! rh","Base areas not included."
  245. 2490  DATA  ,,"abc",,"Ah/3","Ah",
  246. 2500  IF  PEEK(222) = 6  THEN  HOME : VTAB 10: PRINT "BINARY FILE NOT ON DISK OR MIS-NAMED": PRINT : PRINT "THE PROGRAM CANNOT CONTINUE.  CORRECT": PRINT "THE SITUATION AND RE-RUN THE PROGRAM.": END 
  247. 2510  HOME : VTAB 10: PRINT "A DISK ERROR HAS BEEN ENCOUNTERED.": PRINT : PRINT "CHECK YOUR DRIVE DOOR OR RE-SEAT YOUR": PRINT "DISK."
  248. 2520  VTAB 20: HTAB 1: PRINT : PRINT "PRESS RETURN TO RETRY, ESCAPE TO QUIT";: GET X$: IF X$ =  CHR$(13)  THEN  RUN 
  249. 2530  IF X$ =  CHR$(27)  THEN  END 
  250. 2540  PRINT  CHR$(7): GOTO 2520