100 REM UTILITIES FILE 64 COPYRIGHT 1995 V1.0 BY D.B. DUMLER 01/11/95 110 CLR:MT=49152:DV=PEEK(186):IFDV<8THENDV=8 115 IFPEEK(762)<>192THENLOAD"PT.ML",DV,1 120 D=DV:IFPEEK(999)<>101THENLOAD"DIR.ML",DV,1 125 SYS57812"MENUBOX C000",DV,0:POKE780,0:POKE781,0:POKE782,192:SYS65493 130 E=12:DIMM$(E),EL(E),KW(E),BP(E),LD(E),WA(E),GA(E),GS(E),CF(E),PT$(9) 140 A=211:B=988:M=24:S=54272:PRINTCHR$(14);CHR$(8):POKE965,24 150 SP$="":FORI=1TO80:SP$=SP$+" ":NEXT 160 P4=1:OPEN15,DV,15:OPEN8,DV,8,"CONFIG.DATA":GOSUB2180:IFERTHENCLOSE8:GOTO40000 170 INPUT#8,NN$,CE,D,RT,P,SA,P1,P2,P3,P4,P5:NN$=" ":FORI=1TO9:PT$(I)=" " 180 GET#8,B$:IFB$=""THENB$=CHR$(.) 190 REMIFB$<>CHR$(13)THENPT$(I)=PT$(I)+B$:GOTO180 200 NEXT:CLOSE8:FORI=1TOE:READM$(I):NEXT 210 POKE830,D:N1$="0:UTIL.DATA " 220 V=13*4096:HX=80:HY=126:CH=1:POKE2040,11:POKEV+21,.:POKEV+39,P3 230 BO=06:BK=00:TX=03:GOSUB1970:PRINT"[147]"," "; 240 I=700:MM=PEEK(I):DD=PEEK(I+1):YY=PEEK(I+2):GOTO300 250 IFRT=.THEN290 260 DZ=RT:GOSUB2260:IF(ER>.)AND(ER<>73)THENRT=.:DZ=DV:GOSUB2260:GOTO290 270 PRINT#15,"T-RD":GET#15,YY$,YY$,MM$,DD$:DZ=DV:GOSUB2260 280 YY=ASC(YY$):MM=ASC(MM$):DD=ASC(DD$):GOTO300 290 GOSUB3100:SYSB,5,10,"[197]NTER TODAY'S DATE:":GOSUB1900:PRINT"", 291 FORJJ=0TO8:POKE631+JJ,ASC("[157]"):NEXT:POKE198,9 292 SYSMT+66,TX,1,8,"[205][205]/[196][196]/[217][217]":MM=VAL(MID$(W$,1,2)):DD=VAL(MID$(W$,4,2)) 294 YY=VAL(MID$(W$,7,2)) 300 IF(MM<1)OR(MM>E)OR(DD<1)OR(DD>31)OR(YY<.)OR(YY>99)THEN250 310 MM$=STR$(MM):DD$=STR$(DD):YR$=RIGHT$(STR$(CE+YY),4) 320 POKEI,MM:POKEI+1,DD:POKEI+2,YY 330 DZ=D:GOSUB2170:IF(ER>.)AND(ER<>73)THEN330 340 BO=14:BK=00:TX=03:GOSUB1970 350 GOSUB1980:GOSUB2420:PRINT"[145]"TAB(NT)NN$ 360 PRINT," - [205][193][201][206] [205][197][206][213] - 370 [153]," 1 ASCETCH DATA":[153]," 2 (null)AVE DATA 380 PRINT," 3 [197]DIT DATA":IFMUTHENPRINTTAB(25)"[145]- "M$(MU)" "YR$ 390 PRINT," 4 [196]ISPLAY DATA":PRINT," 5 [208]RINT HARDCOPY 400 [153]," 6 (null)UN (null)(null)RIGHT$(null)RIGHT$(null)RIGHT$VAL(null) CHR$(null)ATN(null)LEFT$ 64" 405 [153]," 7 VALXIT PROGRAM":[141]1900:[141]2010 410 [139]CH[178].[167]HY[178]126:CH[178]1:[137]350 420 BK[178]00:TX[178]03:[151]V[170]21,. 430 [145]CH[137]560,640,730,1020,1530,470,440 440 [141]3300:[153]"(null)UIT? ATNRE YOU SURE? ((null)/(null))":[141]3000:Q$[178]JJ$ 450 [139]Q$[179][177]"Y"[167]HY[178]126:CH[178]1:[137]350 460 [137]40000 470 N3$[178]"(null)(null)RIGHT$(null)RIGHT$(null)RIGHT$VAL(null) CHR$(null)ATN(null)LEFT$ 64":N4$[178]"UG" 480 [141]3300:[153]"RIGHT$S THE "N3$" DISK":[153]"IN DRIVE"DV; 490 [153]"((null)/(null))":[141]3000:Q$[178]JJ$:[139]Q$[179][177]"Y"[167]340 500 DZ[178]DV:[141]2170:[139]ER[167]330 510 [159]8,DV,8,N4$[170]",P,R":[160]8:[141]2180:[139]ER[167]330 520 [153]"LOAD":[158]B,E,10,"LEFT$ANG ON ...":[153],"(null)OADING: "N3$ 530 [151]646,[194](53281):[153]"LOAD"[199](34)N4$[199](34)","DV:[153]"RUN 540 FORI=631TO634:POKEI,13:NEXT:POKE198,4 550 CLOSE15:END 560 BO=6:GOSUB1970 570 GOSUB1980:PRINT," - [198][197][212][195][200] [196][193][212][193] -":GOSUB2290 575 ONNGOTO580,340,570,570 580 OPEN4,D,4,N1$+YF$+",S,R":GOSUB2180:IFERTHEN630 590 I=1:SYSB,M,8,"[145][145][145][145] [198]ETCHING: [213]TILITIES "YU$" [146][145] 600 [132]4,EL(I),KW(I),BP(I),LD(I),WA(I),GA(I),GS(I),CF(I) 610 [139]ST[178].[167]I[178]I[170]1:[158]679:[137]600 620 MU[178]I:YR$[178]YU$ 630 [160]4:[141]2180:[137]560 640 BO[178]4:[141]1970 650 [141]1980:[153]," - (null)ATN(null)VAL STR$ATN(null)ATN - 660 IFMU<1THENX=4:W$="UTILITIES DATATO SAVE!":GOSUB2000:GOTO340 670 GOSUB2290:ONNGOTO680,340,650,650 680 PRINT#15,"S"+N1$+YF$:OPEN4,D,4,N1$+YF$+",S,W" 690 SYSB,M,8,"[145][145][145][145] [211]AVING: [213]TILITIES "YU$" [146][145]":FORI=1TOMU 700 PRINT#4,EL(I):PRINT#4,KW(I):PRINT#4,BP(I):PRINT#4,LD(I):PRINT#4,WA(I) 710 PRINT#4,GA(I):PRINT#4,GS(I):PRINT#4,CF(I):SYS679:NEXT:YR$=YU$ 720 CLOSE4:GOSUB2180:GOTO640 730 BO=8:GOSUB1970 740 GOSUB1980:PRINT," - [197][196][201][212] [196][193][212][193] - 750 [139]MU[167][153]," (null)HROUGH "M$(MU) 760 [153],"1. ATNDD":[153],"2. LENHANGE":[153],"3. 'STR$RIGHT$(null)(null)(null)ATN(null) STR$ATN(null)ATN' (null)VAL(null)(null) 770 PRINT,"4. [205][193][201][206] [205][197][206][213] 780 [141]2450:[139]N[179]1[176]N[177]4[167][153]"ON":[137]780 790 [145]N[137]830,800,1020,340 800 [139]MU[179]1[167]X[178]3:W$[178]"UTILITIES DATATO CHANGE!":[141]2000:[137]740 810 [141]3300:[153]"(null)HICH MONTH? (1-12): ";:[158]MT[170]66,TX,1,2,[196](MU):I[178][197](W$) 815 [141]3310:[139]I[179]1[176]I[177]MU[167]810 820 [137]850:[143] GOSUB2460:GOTO850 830 [139]MU[178]E[167][153],"CMDCMD(null)HE FILE IS FULL ALREADY !":BZ[178]1:[141]2220:[137]740 840 I[178]MU[170]1:MU[178]I:[141]3300:[153]M$(I) 845 [141]3310 850 [153]"VALLECTRICITY COST: ";:[158]MT[170]66,TX,1,7,[196](EL(I)):EL(I)[178][197](W$) 860 [141]3310:[139]EL(I)[179].[167]850 870 [153]"(null)ILOWATT-HOURS USED: ";:[158]MT[170]66,TX,1,7,[196](KW(I)):KW(I)[178][197](W$) 880 [141]3310:[139]KW(I)[179].[167]870 890 [153]"(null)OCAL PHONE COST: ";:[158]MT[170]66,TX,1,7,[196](BP(I)):BP(I)[178][197](W$) 900 [141]3310:[139]BP(I)[179].[167]890 910 [153]"(null)ONG DIST SERVICE COST: ";:[158]MT[170]66,TX,1,7,[196](LD(I)):LD(I)[178][197](W$) 920 [141]3310:[139]LD(I)[179].[167]910 930 [153]"(null)ATER & SEWER COST: ";:[158]MT[170]66,TX,1,7,[196](WA(I)):WA(I)[178][197](W$) 940 [141]3310:[139]WA(I)[179].[167]930 950 [153]"CHR$ALLONS OF WATER USED: ";:[158]MT[170]66,TX,1,7,[196](GA(I)):GA(I)[178][197](W$) 960 [141]3310:[139]GA(I)[179].[167]950 970 [153]"(null)ATURAL GAS COST: ";:[158]MT[170]66,TX,1,7,[196](GS(I)):GS(I)[178][197](W$) 980 [141]3310:[139]GS(I)[179].[167]970 990 [153]"CHR$AS CUBIC FT USED: ";:[158]MT[170]66,TX,1,7,[196](CF(I)):CF(I)[178][197](W$) 1000 [139]CF(I)[179].[167][141]3300:[137]990 1010 [141]2460:[141]2550:[137]740 1020 BO[178]5:[141]1970 1030 [141]1980:[153]," - STR$RIGHT$(null)(null)(null)ATN(null) STR$ATN(null)ATN - 1040 IFMU<1THENX=6:W$="UTILITIES DATATO DISPLAY!":GOSUB2000:GOTO340 1050 PRINT,"1. [194]Y [205]ONTH":PRINT,"2. [197]LECTRICITY":PRINT,"3. [212]ELEPHONE 1060 [153],"4. (null)ATER":[153],"5. (null)ATURAL CHR$AS":[153],"6. 'VALDIT STR$ATA' (null)ENU 1070 PRINT,"7. [205]AIN [205]ENU 1080 [141]2450:[139]N[179]1[176]N[177]7[167][153]"ON":[137]1080 1090 [145]N[137]1100,1170,1260,1350,1440,730,340 1100 [141]3300:[153]"(null)HICH MONTH? (1-12) ";:[158]MT[170]66,TX,1,2,[196](MU):I[178][197](W$) 1105 [139]I[179]1[176]I[177]MU[167][153]:[153]"ONONON":[137]1100 1110 [141]2460:[139](I[178]1)[175](MU[177]1)[167][158]B,M,13," +:(null)EXT MONTH WAITONONONONONONON":[137]1140 1120 [139](I[178]MU)[175](MU[177]1)[167][158]B,M,13," -:(null)REV MONTH WAITONONONONONONON":[137]1140 1130 [139]MU[177]2[167][158]B,M,6," -:(null)REV MONTH +:(null)EXT MONTH WAITONONONONONONON 1140 GOSUB2550:IF(Q$="-")AND(I>1)THENI=I-1:GOTO1110 1150 IF(Q$="+")AND(I"Y"THEN340 1570 OPEN1,P,SA:PRINT#1,:NT=14 1580 PRINT#1,SPC(27)"- - [213][212][201][204][201][212][201][197][211] [198][201][204][197] 64 - -" 1590 GOSUB2430:PRINT#1,PT$(5) 1600 NT=28:PRINT#1,SPC(34);M$(MM)DD$","CE+YY 1610 PRINT"[206]OW PRINTING UTILITIES DATA ... 1620 [152]1,PT$(5)"(null)(null)RIGHT$(null)RIGHT$(null)RIGHT$VAL(null) STR$ATN(null)ATN "YR$;PT$(6);PT$(8):[141]2280 1630 [152]1," VAL(null)VALLEN(null)(null)RIGHT$LENRIGHT$(null)(null) (null)(null)LENATN(null) (null)(null)(null)CHR$ (null)ATN(null)VAL(null)"; 1640 [152]1," (null)ATN(null)(null)(null)ATN(null) CHR$ATN(null)" 1650 [152]1,"(null)(null)(null)(null)LEFT$ LEN(null)(null)(null) (null)(null)-LEFT$(null)(null) (null)LEFT$(null)(null)VAL STR$RIGHT$(null)(null) LEN(null)(null)(null) CHR$ATN(null)(null)(null)(null)(null) LEN(null)(null)(null)"; 1660 [152]1," LEN(null)-ASC(null) (null)(null)(null)ATN(null)" 1670 [141]2280:T2[178].:T3[178].:T4[178].:T5[178].:T6[178].:T7[178].:T8[178].:T9[178].:TT[178]. 1680 [129]I[178]1[164]MU:T1[178]EL(I)[170]BP(I)[170]LD(I)[170]WA(I)[170]GS(I):TT[178]TT[170]T1:T2[178]T2[170]EL(I):T3[178]T3[170]KW(I) 1690 T4[178]T4[170]BP(I):T5[178]T5[170]LD(I):T6[178]T6[170]WA(I):T7[178]T7[170]GA(I):T8[178]T8[170]GS(I):T9[178]T9[170]CF(I) 1700 PT$(.)[178]" "[170]M$(I):BL$[178]" ":R[178]EL(I):L2[178]9:[141]2120:R[178]KW(I):L2[178]7:[141]2160 1710 R[178]BP(I):L2[178]8:[141]2120:R[178]LD(I):L2[178]8:[141]2120 1720 R[178]WA(I):L2[178]8:[141]2120:R[178]GA(I):L2[178]8:[141]2160 1730 R[178]GS(I):L2[178]8:[141]2120:R[178]CF(I):L2[178]7:[141]2160 1740 BL$[178]" $":R[178]T1:L2[178]11:[141]2120:[152]1,PT$(.):[158]679:[130]:[141]2280 1750 [152]1:PT$(.)[178]"(null)(null)(null)ATN(null)":BL$[178]" " 1760 R[178]T2:L2[178]8:[141]2120:R[178]T3[170].5:L2[178]7:[141]2160 1770 R[178]T4:L2[178]8:[141]2120:R[178]T5:L2[178]8:[141]2120 1780 R[178]T6:L2[178]8:[141]2120:R[178]T7[170].5:L2[178]8:[141]2160 1790 R[178]T8:L2[178]8:[141]2120:R[178]T9[170].5:L2[178]7:[141]2160 1800 BL$[178]" $":R[178]TT:L2[178]11:[141]2120:[152]1,PT$(.):[158]679:[141]2280 1810 [152]1:PT$(.)[178]" ATN(null)CHR$.":BL$[178]" " 1820 R[178]T2[173]MU:L2[178]8:[141]2120:R[178]T3[173]MU[170].5:L2[178]7:[141]2160 1830 R[178]T4[173]MU:L2[178]8:[141]2120:R[178]T5[173]MU:L2[178]8:[141]2120 1840 R[178]T6[173]MU:L2[178]8:[141]2120:R[178]T7[173]MU[170].5:L2[178]8:[141]2160 1850 R[178]T8[173]MU:L2[178]8:[141]2120:R[178]T9[173]MU[170].5:L2[178]7:[141]2160 1860 BL$[178]" $":R[178]TT[173]MU:L2[178]11:[141]2120:[152]1,PT$(.)PT$(1):[158]679 1880 [152]1,PT$(7);PT$(3):[160]1:[137]340 1890 [139]BZ[167]1930 1900 [151]S[170]24,15:[151]S[170]6,240:[151]S[170]4,17 1910 [129]X[178]1[164]5:[129]Y[178]1[164]255[169]45:[151]S[170]1,Y:[130]Y:[130]X:[151]S[170]4,32 1920 [129]X[178]1[164]24:[151]S[170]X,.:[130]:[142] 1930 [129]X[178]1[164]2:HF[178]21:LF[178]31 1940 [151]S[170]1,HF:[151]S,LF:[151]S[170]5,9:[151]S[170]6,9:[151]S[170]24,15:[151]S[170]4,33 1950 [129]Y[178]1[164]40:[130]Y:[151]S[170]4,32:[129]Y[178]1[164]40:[130]Y:[139]HF[178]16[167][130]X:[137]1920 1960 HF[178]16:LF[178]195:[137]1940 1970 [151]53280,BO:[151]53281,BK:[151]646,TX:[142] 1980 [141]3100:[153]" 1990 PRINTTAB(15)M$(MM)DD$","CE+YY"":RETURN 2000 PRINT""TAB(X)"[217]OU DON'T HAVE "W$:BZ=1:GOTO2220 2010 POKE198,.:POKEV,HX:POKEV+1,HY:POKEV+21,1 2020 SYSB,8+CH,10,""CH"[146]" 2030 GETN$:IFN$=""THEN2030 2040 IFN$=CHR$(13)THENRETURN 2050 IFN$="[145]"THENHY=HY-8:CH=CH-1:SYSB,9+CH,10,CH+1:GOTO2090 2060 IFN$=""THENHY=HY+8:CH=CH+1:SYSB,7+CH,10,CH-1:GOTO2100 2070 NN=VAL(N$):IF(NN<1)OR(NN>7)THEN2030 2080 SYSB,8+CH,10,CH:CH=NN:HY=126+(CH-1)*8:GOTO2010 2090 IFCH<1THENCH=7:HY=174:GOTO2010 2100 IFCH>7THENCH=1:HY=126 2110 GOTO2010 2120 R=INT(R*100+.5)/100:P$=STR$(R):IF(R-INT(R))<.009THENP$=P$+".00":GOTO2140 2130 IF(VAL(STR$(R*10))-VAL(STR$(INT(R*10+.))))<.09THENP$=P$+"0" 2140 LL=LEN(P$):IFCH<>5THENRETURN 2150 P$=RIGHT$(BL$+P$,L2):PT$(.)=PT$(.)+P$:RETURN 2160 P$=STR$(INT(R)):GOTO2150 2170 CLOSE15:OPEN15,DZ,15 2180 GOSUB2270:IF(ER=.)OR(ER=73)THENRETURN 2190 PRINT"[147] [197]RROR STATUS: "ER$" !":PRINT" [197]RROR NUMBER:"ER 2200 GOSUB1930:IFER=62ANDCH=1THENX=3:W$="THAT DATA TO FETCH!":GOTO2000 2210 IFER=62ANDCH>5THENX=5:W$="THE PROGRAM DISK[146] IN THE DRIVE!":GOTO2000 2220 POKE646,TX:PRINT,"[157][157][157][200]IT ANY KEY TO CONTINUE ...[145]":POKE198,.:GOSUB1890 2230 IFBZTHENSYS1010:POKE53280,BO:BZ=.:RETURN 2240 GETQ$:IFQ$=""THEN2240 2250 RETURN 2260 CLOSE15:OPEN15,DZ,15 2270 INPUT#15,ER,ER$,E1%,E2%:RETURN 2280 FORJ=1TO78:PRINT#1,"-";:NEXT:PRINT#1,"-":RETURN 2290 PRINT,"1. [213]TILITIES DATA":PRINT,"2. [205]AIN MENU":PRINT,"3. [214]IEW [196]IRECTORY 2300 [153],"4. (null)OGGLE STR$RIVE # "D"CMD WAIT 2310 GOSUB2450:IFN<1ORN>4THENPRINT:PRINT"[145]";:GOTO2310 2320 GOSUB3100:ONNGOTO2380,2370,2330,2350 2330 PRINT"[147]":OPEN8,D,8,"$:*":CLOSE8:GOSUB2180:IFERTHENRETURN 2340 SYS822:PRINT"[145]":GOTO2220 2350 D=D+1:IFD>29THEND=8 2355 OPEN2,D,2:CLOSE2:IFSTTHEN2350 2360 POKE830,D:DZ=D:GOSUB2260:IFERTHEN2350 2370 RETURN 2380 PRINT"[197]NTER THE YEAR: ";:SYSMT+66,TX,TX+1,4,YR$:YU$=W$ 2390 IFVAL(YU$)<1974ORVAL(YU$)>2073THENPRINT"[145][145][145]":GOTO2380 2400 PRINT:PRINT"[201]S DATA DISK IN DRIVE ([217]/[206])?":GOSUB3000 2405 Q$=JJ$:IFJJ$<>"Y"THENN=2:RETURN 2410 YF$=RIGHT$(YU$,2):RETURN 2420 NT=INT(((40-LEN(NN$))/2)+.6):RETURN 2430 NT=INT(((80-2*LEN(NN$))/2)+.6) 2440 PRINT#1,LEFT$(SP$,NT);:RETURN 2450 GOSUB1900:PRINT,"[197]NTER YOUR CHOICE ";:GOSUB3200:N=VAL(N$):RETURN 2460 PRINT"[147]"TAB(16)M$(I)" "YR$:T1=EL(I)+BP(I)+LD(I)+WA(I)+GS(I) 2470 R=EL(I):GOSUB2120:PRINT" [197]LEC COST:"TAB(34-LL)"$"P$ 2480 P$=STR$(INT(KW(I))):PRINT" [203][215]-HOURS USED:"TAB(35-LEN(P$))P$ 2490 R=BP(I):GOSUB2120:PRINT" [204]OCAL PHONE COST:"TAB(34-LL)"$"P$ 2500 R=LD(I):GOSUB2120:PRINT" [204]ONG DIST COST:"TAB(34-LL)"$"P$ 2510 R=WA(I):GOSUB2120:PRINT" [215]ATER COST:"TAB(34-LL)"$"P$ 2520 P$=STR$(INT(GA(I))):PRINT" [215]ATER GALLONS USED:"TAB(35-LEN(P$))P$ 2530 R=GS(I):GOSUB2120:PRINT" [199]AS COST:"TAB(34-LL)"$"P$ 2540 P$=STR$(INT(CF(I))):PRINT" [199]AS CUBIC FT USED:"TAB(35-LEN(P$))P$:RETURN 2550 R=T1:GOSUB2120:PRINTTAB(27)"[183][183][183][183][183][183][183][183] 2560 [153]" (null)OTAL EXPENSE:"[163]34[171]LL)"$"P$"ON":BZ[178].:[141]2220:[142] 2570 [131] "MID$AN","ASCEB","(null)AR","ATNPR","(null)AY","MID$UN" 2580 [131] "MID$UL","ATNUG","(null)EP","(null)CT","(null)OV","STR$EC" 3000 [151]198,0 3010 [161]JJ$:[139]JJ$[179][177]"Y"[175]JJ$[179][177]"N"[175]JJ$[179][177]"(null)"[175]JJ$[179][177]"(null)"[167]3010 3020 JJ$[178][199]([198](JJ$)[175]127):[142] 3100 [158]MT[170]6,0,39,0,24,TX:[158]MT,1,38,1,23,105,95,TX,BO:[158]MT[170]6,3,36,3,21,TX 3110 [158]MT[170]3,4,35,4,20,32,0:[142] 3200 [161]N$:[139]N$[178]""[167]3200 3210 [142] 3300 [141]3100:[151]646,TX:[153]"";:[142] 3310 [153]:[139][194](214)[177]20[167][141]3300 3315 [153]"";:[142] 40000 [129]I[178]0[164]21:[151]828[170]I,8[170]I:[130] 40010 [139]DV[179]8[176]DV[177]29[176]DV[178]8[167]40030 40020 A[178][194](828):B[178][194](828[170]DV[171]8):[151]828,B:[151]828[170]DV[171]8,A 40030 A$[178]"HELLO CONNECT":[129]J[178]8[164]29:I[178][194](828[170]J[171]8):[139]I[178]14[167][130] 40040 [160]2:[159]2,I,2:[160]2:[139]ST[167]40060 40050 [160]15:[159]15,I,15,"R0:"[170]A$[170]"="[170]A$:[132]15,ER:[160]15:[139]ER[178]63[167]40070 40060 [130]:[153]"LOAD":[151]53272,23:[151]186,8:[151]2048,0:[151]44,8:[151]44,1:[128] 40070 Q$[178][199](34):[151]646,[194](53281):[153]"LOAD":[151]53272,23 40080 [153]"LOADP(null)2048,0:P(null)44,8:P(null)43,1:P(null)56,160:P(null)55,0:CLR:L(null)"Q$A$Q$","I 40090 [153]"RUN:":[151]631,13:[151]632,13:[151]198,2:[128]