Electric Cost Analyzer is an interactive home electricity cost calculator that estimates monthly charges for up to 16 categories of household appliances, including air conditioners, refrigerators, water heaters, lights, and televisions. The program stores per-item costs in array C(16) and accumulates a running monthly total in T(1), with the electric rate entered in cents per kilowatt-hour stored in E(1). Each appliance category is handled by a dedicated subroutine called dynamically via GOSUB X*100, where X is the user-selected item number — an elegant dispatch technique that avoids a long IF/THEN chain. Default wattage assumptions are provided for each appliance type when the user enters zero, and the opening title screen uses block graphics to render a stylized electric meter displaying animated billing data.
Program Analysis
Program Structure
The program is organized into a main loop and a collection of numbered subroutines, each dedicated to a specific appliance category. Execution begins with an introductory title screen (line 7000), then an electricity rate entry routine (line 4000), followed by a screen display of all 16 appliance categories (line 2000). The main loop at lines 35–90 prompts the user to select an item number, dispatches to the appropriate handler, and updates the running total.
The subroutine layout by line range is:
| Line Range | Appliance / Function |
|---|---|
| 100–199 | Air conditioners |
| 200–299 | Electric blanket / other items |
| 300–399 | Dishwasher |
| 400–499 | Clothes dryer |
| 500–599 | Freezer |
| 600–699 | Hair dryers |
| 700–799 | Heaters |
| 800–899 | Lights |
| 900–999 | Microwave oven |
| 1000–1099 | Oven (range/wall) |
| 1100–1199 | Refrigerator |
| 1200–1299 | Stereo system |
| 1300–1399 | Stove burners |
| 1400–1499 | Toaster oven |
| 1500–1599 | Television sets |
| 1600–1699 | Water heater |
| 2000–3099 | Menu display and cost column print |
| 4000–4099 | Electric rate entry |
| 5000–5099 | Reprint quantity column |
| 6000–6099 | Cost formatting and total accumulation |
| 7000–8099 | Title screen with animated bill display |
| 9000–9099 | Column position calculation for cost display |
Key BASIC Idioms and Notable Techniques
The most technically interesting feature is the computed GOSUB at line 75: GOSUB X*100, where X is the user-selected item number (1–16). This dispatches directly to the correct appliance subroutine (e.g., item 3 calls line 300, item 11 calls line 1100) without any IF/THEN chain, keeping the main loop compact. Items 6, 7, and 8 use line numbers 600, 700, and 800 respectively, but items 9 onward use 900, 1000, 1100, and so on — the mapping is consistent across all 16 categories.
The column-alignment subroutine at lines 9000–9099 computes the screen column G for right-aligning a cost figure based on its magnitude:
- Column 29 for values under $0.10
- Column 28 for $0.10–$9.99
- Column 27 for $10.00–$99.99
- Column 26 for $100.00 and above
The same logic is repeated inline at lines 41–44 for the total cost display, a minor duplication that could have reused the subroutine.
The flag variable D$ is set to "1" at line 35 for normal entry or checked against "0" (user-entered default) inside each appliance subroutine. This single string variable gates whether the program asks for wattage input or substitutes a hard-coded default value, a simple but effective dual-mode input pattern.
The flag variable SK is set to 1 by the title screen routine (line 7001) and cleared to 0 at line 89 after the first item entry. Line 38 tests SK=1 to skip the cost update subroutine on the very first pass through the loop, preventing accumulation before any data is entered.
Appliance Cost Formulas
Each subroutine applies a domain-appropriate formula. Representative examples include:
- Air conditioner (line 175):
C(X) = TS * DM * E(1) * H * B / 34.12— BTU rating divided by 34.12 converts BTU/hr to kilowatts; thermostat settingTSscales usage. - Freezer/refrigerator (lines 550, 1150):
C(X) = W * E(1) * 24 * 30for wattage-based entry; or a cubic-foot formula using constants 3500 (freezer) and 4000 (refrigerator) divided by 0.0497 and 12 for the size-based default mode. - Water heater (line 1640):
W = (P * 20 * 7.48) * (TH - 55) / 3412— assumes 20 gallons per person per day, 7.48 BTU/gallon-°F, baseline 55°F, and 3412 BTU/kWh conversion. - Television (line 1512): Diagonal size in inches multiplied by 5 gives an estimated wattage when no explicit value is entered.
Title Screen
The subroutine at lines 7000–8099 draws an elaborate title screen using block graphic characters to render a stylized electric meter with wire connections, meter face, and an animated electric bill table. Lines 7033–7065 simulate scrolling bill data by overprinting line 20 with successive meter readings and dollar amounts in a tight loop, giving a simple animation effect before clearing the screen. A short delay loop using FOR Q=1 TO 25: NEXT Q at lines 8090–8091 paces the transition to the main program.
Bugs and Anomalies
- At line 73, the previous cost for item
Xis subtracted from the total before recalculation:T(1) = T(1) - C(X). However,T(1)is only accumulated inside subroutine 6000 (line 6018), which is skipped on the first pass (whenSK=1). This means that if an item is re-entered on the first selection, the subtraction will produce a negative total momentarily, though it self-corrects on subsequent entries. - Line 6002 divides
C(X)by 10 then by 100:C(X) = INT(C(X)/10)/100. This rounds to the nearest 10 cents rather than the nearest cent, which may cause minor display inaccuracies for small costs. - Line 1157 uses
CHR$(156 + N)to label refrigerators by number. For N=1 this yields CHR$(157), which is a block graphic character rather than a numeral — a cosmetic quirk when displaying refrigerator number labels. - Items 1, 6, 7, 8, and 16 are excluded from the default-mode prompt at line 53, meaning those subroutines always operate in their own internal default/manual logic without the global
D$flag being set by the user at the menu level.
Content
Source Code
1 GOSUB 7000
2 DIM C(16)
3 DIM A(8)
4 DIM E(1)
5 DIM T(1)
6 REM REV 1
7 GOSUB 4000
8 CLS
9 GOTO 15
10 GOSUB 7000
25 GOSUB 2000
31 GOSUB 5000
35 LET D$="1"
36 PRINT AT 20,0;" "
37 PRINT AT 20,1;"ELECTRIC RATE= ";E(1)*100;" CENTS/KWH"
38 IF SK=1 THEN GOTO 40
39 GOSUB 6000
40 IF T(1)<=0 THEN GOTO 47
41 IF T(1)>0 THEN LET P=29
42 IF T(1)>=.1 THEN LET P=28
43 IF T(1)>=10 THEN LET P=27
44 IF T(1)>=100 THEN LET P=26
45 PRINT AT 19,P;INT (T(1)*100)/100
46 GOTO 48
47 PRINT AT 19,29;".00"
48 PRINT AT 21,0;"% % % % % %E%N%T%E%R% %T%H%E% %I%T%E%M% %N%U%M%B%E%R% % % % % % "
49 PRINT AT X+1,0;" "
50 INPUT X
51 IF X<1 OR X>16 THEN GOTO 50
52 PRINT AT X+1,0;"%>"
53 IF X=1 OR X=6 OR X=7 OR X=8 OR X=16 THEN GOTO 57
54 PRINT AT 21,0;"% % % % % %E%N%T%E%R% %Z%E%R%O% %F%O%R% %D%E%F%A%U%L%T% % % % % "
55 INPUT D$
60 PRINT AT 20,0;" "
73 LET T(1)=T(1)-C(X)
74 LET C(X)=0
75 GOSUB X*100
76 PRINT AT 19,26;" "
85 PRINT AT 21,0;" "
89 LET SK=0
90 GOTO 35
101 PRINT AT 21,0;"%E%N%T%E%R% %N%U%M%B%E%R% %O%F% %A%I%R% %C%O%N%D%I%T%I%O%N%E%R%S"
102 INPUT A(1)
103 PRINT AT 2,21;" "
104 PRINT AT 2,21;A(1);")"
105 FOR N=1 TO A(1)
115 PRINT AT 20,0;"% % % %E%N%T%E%R% %B%T%U% %P%E%R% %H%O%U%R% %R%A%T%I%N%G% % % % "
116 PRINT AT 21,0;" FOR AIR CONDITIONER NUMBER "
127 PRINT AT 21,29;N
130 INPUT B
135 PRINT AT 20,0;"% %E%N%T%E%R% %N%O%.% %D%A%Y%S% %U%S%E%D% %E%A%C%H% %M%O%N%T%H% "
140 INPUT DM
145 PRINT AT 20,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
148 INPUT H
150 PRINT AT 20,0;"%E%N%T%E%R% %N%O%R%M%A%L% %T%H%E%R%M%O%S%T%A%T% %S%E%T%T%I%N%G% "
151 PRINT AT 21,0;"% % % % % % %Z%E%R%O%-%L%O%W% %T%O% %1%0%-%H%I%G%H% % % % % % % "
152 INPUT TS
153 IF TS>10 OR TS<0 THEN GOTO 152
175 LET C(X)=C(X)+(TS*DM*E(1)*H*B/34.12)
180 NEXT N
181 IF A(1)=0 THEN LET C(X)=0
199 RETURN
201 IF D$="0" THEN GOTO 203
202 GOTO 207
203 LET W=170
204 PRINT AT 20,0;"170 WATTS ASSUMED/ ELEC. BLANKET"
205 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %O%F% %E%L%E%C%T%R%I%C% %B%L%A%N%K%E%T%S% "
206 GOTO 208
207 PRINT AT 21,0;"% % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %O%T%H%E%R% %I%T%E%M%S% % % "
208 INPUT A(2)
209 PRINT AT 3,20;" "
210 PRINT AT 3,20;A(2);")"
211 FOR N=1 TO A(2)
213 PRINT AT 21,0;" FOR ITEM NUMBER "
214 PRINT AT 21,23;N
215 IF D$="0" THEN GOTO 230
216 PRINT AT 20,0;"% % % % % % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% % % % % % % % % % "
220 INPUT W
235 PRINT AT 20,0;"% %E%N%T%E%R% %N%O%.% %D%A%Y%S% %U%S%E%D% %E%A%C%H% %M%O%N%T%H% "
240 INPUT DM
245 PRINT AT 20,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
248 INPUT H
250 LET C(X)=C(X)+(DM*W*E(1)*H)
280 NEXT N
281 IF A(2)=0 THEN LET C(X)=0
299 RETURN
306 IF D$="0" THEN GOTO 312
307 PRINT AT 21,0;"% % % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %R%A%T%I%N%G% % % % % % "
308 INPUT W
309 IF W=0 THEN GOTO 399
310 PRINT AT 20,10;W;" WATTS"
311 GOTO 334
312 PRINT AT 20,7;"750 WATTS ASSUMED"
313 LET W=750
335 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %T%I%M%E%S% %U%S%E%D% %E%A%C%H% %W%E%E%K% "
340 INPUT TW
345 PRINT AT 21,0;"% % %N%O%.% %O%F% %M%I%N%U%T%E%S% %F%O%R% %D%R%Y% %C%Y%C%L%E% % "
348 INPUT M
350 LET C(X)=TW*W*E(1)*M*52/720
399 RETURN
406 IF D$="0" THEN GOTO 410
407 PRINT AT 21,0;"% % % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %R%A%T%I%N%G% % % % % % "
408 INPUT W
409 GOTO 430
410 PRINT AT 20,7;"5600 WATTS ASSUMED"
411 LET W=5600
412 GOTO 435
430 PRINT AT 20,11;W;" WATTS"
431 IF W=0 THEN GOTO 499
435 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %T%I%M%E%S% %U%S%E%D% %E%A%C%H% %W%E%E%K% "
440 INPUT TW
445 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %M%I%N%U%T%E%S% %O%F% %D%R%Y% %C%Y%C%L%E% "
448 INPUT M
450 LET C(X)=TW*W*E(1)*M*52/720
499 RETURN
505 IF D$="0" THEN GOTO 555
516 PRINT AT 21,0;"% % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %O%F% %F%R%E%E%Z%E%R% % % % "
517 INPUT W
550 LET C(X)=C(X)+(W*E(1)*24*30)
551 GOTO 580
555 PRINT AT 20,0;"% %E%N%T%E%R% %T%H%E% %S%I%Z%E% %O%F% %T%H%E% %F%R%E%E%Z%E%R% % "
556 PRINT AT 21,0;"% % % % % % % % % %I%N% %C%U%B%I%C% %F%E%E%T% % % % % % % % % % "
557 INPUT CF
570 LET C(X)=C(X)+(3500*CF*E(1)/.0497/12)
599 RETURN
601 PRINT AT 21,0;"% % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %H%A%I%R% %D%R%Y%E%R%S% % % "
602 INPUT A(3)
603 PRINT AT 7,16;" "
604 PRINT AT 7,16;A(3);")"
610 FOR N=1 TO A(3)
616 PRINT AT 20,0;"% % % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %R%A%T%I%N%G% % % % % % "
617 PRINT AT 21,0;" FOR HAIR DRYER NUMBER "
622 PRINT AT 21,26;N
627 INPUT W
645 PRINT AT 20,0;"% %E%N%T%E%R% %N%O%.% %T%I%M%E%S% %U%S%E%D% %E%A%C%H% %W%E%E%K% "
646 INPUT TW
647 PRINT AT 20,0;"%E%N%T%E%R% %N%O%.% %M%I%N%U%T%E%S% %U%S%E%D% %E%A%C%H% %T%I%M%E"
648 INPUT M
650 LET C(X)=C(X)+(W*E(1)*M*TW*52/720)
680 NEXT N
681 IF A(3)=0 THEN LET C(X)=0
699 RETURN
701 PRINT AT 21,0;"% % % % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %H%E%A%T%E%R%S% % % % % "
702 INPUT A(4)
703 PRINT AT 8,12;" "
704 PRINT AT 8,12;A(4);")"
710 FOR N=1 TO A(4)
711 PRINT AT 21,0;" HEATER NUMBER "
716 PRINT AT 21,22;N
718 PRINT AT 20,0;"% % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %R%A%T%I%N%G% %F%O%R% % % % "
720 INPUT W
721 PRINT AT 20,0;" "
722 PRINT AT 20,11;W;" WATTS"
730 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %D%A%Y%S% %U%S%E%D% %E%A%C%H% %M%O%N%T%H% "
732 INPUT DM
735 PRINT AT 21,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
740 INPUT H
752 PRINT AT 20,0;"% %E%N%T%E%R% %N%O%R%M%A%L% %T%H%E%R%M%O%S%T%A%T% %S%E%T%T%I%N%G"
753 PRINT AT 21,0;"% % % % % % %Z%E%R%O%-%L%O%W% %T%O% %1%0%-%H%I%G%H% % % % % % % "
754 INPUT TS
755 IF TS>10 OR TS<0 THEN GOTO 754
770 LET C(X)=C(X)+(TS*W*E(1)*H*DM/10)
780 NEXT N
781 IF A(4)=0 THEN LET C(X)=0
799 RETURN
801 PRINT AT 21,0;"% % % % % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %L%I%G%H%T%S% % % % % "
802 INPUT A(5)
803 PRINT AT 9,12;" "
804 PRINT AT 9,12;A(5);")"
810 FOR N=1 TO A(5)
815 PRINT AT 20,0;"% % % %E%N%T%E%R% %W%A%T%T%A%G%E% %O%F% %B%U%L%B% %F%O%R% % % % "
816 PRINT AT 21,0;" LIGHT NUMBER "
819 PRINT AT 21,21;N
820 INPUT W
835 PRINT AT 20,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
840 INPUT H
850 LET C(X)=C(X)+(W*E(1)*H*30)
880 NEXT N
881 IF A(5)=0 THEN LET C(X)=0
899 RETURN
902 IF D$="0" THEN GOTO 920
910 PRINT AT 20,0;"% %E%N%T%E%R% %W%A%T%T%A%G%E%;% %O%V%E%N%S% %T%Y%P%I%C%A%L%L%Y% "
911 PRINT AT 21,0;"% % % %V%A%R%Y% %F%R%O%M% %9%0% %T%O% %6%2%5% %W%A%T%T%S%.% % % "
912 INPUT W
913 IF W=0 THEN GOTO 999
914 GOTO 925
920 LET W=400
925 PRINT AT 20,0;"% %E%N%T%E%R% %N%O%.% %D%A%Y%S% %U%S%E%D% %E%A%C%H% %M%O%N%T%H% "
926 PRINT AT 21,0;" "
927 PRINT AT 21,11;W;" WATTS"
928 INPUT D
935 PRINT AT 20,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
940 INPUT H
950 LET C(X)=W*E(1)*H*D
999 RETURN
1001 PRINT AT 21,0;"% % % % % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %O%V%E%N%S% % % % % % "
1002 INPUT A(8)
1003 PRINT AT 11,10;" "
1004 PRINT AT 11,10;A(8);")"
1007 PRINT AT 20,1;"OVEN NO."
1008 FOR N=1 TO A(8)
1009 PRINT AT 20,10;N;"/"
1011 IF D$="0" THEN GOTO 1018
1013 PRINT AT 20,13;" "
1014 PRINT AT 21,0;"% % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %O%F% %O%V%E%N% % % % % % "
1015 INPUT W
1016 PRINT AT 20,13;W;" WATTS "
1017 GOTO 1020
1018 LET W=2400
1019 PRINT AT 20,13;W;" WATTS ASSUMED"
1020 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %T%I%M%E%S% %U%S%E%D% %E%A%C%H% %W%E%E%K% "
1022 INPUT TW
1035 PRINT AT 21,0;"%E%N%T%E%R% %N%O% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %T%I%M%E"
1040 INPUT H
1050 LET C(X)=C(X)+(W*E(1)*H*TW*52/12)
1060 NEXT N
1081 IF A(8)=0 THEN LET C(X)=0
1099 RETURN
1101 PRINT AT 21,0;"% %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %R%E%F%R%I%G%E%R%A%T%O%R%S% % "
1105 INPUT A(6)
1108 PRINT AT 12,18;" "
1109 PRINT AT 12,18;A(6);")"
1110 FOR N=1 TO A(6)
1115 IF D$="0" THEN GOTO 1155
1116 PRINT AT 20,0;"% % % % % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %O%F% % % % % % % % "
1117 PRINT AT 21,0;" REFRIGERATOR NUMBER "
1125 PRINT AT 21,26;N
1140 INPUT W
1150 LET C(X)=C(X)+(W*E(1)*24*30)
1152 GOTO 1180
1155 PRINT AT 20,0;"% %E%N%T%E%R% %T%H%E% %S%I%Z%E% %O%F% %R%E%F%R%I%G%E%R%A%T%O%R% "
1156 PRINT AT 21,0;"% % % % % %N%U%M%B%E%R% % % %I%N% %C%U%B%I%C% %F%E%E%T% % % % % "
1157 PRINT AT 21,12;CHR$ (156+N)
1160 INPUT CF
1170 LET C(X)=C(X)+(4000*CF*E(1)/.0497/12)
1180 NEXT N
1181 IF A(6)=0 THEN LET C(X)=0
1199 RETURN
1206 IF D$="0" THEN GOTO 1219
1210 PRINT AT 20,0;"% %E%N%T%E%R% %P%O%W%E%R% %C%O%N%S%U%M%P%T%I%O%N% %W%A%T%T%A%G%E"
1211 PRINT AT 21,0;"%F%O%R% %A%L%L% %C%O%M%P%O%N%E%N%T%S% %I%N% %T%H%E% %S%Y%S%T%E%M"
1212 INPUT W
1213 PRINT AT 20,0;" "
1214 PRINT AT 20,11;W;" WATTS"
1215 IF W=0 THEN GOTO 1299
1218 GOTO 1230
1219 PRINT AT 20,7;"300 WATTS ASSUMED"
1221 LET W=300
1230 PRINT AT 21,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
1240 INPUT H
1250 LET C(X)=W*E(1)*H*30
1299 RETURN
1301 PRINT AT 21,0;"% % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %B%U%R%N%E%R%S% %U%S%E%D% % "
1302 INPUT BU
1304 FOR N=1 TO BU
1306 IF D$="0" THEN GOTO 1329
1309 PRINT AT 20,4;"BURNER ";N
1311 PRINT AT 21,0;"% % %E%N%T%E%R% %T%H%E% %W%A%T%T%A%G%E% %O%F% %B%U%R%N%E%R% % % "
1314 INPUT W
1318 PRINT AT 20,13;" = ";W;" WATTS "
1328 GOTO 1335
1329 LET W=1025
1330 PRINT AT 20,0;" BURNER( )= 1025 WATTS ASSUMED"
1331 PRINT AT 20,9;N
1335 PRINT AT 21,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
1340 INPUT H
1350 LET C(X)=C(X)+(W*E(1)*H*30)
1360 NEXT N
1399 RETURN
1406 IF D$="0" THEN GOTO 1420
1410 PRINT AT 21,0;"% % % % % % % % % %E%N%T%E%R% %W%A%T%T%A%G%E% % % % % % % % % % "
1411 INPUT W
1412 IF W=0 THEN GOTO 1499
1419 GOTO 1421
1420 LET W=1500
1421 PRINT AT 21,0;"% %E%N%T%E%R% %N%O%.% %D%A%Y%S% %U%S%E%D% %E%A%C%H% %M%O%N%T%H% "
1422 PRINT AT 20,11;W;" WATTS"
1423 INPUT D
1435 PRINT AT 21,0;"%E%N%T%E%R% %N%O%.% %M%I%N%U%T%E%S% %U%S%E%D% %E%A%C%H% %T%I%M%E"
1440 INPUT M
1450 LET C(X)=W*E(1)*M*D/60
1499 RETURN
1500 PRINT AT 21,0;"% % % % %E%N%T%E%R% %N%U%M%B%E%R% %O%F% %T%V% %S%E%T%S% % % % % "
1501 INPUT A(7)
1502 PRINT AT 16,16;" "
1503 PRINT AT 16,16;A(7);")"
1504 FOR N=1 TO A(7)
1505 PRINT AT 21,0;" FOR TV SET NUMBER "
1506 PRINT AT 21,24;N
1507 IF D$="0" THEN GOTO 1510
1508 GOTO 1518
1510 PRINT AT 20,0;"% %E%N%T%E%R% %D%I%A%G%O%N%A%L% %S%I%Z%E% %I%N% %I%N%C%H%E%S% % "
1511 INPUT SZ
1512 LET W=INT (SZ*5)
1513 PRINT AT 21,0;" "
1514 PRINT AT 21,8;W;" WATTS ASSUMED"
1515 GOTO 1535
1518 PRINT AT 20,0;"% % % % %E%N%T%E%R% %W%A%T%T%A%G%E% %R%A%T%I%N%G% %F%O%R%:% % % "
1520 INPUT W
1535 PRINT AT 20,0;"%E%N%T%E%R% %N%O%.% %O%F% %H%O%U%R%S% %U%S%E%D% %E%A%C%H% %D%A%Y"
1540 INPUT H
1550 LET C(X)=C(X)+(W*E(1)*H*30)
1580 NEXT N
1581 IF A(7)=0 THEN LET C(X)=0
1599 RETURN
1610 PRINT AT 20,0;"% % %E%N%T%E%R% %T%H%E% %N%U%M%B%E%R% %O%F% %P%E%R%S%O%N%S% % % "
1611 PRINT AT 21,0;"% % % %R%E%S%I%D%I%N%G% %I%N% %T%H%E% %H%O%U%S%E%H%O%L%D%.% % % "
1612 INPUT P
1613 IF P=0 THEN GOTO 1699
1620 PRINT AT 20,0;"% %E%N%T%E%R% %W%A%T%E%R% %H%E%A%T%E%R% %T%H%E%R%M%O%S%T%A%T% % "
1621 PRINT AT 21,0;"% %S%E%T%T%I%N%G% %I%N% %D%E%G%R%E%E%S% %F%A%H%R%E%N%H%E%I%T%.% "
1622 INPUT TH
1634 PRINT AT 21,0;" "
1635 PRINT AT 20,0;" DAILY HOT WATER USAGE ASSUMED: "
1636 PRINT AT 21,10;P*20;" GALLONS"
1640 LET W=(P*20*7.48)*(TH-55)/3412
1650 LET C(X)=1000*W*E(1)*30
1660 FOR Q=1 TO 30
1670 NEXT Q
1699 RETURN
2010 PRINT AT 0,5;"ITEM (QUANTITY)";TAB 27;"COST"
2011 PRINT AT 1,0;"''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"
2015 PRINT AT 2,2;"1-AIR CONDITIONER";TAB 25;"$"
2018 PRINT AT 3,2;"2-BLANKET/ OTHER";TAB 25;"$"
2022 PRINT AT 4,2;"3-DISHWASHER";TAB 25;"$"
2024 PRINT AT 5,2;"4-CLOTHES DRYER";TAB 25;"$"
2025 PRINT AT 6,2;"5-FREEZER";TAB 25;"$"
2026 PRINT AT 7,2;"6-HAIR DRYER";TAB 25;"$"
2028 PRINT AT 8,2;"7-HEATER";TAB 25;"$"
2032 PRINT AT 9,2;"8-LIGHTS";TAB 25;"$"
2034 PRINT AT 10,2;"9-MICROWAVE OVEN";TAB 25;"$"
2036 PRINT AT 11,1;"10-OVEN";TAB 25;"$"
2038 PRINT AT 12,1;"11-REFRIGERATOR";TAB 25;"$"
2040 PRINT AT 13,1;"12-STEREO";TAB 25;"$"
2042 PRINT AT 14,1;"13-STOVE";TAB 25;"$"
2044 PRINT AT 15,1;"14-TOASTER OVEN";TAB 25;"$"
2048 PRINT AT 16,1;"15-TELEVISION";TAB 25;"$"
2050 PRINT AT 17,1;"16-WATER HEATER";TAB 25;"$"
2055 PRINT AT 18,0;"''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"
2058 PRINT AT 19,0;"MONTHLY ELECTRIC COST $"
3000 FOR X=1 TO 16
3001 IF C(X)=0 THEN GOTO 3070
3005 GOSUB 9000
3050 PRINT AT X+1,G;C(X)
3060 GOTO 3080
3070 PRINT AT X+1,29;".00"
3080 NEXT X
3099 RETURN
4000 PRINT AT 2,0;"ENTER THE COST OF A KILO-WATT HOUR (KWH) FOR YOUR AREA. YOU CAN CALCULATE THIS VALUE USING ONE OF YOUR RECENT ELECTRIC BILLS AND THE FOLLOWING EQUATION."
4012 PRINT AT 12,12;"ELECTRIC BILL X 100"
4013 PRINT AT 13,1;"COST/KWH= ---------------------"
4014 PRINT AT 14,18;"KWH USED"
4015 PRINT AT 17,0;"THIS VALUE SHOULD RANGE BETWEEN"
4017 PRINT AT 18,1;"2 AND 15 CENTS."
4019 PRINT AT 21,0;"% % % % % %E%N%T%E%R% %C%O%S%T%/%K%W%H% %(%C%E%N%T%S%)% % % % % "
4020 INPUT EE
4024 LET E(1)=EE/100
4099 RETURN
5010 PRINT AT 2,20;"(";INT A(1);")"
5011 PRINT AT 3,19;"(";INT A(2);")"
5012 PRINT AT 7,15;"(";INT A(3);")"
5016 PRINT AT 8,11;"(";INT A(4);")"
5020 PRINT AT 9,11;"(";INT A(5);")"
5021 PRINT AT 11,9;"(";INT A(8);")"
5022 PRINT AT 12,17;"(";INT A(6);")"
5025 PRINT AT 16,15;"(";INT A(7);")"
5099 RETURN
6001 PRINT AT X+1,26;" "
6002 LET C(X)=INT (C(X)/10)/100
6011 IF C(X)=0 THEN GOTO 6022
6015 GOSUB 9000
6018 LET T(1)=C(X)+T(1)
6019 PRINT AT X+1,G;C(X)
6020 GOTO 6025
6022 PRINT AT X+1,29;".00"
6099 RETURN
7000 SLOW
7001 LET SK=1
7002 LET X=1
7005 PRINT AT 11,5;"ELECTRIC COST ANALYZER"
7006 PRINT AT 11,28;".....:"
7007 PRINT AT 10,30;" :"
7008 PRINT AT 9,30;" :"
7009 PRINT AT 8,16;".............................."
7010 PRINT AT 8,14;"@@@@"
7011 PRINT AT 7,14;"@@@@"
7015 PRINT AT 6,14;": :"
7016 PRINT AT 5,13;"'.::.'"
7017 PRINT AT 4,12;" : <> : "
7018 PRINT AT 3,12;" : : "
7019 PRINT AT 2,13;".' '."
7020 PRINT AT 1,14;"...."
7021 PRINT AT 11,1;"......"
7022 FOR N=12 TO 15
7023 PRINT AT N,1;": "
7024 NEXT N
7025 PRINT AT 16,1;"''''''''''''''''''''''''''''''''''''''''"
7026 PRINT AT 14,25;":''''''': ";TAB 53;"% % ,, : . . : ";TAB 85;"% % ,, : : : : ";TAB 117;"'''' : : ";TAB 153;"''''''''' "
7030 PRINT AT 18,6;"% %E%L%E%C%T%R%I%C% %C%O%M%P%A%N%Y% "
7031 PRINT AT 19,0;".% %R%A%T%E% % %R%E%A%D%I%N%G%S% % % %K%W%H% % %A%M%O%U%N%T% ."
7032 PRINT AT 20,0;".% RS 4197 4197";TAB 19;"000";TAB 23;"$ .00% ."
7033 FOR Q=1 TO 15
7034 NEXT Q
7035 PRINT AT 15,21;" : .:% . : ";TAB 53;"'''''''':'% % : ";TAB 85;" : ''' : "
7039 PRINT AT 4,4;"* * * *"
7040 PRINT AT 3,19;"* * * *"
7041 PRINT AT 20,13;"4320";TAB 19;"123";TAB 26;"4.86"
7042 PRINT AT 5,11;"*";TAB 18;"*"
7044 PRINT AT 20,13;"4443";TAB 19;"246";TAB 25;"15.23"
7045 PRINT AT 6,10;"*";TAB 19;"*"
7046 PRINT AT 20,13;"4566";TAB 19;"369";TAB 25;"33.72"
7047 PRINT AT 7,9;"*";TAB 20;"*"
7048 PRINT AT 20,13;"4689";TAB 19;"492";TAB 25;"58.54"
7056 PRINT AT 8,8;"*"
7057 PRINT AT 20,13;"4812";TAB 19;"615";TAB 25;"79.76"
7058 PRINT AT 2,11;"*";TAB 18;"*"
7059 PRINT AT 20,13;"4935";TAB 19;"738";TAB 25;"88.75"
7060 PRINT AT 1,9;"*";TAB 20;"*"
7061 PRINT AT 20,13;"5058";TAB 19;"861";TAB 25;"92.67"
7064 PRINT AT 0,7;"*";TAB 22;"*"
7065 PRINT AT 20,13;"5182";TAB 19;"985";TAB 23;"$100.00"
8090 FOR Q=1 TO 25
8091 NEXT Q
8098 CLS
8099 RETURN
9014 IF C(X)>0 THEN LET G=29
9015 IF C(X)>=.1 THEN LET G=28
9017 IF C(X)>=10 THEN LET G=27
9018 IF C(X)>=100 THEN LET G=26
9099 RETURN
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

