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

  1. 10  REM  ***********************
  2. 20  REM  * ANALYZER            *
  3. 30  REM  * ENERGY SQUEEZER     *
  4. 40  REM  * BY VERN L. MASTEL   *
  5. 50  REM  * COPYRIGHT (C) 1988  *
  6. 60  REM  * MICROSPARC, INC     *
  7. 70  REM  * CONCORD, MA 01742   *
  8. 80  REM  ***********************
  9. 90  IF  PEEK(6) <10  OR  PEEK(6) >60  THEN  HOME : PRINT "YOU MUST FIRST RUN THE PROGRAM": PRINT "START.ANALYSIS": END 
  10. 100 A$ = "":IN$ = "":BI = 0:C = 0:I = 0:ESC$ =  CHR$(27):RET$ =  CHR$(13):DOT$ = ".": DIM PX(72),PY(72)
  11. 110  DIM B$(7,86): GOSUB 240:LINE$ = "=======================================": POKE 34,0: HOME : GOTO 270: REM  39 ='S
  12. 120  PRINT  CHR$(7);: RETURN 
  13. 130  PRINT "   THE HEAT SAVINGS WOULD BE ";SAV;"%"
  14. 140  PRINT " THE ANNUAL COST SAVING COULD BE $"; VAL(AC$) *(SAV/100)
  15. 150  PRINT : HTAB 7: PRINT "*ENTER 'P' TO PRINT DATA*"
  16. 160  PRINT : HTAB 6: PRINT "OR PRESS RETURN TO CONTINUE";
  17. 170  RETURN 
  18. 180  PRINT "   LOSS THROUGH WALLS...."; INT(WL);" BTU/HR"
  19. 190  PRINT "   LOSS THROUGH CEILING.."; INT(RL);" BTU/HR"
  20. 200  PRINT "   AIR LEAKAGE LOSSES...."; INT(DL);" BTU/HR"
  21. 210  PRINT "   LOSS THROUGH WINDOWS.."; INT(GL);" BTU/HR"
  22. 220  RETURN 
  23. 230  FOR Z = 1 TO (4 -C): PRINT " ";: NEXT : PRINT A$: RETURN 
  24. 240  FOR X = 1 TO 86:B$(BI,X) = "": NEXT : RETURN 
  25. 250 TN =  INT(WL +RL +GL +DL): RETURN 
  26. 260  VTAB  PEEK(37): RETURN 
  27. 270 M =  PEEK(6): HOME : VTAB 3: HTAB 16: PRINT "*NOTE*": PRINT : HTAB 11: PRINT "ALL DIMENSIONS ARE"
  28. 280  PRINT : HTAB 10: PRINT "TO BE ENTERED IN FEET": PRINT : HTAB 7: PRINT "AND DECIMAL PARTS OF A FOOT"
  29. 290  PRINT : HTAB 14: PRINT "(E.G. 2.25)": PRINT : PRINT 
  30. 300  PRINT : PRINT " ENTRIES ARE RESTRICTED TO FOUR DIGITS": PRINT : HTAB 9: PRINT "INCLUDING DECIMAL POINT": PRINT 
  31. 310  PRINT : PRINT : PRINT " PRESS RETURN TO BEGIN ENTERING DATA";: GET A$
  32. 320  HOME : REM    BEGIN WORKSHEET
  33. 330  HTAB 9: PRINT "ENERGY ANALYSIS WORKSHEET": PRINT LINE$
  34. 340  TEXT : POKE 34,2: HOME : PRINT :BI = 1: REM DOUBLE PANE
  35. 350  HTAB 8: PRINT "COMPUTE TOTAL DOUBLE-PANE": PRINT 
  36. 360  HTAB 15: PRINT "WINDOW AREA": PRINT 
  37. 370  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  38. 380  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  39. 390  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  40. 400  GET A$: IF A$ = "0"  THEN 750
  41. 410  IF A$ = "B"  THEN  PRINT : PRINT : INPUT "ARE YOU SURE (Y/N) ?";Y$: IF Y$ = "Y"  THEN A$ = "6": POKE 34,0: HOME : PRINT  CHR$(4)"RUN START.ANALYSIS"
  42. 420  IF A$ = "B"  THEN 450
  43. 430  IF A$ =  CHR$(13)  THEN 450
  44. 440  GOSUB 120: GOTO 400
  45. 450  HOME : HTAB 10: PRINT "DOUBLE-PANE WINDOW AREA"
  46. 460  PRINT " #  HT WIDTH  #  HT WIDTH  #  HT WIDTH": PRINT LINE$
  47. 470  FOR X = 1 TO 23  STEP 2: PRINT  INT((X +1)/2);")";: HTAB 4: PRINT B$(BI,X);: HTAB 9: PRINT B$(BI,X +1): NEXT : VTAB 6: FOR X = 25 TO 47  STEP 2: HTAB 14: PRINT  INT((X +1)/2);")";: HTAB 17: PRINT B$(BI,X);: HTAB 22: PRINT B$(BI,X +1): NEXT 
  48. 480  VTAB 6: FOR X = 49 TO 71  STEP 2: HTAB 27: PRINT  INT((X +1)/2);")";: HTAB 30: PRINT B$(BI,X);: HTAB 35: PRINT B$(BI,X +1): NEXT 
  49. 490  PRINT LINE$
  50. 500  PRINT "   'ESC' TO BACK UP THROUGH DATA": PRINT 
  51. 510  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  52. 520  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  53. 530  FOR I = 1 TO 23  STEP 2:PX(I) = 4:PY(I) =  INT(5 +(I +1)/2):PX(I +1) = 9:PY(I +1) = PY(I): NEXT I
  54. 540  FOR I = 25 TO 71  STEP 2:PX(I) = 17 +13 *(I >47):PY(I) = PY(I -24):PX(I +1) = 22 +13 *(I >48):PY(I +1) = PY(I): NEXT I
  55. 550 I = 1
  56. 560  HTAB PX(I): VTAB PY(I)
  57. 570  GOSUB 4760: REM  GET NUMBER
  58. 580  ON FLAG GOTO 590,670,340,630
  59. 590  REM  ESC
  60. 600  IF C >0  THEN  GOSUB 230
  61. 610  IF I >1  THEN I = I -1: GOTO 560
  62. 620 I = 72: GOTO 560
  63. 630  REM  CR
  64. 640  IF C >0  THEN  GOSUB 230
  65. 650  IF I <72  THEN I = I +1: GOTO 560
  66. 660 I = 1: GOTO 560
  67. 670  TEXT : VTAB 19: HTAB 1: CALL  -958
  68. 680 T = 0: FOR X = 1 TO 71  STEP 2:T = T + VAL(B$(BI,X)) * VAL(B$(BI,X +1)): NEXT X
  69. 690 T = ( INT(T *10))/10
  70. 700  HTAB 6: PRINT "THE TOTAL DOUBLE-PANE AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":DP = T
  71. 710  PRINT : PRINT "'RETURN' TO CONTINUE OR 'B' TO BACK UP";
  72. 720  GET A$: IF A$ = "B"  THEN  GOTO 340
  73. 730  IF A$ =  CHR$(13)  THEN 750
  74. 740  GOSUB 120: GOTO 720
  75. 750  REM  SINGLE PANE DATA
  76. 760  TEXT : POKE 34,2: HOME :BI = 2: PRINT : REM  SINGLE PANE
  77. 770  HTAB 8: PRINT "COMPUTE TOTAL SINGLE-PANE": PRINT 
  78. 780  HTAB 15: PRINT "WINDOW AREA": PRINT 
  79. 790  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  80. 800  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  81. 810  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  82. 820  GET A$: IF A$ = "0"  THEN 1150
  83. 830  IF A$ = "B"  THEN 340
  84. 840  IF A$ =  CHR$(13)  THEN 860
  85. 850  GOSUB 120: GOTO 820
  86. 860  HOME : HTAB 10: PRINT "SINGLE-PANE WINDOW AREA"
  87. 870  PRINT " #  HT WIDTH  #  HT WIDTH  #  HT WIDTH": PRINT LINE$
  88. 880  FOR X = 1 TO 23  STEP 2: PRINT  INT((X +1)/2);")";: HTAB 4: PRINT B$(BI,X);: HTAB 9: PRINT B$(BI,X +1): NEXT : VTAB 6: FOR X = 25 TO 47  STEP 2: HTAB 14: PRINT  INT((X +1)/2);")";: HTAB 17: PRINT B$(BI,X);: HTAB 22: PRINT B$(BI,X +1): NEXT 
  89. 890  VTAB 6: FOR X = 49 TO 71  STEP 2: HTAB 27: PRINT  INT((X +1)/2);")";: HTAB 30: PRINT B$(BI,X);: HTAB 35: PRINT B$(BI,X +1): NEXT 
  90. 900  PRINT LINE$
  91. 910  PRINT "   'ESC' TO BACK UP THROUGH THE DATA": PRINT 
  92. 920  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  93. 930  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  94. 940  FOR I = 1 TO 23  STEP 2:PX(I) = 4:PY(I) =  INT(5 +(I +1)/2):PX(I +1) = 9:PY(I +1) = PY(I): NEXT I
  95. 950  FOR I = 25 TO 71  STEP 2:PX(I) = 17 +13 *(I >47):PY(I) = PY(I -24):PX(I +1) = 22 +13 *(I >48):PY(I +1) = PY(I): NEXT I:I = 1
  96. 960  HTAB PX(I): VTAB PY(I)
  97. 970  GOSUB 4760: REM  READ NUMBER ROUTINE
  98. 980  ON FLAG GOTO 990,1070,760,1030
  99. 990  REM  ESC HANDLER
  100. 1000  IF C >0  THEN  GOSUB 230
  101. 1010  IF I >1  THEN I = I -1: GOTO 960
  102. 1020 I = 72: GOTO 960
  103. 1030  REM  CR HANDLER
  104. 1040  IF C >0  THEN  GOSUB 230
  105. 1050  IF I <72  THEN I = I +1: GOTO 960
  106. 1060 I = 1: GOTO 560
  107. 1070  TEXT : VTAB 19: HTAB 1: CALL  -958
  108. 1080 T = 0: FOR X = 1 TO 71  STEP 2:T = T + VAL(B$(BI,X)) * VAL(B$(BI,X +1)): NEXT X
  109. 1090 T = ( INT(T *10))/10
  110. 1100  HTAB 6: PRINT "THE TOTAL SINGLE-PANE AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":SP = T
  111. 1110  PRINT : PRINT "'RETURN' TO CONTINUE OR 'B' TO BACK UP";
  112. 1120  GET A$: IF A$ = "B"  THEN 760
  113. 1130  IF A$ =  CHR$(13)  THEN 1150
  114. 1140  GOSUB 120: GOTO 1120
  115. 1150  REM 
  116. 1160  TEXT : POKE 34,2: HOME : PRINT :BI = 3: REM RECTANGULAR WALL
  117. 1170  HTAB 8: PRINT "COMPUTE TOTAL RECTANGULAR": PRINT 
  118. 1180  HTAB 15: PRINT "WALL AREA": PRINT 
  119. 1190  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  120. 1200  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  121. 1210  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  122. 1220  GET A$: IF A$ = "0"  THEN 1540
  123. 1230  IF A$ =  CHR$(13)  THEN 1260
  124. 1240  IF A$ = "B"  THEN 750
  125. 1250  GOSUB 120: GOTO 1220
  126. 1260  HOME : HTAB 10: PRINT "RECTANGULAR WALL AREA"
  127. 1270  PRINT " #  HT WIDTH  #  HT WIDTH ": PRINT LINE$
  128. 1280  FOR X = 1 TO 23  STEP 2: PRINT  INT((X +1)/2);")";: HTAB 4: PRINT B$(BI,X);: HTAB 9: PRINT B$(BI,X +1): NEXT : VTAB 6: FOR X = 25 TO 47  STEP 2: HTAB 14: PRINT  INT((X +1)/2);")";: HTAB 17: PRINT B$(BI,X);: HTAB 22: PRINT B$(BI,X +1): NEXT 
  129. 1290  PRINT LINE$
  130. 1300  PRINT "   'ESC' TO BACK UP THROUGH THE DATA": PRINT 
  131. 1310  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  132. 1320  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  133. 1330  FOR X = 1 TO 23  STEP 2:PX(X) = 4:PY(X) = 5 + INT((X +1)/2):PX(X +1) = 9:PY(X +1) = PY(X): NEXT : FOR X = 25 TO 47  STEP 2:PX(X) = 17:PY(X) = PY(X -24):PX(X +1) = 22:PY(X +1) = PY(X): NEXT 
  134. 1340 I = 1
  135. 1350  HTAB PX(I): VTAB PY(I)
  136. 1360  GOSUB 4760: REM  INPUT NUMBER
  137. 1370  ON FLAG GOTO 1380,1460,1160,1420
  138. 1380  REM  ESC   
  139. 1390  IF C >0  THEN  GOSUB 230
  140. 1400  IF I >1  THEN I = I -1: GOTO 1350
  141. 1410 I = 48: GOTO 1350
  142. 1420  REM  CR HANDLER
  143. 1430  IF C >0  THEN  GOSUB 230
  144. 1440  IF I <48  THEN I = I +1: GOTO 1350
  145. 1450 I = 1: GOTO 1350
  146. 1460  TEXT : VTAB 19: HTAB 1: CALL  -958
  147. 1470 T = 0: FOR X = 1 TO 47  STEP 2:T = T + VAL(B$(BI,X)) * VAL(B$(BI,X +1)): NEXT X
  148. 1480 T = ( INT(T *10))/10
  149. 1490  HTAB 7: PRINT "THE RECTANGULAR WALL AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":WA = T
  150. 1500  PRINT : PRINT "'RETURN' TO CONTINUE OR 'B' TO BACK UP";
  151. 1510  GET A$: IF A$ = "B"  THEN 1160
  152. 1520  IF A$ =  CHR$(13)  THEN 1540
  153. 1530  GOSUB 120: GOTO 1510
  154. 1540  REM 
  155. 1550  TEXT : POKE 34,2: HOME :BI = 4: REM   TRIANGULAR WALL
  156. 1560  PRINT : HTAB 6: PRINT "COMPUTE TRIANGULAR WALL AREA": PRINT 
  157. 1570  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  158. 1580  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  159. 1590  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  160. 1600  GET A$: IF A$ = "0"  THEN 1910
  161. 1610  IF A$ = "B"  THEN 1150
  162. 1620  IF A$ =  CHR$(13)  THEN 1640
  163. 1630  GOSUB 120: GOTO 1600
  164. 1640  HOME : HTAB 11: PRINT "TRIANGULAR WALL AREA"
  165. 1650  PRINT " #  HT WIDTH  #  HT WIDTH ": PRINT LINE$
  166. 1660  FOR X = 1 TO 23  STEP 2: PRINT  INT((X +1)/2);")";: HTAB 4: PRINT B$(BI,X);: HTAB 9: PRINT B$(BI,X +1): NEXT : VTAB 6: FOR X = 25 TO 47  STEP 2: HTAB 14: PRINT  INT((X +1)/2);")";: HTAB 17: PRINT B$(BI,X);: HTAB 22: PRINT B$(BI,X +1): NEXT 
  167. 1670  PRINT LINE$
  168. 1680  PRINT "   'ESC' TO BACK UP THROUGH THE DATA": PRINT 
  169. 1690  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  170. 1700  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  171. 1710  FOR X = 1 TO 23  STEP 2:PX(X) = 4:PY(X) = 5 + INT((X +1)/2):PX(X +1) = 9:PY(X +1) = PY(X): NEXT : FOR X = 25 TO 47  STEP 2:PX(X) = 17:PY(X) = PY(X -24):PX(X +1) = 22:PY(X +1) = PY(X): NEXT :I = 1
  172. 1720  HTAB PX(I): VTAB PY(I)
  173. 1730  GOSUB 4760: REM  INPUT NUMBER 
  174. 1740  ON FLAG GOTO 1750,1830,1550,1790
  175. 1750  REM  ESC
  176. 1760  IF C >0  THEN  GOSUB 230
  177. 1770  IF I >1  THEN I = I -1: GOTO 1720
  178. 1780 I = 48: GOTO 1720
  179. 1790  REM  CR
  180. 1800  IF C >0  THEN  GOSUB 230
  181. 1810  IF I <48  THEN I = I +1: GOTO 1720
  182. 1820 I = 1: GOTO 1720
  183. 1830  TEXT : VTAB 19: HTAB 1: CALL  -958
  184. 1840 T = 0: FOR X = 1 TO 47  STEP 2:T = T + VAL(B$(BI,X)) * VAL(B$(BI,X +1)): NEXT X
  185. 1850 T = (( INT(T *10))/10)/2
  186. 1860  HTAB 8: PRINT "THE TRIANGULAR WALL AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":TP = T
  187. 1870  PRINT : PRINT "'RETURN' TO  CONTINUE OR 'B' TO BACKUP";
  188. 1880  GET A$: IF A$ = "B"  THEN 1550
  189. 1890  IF A$ =  CHR$(13)  THEN 1910
  190. 1900  GOSUB 120: GOTO 1880
  191. 1910  REM 
  192. 1920  TEXT : POKE 34,2: HOME :BI = 5: REM  TRAPEZOIDAL WALL
  193. 1930  PRINT : HTAB 6: PRINT "COMPUTE TRAPEZOIDAL WALL AREA": PRINT 
  194. 1940  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  195. 1950  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  196. 1960  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  197. 1970  GET A$: IF A$ = "0"  THEN 2280
  198. 1980  IF A$ = "B"  THEN 1540
  199. 1990  IF A$ =  CHR$(13)  THEN 2010
  200. 2000  GOSUB 10: GOTO 1970
  201. 2010  HOME : HTAB 11: PRINT "TRAPEZOIDAL WALL AREA"
  202. 2020  PRINT " #  BASE#1   BASE#2   AREA HEIGHT": PRINT LINE$
  203. 2030  FOR X = 1 TO 34  STEP 3: PRINT  INT((X +2)/3);")";: HTAB 7: PRINT B$(BI,X);: HTAB 17: PRINT B$(BI,X +1);: HTAB 27: PRINT B$(BI,X +2): NEXT 
  204. 2040  PRINT LINE$
  205. 2050  PRINT "   'ESC' TO BACK UP THROUGH THE DATA": PRINT 
  206. 2060  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  207. 2070  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  208. 2080  FOR X = 1 TO 34  STEP 3:PX(X) = 7:PY(X) = 5 + INT((X +2)/3):PX(X +1) = 17:PY(X +1) = PY(X):PX(X +2) = 27:PY(X +2) = PY(X): NEXT 
  209. 2090 I = 1
  210. 2100  HTAB PX(I): VTAB PY(I)
  211. 2110  GOSUB 4760: REM  INPUT ROUTINE
  212. 2120  ON FLAG GOTO 2130,2210,1920,2170
  213. 2130  REM  ESC
  214. 2140  IF C >0  THEN  GOSUB 230
  215. 2150  IF I >1  THEN I = I -1: GOTO 2100
  216. 2160 I = 36: GOTO 2100
  217. 2170  REM  CR
  218. 2180  IF C >0  THEN  GOSUB 230
  219. 2190  IF I <36  THEN I = I +1: GOTO 2100
  220. 2200 I = 1: GOTO 2100
  221. 2210  TEXT : VTAB 19: HTAB 1: CALL  -958
  222. 2220 T = 0: FOR X = 1 TO 34  STEP 3:T = T +((( VAL(B$(BI,X)) + VAL(B$(BI,X +1))) * VAL(B$(BI,X +2)))/2): NEXT X
  223. 2230  HTAB 8: PRINT "THE TRAPEZIODAL WALL AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":TA = T
  224. 2240  PRINT : PRINT "'RETURN' TO  CONTINUE OR 'B' TO BACKUP";
  225. 2250  GET A$: IF A$ = "B"  THEN 1920
  226. 2260  IF A$ =  CHR$(13)  THEN 2280
  227. 2270  GOSUB 120: GOTO 2250
  228. 2280  REM 
  229. 2290  TEXT : POKE 34,2: HOME :BI = 6: REM  CEILING AREAS
  230. 2300  PRINT : HTAB 10: PRINT "COMPUTE CEILING AREA": PRINT 
  231. 2310  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  232. 2320  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  233. 2330  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  234. 2340  GET A$: IF A$ = "0"  THEN 2650
  235. 2350  IF A$ =  CHR$(13)  THEN 2380
  236. 2360  IF A$ = "B"  THEN 1910
  237. 2370  GOSUB 120: GOTO 2340
  238. 2380  HOME : HTAB 8: PRINT "RECTANGULAR CEILING AREA"
  239. 2390  PRINT " # LEN WIDTH  # LEN WIDTH ": PRINT LINE$
  240. 2400  FOR X = 1 TO 23  STEP 2: PRINT  INT((X +1)/2);")";: HTAB 4: PRINT B$(BI,X);: HTAB 9: PRINT B$(BI,X +1): NEXT : VTAB 6: FOR X = 25 TO 47  STEP 2: HTAB 14: PRINT  INT((X +1)/2);")";: HTAB 17: PRINT B$(BI,X);: HTAB 22: PRINT B$(BI,X +1): NEXT 
  241. 2410  PRINT LINE$
  242. 2420  PRINT "   'ESC' TO BACK UP THROUGH THE DATA": PRINT 
  243. 2430  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  244. 2440  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  245. 2450  FOR X = 1 TO 23  STEP 2:PX(X) = 4:PY(X) = 5 + INT((X +1)/2):PX(X +1) = 9:PY(X +1) = PY(X): NEXT : FOR X = 25 TO 47  STEP 2:PX(X) = 17:PY(X) = PY(X -24):PX(X +1) = 22:PY(X +1) = PY(X): NEXT 
  246. 2460 I = 1
  247. 2470  HTAB PX(I): VTAB PY(I)
  248. 2480  GOSUB 4760: REM  INPUT ROUTINE
  249. 2490  ON FLAG GOTO 2500,2580,2290,2540
  250. 2500  REM  ESC
  251. 2510  IF C >0  THEN  GOSUB 230
  252. 2520  IF I >1  THEN I = I -1: GOTO 2470
  253. 2530 I = 48: GOTO 2470
  254. 2540  REM  CR
  255. 2550  IF C >0  THEN  GOSUB 230
  256. 2560  IF I <48  THEN I = I +1: GOTO 2470
  257. 2570 I = 1: GOTO 2470
  258. 2580  TEXT : VTAB 19: HTAB 1: CALL  -958
  259. 2590 T = 0: FOR X = 1 TO 47  STEP 2:T = T + VAL(B$(BI,X)) * VAL(B$(BI,X +1)): NEXT X
  260. 2600  HTAB 3: PRINT "THE RECTANGULAR CEILING AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":RA = T
  261. 2610  PRINT : PRINT " 'RETURN' TO CONTINUE OR 'B' TO BACK UP";
  262. 2620  GET A$: IF A$ = "B"  THEN 2290
  263. 2630  IF A$ =  CHR$(13)  THEN 2650
  264. 2640  GOSUB 120: GOTO 2620
  265. 2650  REM 
  266. 2660  TEXT : POKE 34,2: HOME :BI = 7: REM  DOOR AREAS
  267. 2670  PRINT : HTAB 12: PRINT "COMPUTE DOOR AREA": PRINT 
  268. 2680  HTAB 6: PRINT "PRESS RETURN TO CONTINUE OR": PRINT 
  269. 2690  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  270. 2700  PRINT "  ENTER '0' IF NO ENTRIES WILL BE MADE";
  271. 2710  GET A$: IF A$ = "0"  THEN 3020
  272. 2720  IF A$ =  CHR$(13)  THEN 2750
  273. 2730  IF A$ = "B"  THEN 2280
  274. 2740  GOSUB 120: GOTO 2710
  275. 2750  HOME : HTAB 14: PRINT "DOOR AREA"
  276. 2760  PRINT " #  HT WIDTH": PRINT LINE$
  277. 2770  FOR X = 1 TO 23  STEP 2: PRINT  INT((X +1)/2);")";: HTAB 4: PRINT B$(BI,X);: HTAB 9: PRINT B$(BI,X +1): NEXT 
  278. 2780  PRINT LINE$
  279. 2790  PRINT "   'ESC' TO BACK UP THROUGH THE DATA": PRINT 
  280. 2800  HTAB 9: PRINT "'RETURN' TO MOVE FORWARD ": PRINT 
  281. 2810  PRINT "  'A' TO ACCEPT DATA  'B' TO BACK UP"
  282. 2820  FOR X = 1 TO 23  STEP 2:PX(X) = 4:PY(X) = 5 + INT((X +1)/2):PX(1 +X) = 9:PY(X +1) = PY(X): NEXT 
  283. 2830 I = 1
  284. 2840  HTAB PX(I): VTAB PY(I)
  285. 2850  GOSUB 4760: REM  INPUT ROUTINE
  286. 2860  ON FLAG GOTO 2870,2950,2660,2910
  287. 2870  REM  ESC
  288. 2880  IF C >0  THEN  GOSUB 230
  289. 2890  IF I >1  THEN I = I -1: GOTO 2840
  290. 2900 I = 24: GOTO 2840
  291. 2910  REM  CR
  292. 2920  IF C >0  THEN  GOSUB 230
  293. 2930  IF I <24  THEN I = I +1: GOTO 2840
  294. 2940 I = 1: GOTO 2840
  295. 2950  TEXT : VTAB 19: HTAB 1: CALL  -958
  296. 2960 T = 0: FOR X = 1 TO 23  STEP 2:T = T + VAL(B$(BI,X)) * VAL(B$(BI,X +1)): NEXT X
  297. 2970  HTAB 10: PRINT "THE DOOR AREA IS": PRINT : HTAB 10: PRINT "==> ";T;" SQ FEET":DA = T
  298. 2980  PRINT : PRINT "'RETURN' TO CONTINUE OR 'B' TO BACK UP";
  299. 2990  GET A$: IF A$ = "B"  THEN 2660
  300. 3000  IF A$ =  CHR$(13)  THEN 3020
  301. 3010  GOSUB 120: GOTO 2990
  302. 3020  REM       
  303. 3030  TEXT : POKE 34,2: HOME :T = 0: REM   OTHER CEILING AREA
  304. 3040  PRINT : HTAB 12: PRINT "OTHER CEILING AREA": PRINT 
  305. 3050  HTAB 7: PRINT "RETURN ALONE CONTINUES OR": PRINT 
  306. 3060  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  307. 3070  VTAB 14
  308. 3080  HTAB 7: PRINT "OTHER CEILING AREA ==> ";
  309. 3090  GOSUB 4760: REM  INPUT NUMBER
  310. 3100  ON FLAG GOTO 3110,3110,2650,3120
  311. 3110  PRINT  CHR$(7);: FOR I = 1 TO C: CALL  -1008: NEXT : FOR I = 1 TO C: PRINT " ";: NEXT : GOTO 3030
  312. 3120 UC =  VAL(IN$)
  313. 3130  TEXT : POKE 34,2: HOME :T = 0: REM    OTHER WALL AREAS
  314. 3140  PRINT : HTAB 12: PRINT "OTHER WALL AREA": PRINT 
  315. 3150  HTAB 7: PRINT "RETURN ALONE CONTINUES OR": PRINT 
  316. 3160  HTAB 10: PRINT "ENTER 'B' TO BACK UP": PRINT 
  317. 3170  VTAB 14
  318. 3180  HTAB 7: PRINT "OTHER WALL AREA ==> ";
  319. 3190  GOSUB 4760: REM  INPUT ROUTINE
  320. 3200  ON FLAG GOTO 3210,3210,3030,3220
  321. 3210  PRINT  CHR$(7);: FOR I = 1 TO C: CALL  -1008: NEXT : FOR I = 1 TO C: PRINT " ";: NEXT : GOTO 3130
  322. 3220 UW =  VAL(IN$)
  323. 3230  HOME :C = 0:IN$ = "": REM  WALL INSULATION 
  324. 3240  PRINT : HTAB 10: PRINT "ENTER 'B' TO BACK UP"
  325. 3250  PRINT : HTAB 11: PRINT ">WALL< INSULATION": PRINT 
  326. 3260  PRINT "  ENTER R-VALUE OF INSULATION==>";
  327. 3270  GET A$: IF C =  >2  THEN  IF A$ < > CHR$(13)  THEN 3270
  328. 3280  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 3270
  329. 3290  IF A$ = "B"  THEN 3130
  330. 3300  IF A$ =  CHR$(13)  THEN  PRINT A$;:WR =  VAL(IN$): GOTO 3330
  331. 3310  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 3270
  332. 3320  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 3270
  333. 3330  PRINT :C = 0:IN$ = ""
  334. 3340  HTAB 9: PRINT ">CEILING< INSULATION": PRINT 
  335. 3350  PRINT "  ENTER R-VALUE OF INSULATION==>";
  336. 3360  GET A$: IF C =  >2  THEN  IF A$ < > CHR$(13)  THEN 3360
  337. 3370  IF A$ = "B"  THEN 3230
  338. 3380  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 3360
  339. 3390  IF A$ =  CHR$(13)  THEN  PRINT A$;:RR =  VAL(IN$): GOTO 3420
  340. 3400  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 3360
  341. 3410  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 3360
  342. 3420  PRINT :C = 0:IN$ = ""
  343. 3430  PRINT "  ENTER ANNUAL HEATING COST=>$";
  344. 3440  GET A$: IF C =  >5  THEN  IF A$ < > CHR$(13)  THEN 3440
  345. 3450  IF A$ = "B"  THEN 3230
  346. 3460  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 3440
  347. 3470  IF A$ =  CHR$(13)  THEN  PRINT A$;:AC$ = IN$:IN$ = "": GOTO 3500
  348. 3480  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 3440
  349. 3490  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 3440
  350. 3500  PRINT : HTAB 5: PRINT "THE WORKSHEET IS NOW COMPLETE!": PRINT : HTAB 8: PRINT "PRESS RETURN TO CONTINUE";
  351. 3510  GET A$: IF A$ = "B"  THEN 3230
  352. 3520  IF A$ =  CHR$(13)  THEN 3540
  353. 3530  GOSUB 120: GOTO 3510
  354. 3540  POKE 34,0:WA = WA +TA +TP +UW:WA = WA -(DP +SP):RA = RA +UC
  355. 3550  IF WA <10  OR RA <10  THEN  GOSUB 120: GOSUB 120: PRINT : PRINT : PRINT "THE DATA AS ENTERED IS QUESTIONABLE!!!!": PRINT : HTAB 7: PRINT "PRESS ANY KEY TO CONTINUE";: GET A$
  356. 3560  HOME : REM   STD ANALYSIS VALUES
  357. 3570  HTAB 3: PRINT "****INSULATION ENERGY ANALYSIS****": PRINT : PRINT "   HEAT LOSS OF EXISTING STRUCTURE": PRINT LINE$
  358. 3580 WL =  INT((1/(WR +2)) *WA *M)
  359. 3590 RL =  INT((1/(RR +3)) *RA *M)
  360. 3600 GL =  INT((.45 *DP *M) +(1.1 *SP *M))
  361. 3610 DL =  INT(.54 *(.8 *(DP +SP) +DA) *M)
  362. 3620  GOSUB 180
  363. 3630 TL =  INT(WL +RL +GL +DL)
  364. 3640  PRINT LINE$: HTAB 4: PRINT "TOTAL HEAT LOSS.......";TL;" BTU/HR"
  365. 3650  PRINT LINE$: HTAB 15: PRINT ">OPTIONS<": PRINT 
  366. 3660  PRINT "    1) ADD MORE WALL INSULATION": PRINT "    2) ADD MORE CEILING INSULATION": PRINT "    3) ADD STORM WINDOWS": PRINT "    4) WEATHERSTRIP AND CAULK": PRINT "    5) PERFORM ALL IMPROVEMENTS": PRINT "    6) QUIT 
  367. 3670  PRINT : HTAB 7: PRINT "*ENTER 'P' TO PRINT DATA*": PRINT 
  368. 3680  HTAB 8: PRINT "ENTER CHOICE===>";
  369. 3690  GET A$: IF A$ = "P"  THEN LM = 11:R1 = WR:R2 = RR: GOTO 4630
  370. 3700  IF A$ = "3"  THEN 3770
  371. 3710  IF A$ = "1"  THEN 3870
  372. 3720  IF A$ = "2"  THEN 4050
  373. 3730  IF A$ = "4"  THEN 4530
  374. 3740  IF A$ = "5"  THEN 4240
  375. 3750  IF A$ = "6"  THEN  PRINT : INPUT "ARE YOU SURE?";A$: IF A$ = "Y"  THEN  END 
  376. 3760  GOSUB 120: GOTO 3560
  377. 3770  HOME :GL = (.35 *DP *M) +(.45 *SP *M): REM     NEW STORM WINDOWS
  378. 3780  HTAB 3: PRINT "****INSULATION ENERGY ANALYSIS****": PRINT : PRINT "  HEAT LOSS WITH NEW STORM WINDOWS": PRINT LINE$
  379. 3790  GOSUB 180: GOSUB 250
  380. 3800  PRINT LINE$: PRINT "   ADJUSTED HEAT LOSS..";TN;" BTU/HR": PRINT LINE$: PRINT 
  381. 3810  IF TL >0  THEN SAV = 100 - INT((TN/TL) *100): GOTO 3830
  382. 3820 SAV = 0
  383. 3830  GOSUB 130
  384. 3840  GET A$: IF A$ =  CHR$(13)  THEN 3560
  385. 3850  IF A$ = "P"  THEN LM = 15:R1 = WR:R2 = RR: GOTO 4630
  386. 3860  GOSUB 120: GOTO 3840
  387. 3870  HOME : REM   NEW WALL INSULATION    
  388. 3880  PRINT LINE$: HTAB 6: PRINT "ADD MORE >WALL< INSULATION": PRINT 
  389. 3890 IN$ = "":C = 0: PRINT "ENTER THE NEW R-VALUE OF THE INSULATION": PRINT : HTAB 13: PRINT "==>";
  390. 3900  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 3910
  391. 3910  GET A$: IF C =  >2  THEN  IF A$ < > CHR$(13)  THEN 3910
  392. 3920  IF A$ =  CHR$(13)  THEN  PRINT A$;: GOTO 3950
  393. 3930  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 3910
  394. 3940  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 3910
  395. 3950 R =  VAL(IN$):WL =  INT((1/(R +2)) *WA *M)
  396. 3960  HOME : HTAB 3: PRINT "****INSULATION ENERGY ANALYSIS****": PRINT : PRINT "  HEAT LOSS WITH MORE WALL INSULATION": PRINT LINE$
  397. 3970  GOSUB 180: GOSUB 250
  398. 3980  PRINT LINE$: PRINT "   ADJUSTED HEAT LOSS..";TN;" BTU/HR": PRINT LINE$: PRINT 
  399. 3990  IF TL >0  THEN SAV = 100 - INT((TN/TL) *100): GOTO 4010
  400. 4000 SAV = 0
  401. 4010  GOSUB 130
  402. 4020  GET A$: IF A$ =  CHR$(13)  THEN 3560
  403. 4030  IF A$ = "P"  THEN LM = 15:R1 = R: GOSUB 4630: VTAB 18: HTAB 33
  404. 4040  GOSUB 120: GOTO 4020
  405. 4050  HOME : REM   NEW CEILING INSULATION
  406. 4060  PRINT LINE$: HTAB 5: PRINT "ADD MORE >CEILING< INSULATION"
  407. 4070 IN$ = "":C = 0: PRINT LINE$: PRINT "ENTER THE NEW R-VALUE OF THE INSULATION": PRINT : HTAB 13: PRINT "==>";
  408. 4080  GET A$: IF C =  >2  THEN  IF A$ < > CHR$(13)  THEN 4080
  409. 4090  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 4080
  410. 4100  IF A$ =  CHR$(13)  THEN  PRINT A$;: GOTO 4130
  411. 4110  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 4080
  412. 4120  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 4080
  413. 4130 R =  VAL(IN$):RL =  INT((1/(R +2)) *RA *M)
  414. 4140  HOME : HTAB 3: PRINT "****INSULATION ENERGY ANALYSIS****": PRINT : PRINT "HEAT LOSS WITH MORE CEILING INSULATION": PRINT LINE$
  415. 4150  GOSUB 180: GOSUB 250
  416. 4160 TN = WL +RL +GL +DL
  417. 4170  PRINT LINE$: PRINT "   ADJUSTED HEAT LOSS..";TN;" BTU/HR": PRINT LINE$
  418. 4180  IF TL >0  THEN SAV = 100 - INT((TN/TL) *100): PRINT : GOTO 4200
  419. 4190 SAV = 0: PRINT 
  420. 4200  GOSUB 130
  421. 4210  GET A$: IF A$ =  CHR$(13)  THEN 3560
  422. 4220  IF A$ = "P"  THEN LM = 15:R2 = R: GOSUB 4630: VTAB 18: HTAB 33
  423. 4230  GOSUB 120: GOTO 4210
  424. 4240  HOME : HTAB 10: PRINT "COMBINED INPROVEMENTS": PRINT LINE$: REM   COMBINED SOLUTION
  425. 4250 IN$ = "":C = 0: HTAB 6: PRINT "ADD MORE >WALL< INSULATION": PRINT 
  426. 4260  PRINT "ENTER THE NEW R-VALUE OF THE INSULATION": PRINT : HTAB 13: PRINT "==>";
  427. 4270  GET A$: IF C =  >2  THEN  IF A$ < > CHR$(13)  THEN 4270
  428. 4280  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 4270
  429. 4290  IF A$ =  CHR$(13)  THEN  PRINT A$;: GOTO 4320
  430. 4300  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 4270
  431. 4310  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 4270
  432. 4320  IF IN$ >"44"  THEN  GOSUB 120:IN$ = "": GOTO 4270
  433. 4330 R3 =  VAL(IN$):WL =  INT((1/(R3 +2)) *WA *M)
  434. 4340 IN$ = "":C = 0: PRINT LINE$: PRINT "ADD MORE  > CEILING < INSULATION ": PRINT 
  435. 4350  PRINT "ENTER THE NEW R-VALUE OF THE INSULATION": PRINT : HTAB 13: PRINT "==>";
  436. 4360  GET A$: IF C =  >2  THEN  IF A$ < > CHR$(13)  THEN 4360
  437. 4370  IF A$ =  CHR$(13)  AND IN$ = ""  THEN  GOSUB 120: GOTO 4360
  438. 4380  IF A$ =  CHR$(13)  THEN  PRINT A$;: GOTO 4420
  439. 4390  IF A$ <"0"  OR A$ >"9"  THEN  GOSUB 120: GOTO 4360
  440. 4400  PRINT A$;:IN$ = IN$ +A$:C = C +1: GOTO 4360
  441. 4410  IF IN$ >"44"  THEN  GOSUB 120:IN$ = "": GOTO 4360
  442. 4420 R4 =  VAL(IN$):RL =  INT((1/(R4 +3)) *RA *M)
  443. 4430 GL = (.45 *(DP +SP) *M):DL = .18 *(.8 *(DP +SP) +DA) *M
  444. 4440  HOME : HTAB 3: PRINT "****INSULATION ENERGY ANALYSIS****": PRINT : PRINT "  HEAT LOSS WITH COMBINED IMPROVEMENTS": PRINT LINE$
  445. 4450  GOSUB 180: GOSUB 250
  446. 4460  PRINT LINE$: PRINT "   ADJUSTED HEAT LOSS..";TN;" BTU/HR": PRINT LINE$
  447. 4470  IF TL >0  THEN SAV = 100 - INT((TN/TL) *100): PRINT : GOTO 4490
  448. 4480 SAV = 0: PRINT 
  449. 4490  GOSUB 130
  450. 4500  GET A$: IF A$ =  CHR$(13)  THEN 3560
  451. 4510  IF A$ = "P"  THEN LM = 15:R1 = R3:R2 = R4: GOSUB 4630: VTAB 18: HTAB 33
  452. 4520  GOSUB 120: GOTO 4500
  453. 4530  HOME :DL = .30 *(.8 *(DP +SP) +DA) *M: REM    CAULK AND WEATHERSTRIP
  454. 4540  HTAB 3: PRINT "****INSULATION ENERGY ANALYSIS****": PRINT : PRINT "    HEAT LOSS WITH NEW WEATHERSTRIP": PRINT LINE$
  455. 4550  GOSUB 180: GOSUB 250
  456. 4560  PRINT LINE$: PRINT "   ADJUSTED HEAT LOSS..";TN;" BTU/HR": PRINT LINE$: PRINT 
  457. 4570  IF TL >0  THEN SAV = 100 - INT((TN/TL) *100): GOTO 4590
  458. 4580 SAV = 0
  459. 4590  GOSUB 130
  460. 4600  GET A$: IF A$ =  CHR$(13)  THEN 3560
  461. 4610  IF A$ = "P"  THEN LM = 15:R1 = WR:R2 = RR: GOSUB 4630: VTAB 18: HTAB 33
  462. 4620  GOSUB 120: GOTO 4600
  463. 4630  PRINT : PRINT  CHR$(4)"PR#1"
  464. 4640  FOR V = 1 TO LM: VTAB V:P =  PEEK(40) + PEEK(41) *256
  465. 4650  FOR H = 0 TO 39: PRINT  CHR$( PEEK(P +H));
  466. 4660  NEXT H: PRINT : NEXT V
  467. 4670  PRINT "TOTAL WINDOW AREA IS ";DP +SP;" SQUARE FEET"
  468. 4680  PRINT "TOTAL WALL AREA IS ";WA;" SQUARE FEET"
  469. 4690  PRINT "TOTAL CEILING AREA IS ";RA;" SQUARE FEET"
  470. 4700  PRINT "TOTAL DOOR AREA IS ";DA;" SQUARE FEET"
  471. 4710  PRINT "R VALUE OF WALL INSULATION IS ";R1
  472. 4720  PRINT "R VALUE OF CEILING INSULATION IS ";R2
  473. 4730  PRINT "ANNUAL HEATING COST IS $";AC$
  474. 4740  PRINT LINE$: PRINT : PRINT 
  475. 4750  PRINT  CHR$(4)"PR#0":A$ = "": GOTO 3560
  476. 4760  REM  INPUT NUMBER ROUTINE; THIS 
  477. 4770  REM IS A LOOP THAT IS EXITED BY
  478. 4780  REM  HITTING CR, ESC, A, OR B
  479. 4790 C = 0:IN$ = "":DOTTED = 0:PP = 0
  480. 4800  GET A$
  481. 4810 FLAG = 1 *(A$ = ESC$) +2 *(A$ = "A") +3 *(A$ = "B") +4 *(A$ = RET$): IF (FLAG  AND (C >0))  THEN B$(BI,I) = IN$
  482. 4820  IF FLAG  THEN  RETURN 
  483. 4830  IF A$ < > CHR$(8)  THEN 4900
  484. 4840  IF C < = 0  THEN 4940
  485. 4850  CALL  -1008: PRINT " ";: CALL  -1008:C = C -1
  486. 4860  IF C >0  THEN IN$ =  LEFT$(IN$,C)
  487. 4870  IF C = 0  THEN IN$ = ""
  488. 4880  IF C = PP -1  THEN DOTTED = 0
  489. 4890  GOTO 4800
  490. 4900  IF C > = 4  THEN 4940
  491. 4910  IF A$ > = "0"  AND A$ < = "9"  THEN IN$ = IN$ +A$:C = C +1: PRINT A$;: GOTO 4800
  492. 4920  IF DOTTED  THEN  GOTO 4940
  493. 4930  IF A$ = DOT$  THEN DOTTED = 1:IN$ = IN$ +DOT$: PRINT DOT$;:C = C +1:PP = C: GOTO 4800
  494. 4940  PRINT  CHR$(7);: GOTO 4800