--- title: "Home Improvement Planner" id: 51726 type: "computer_media" slug: "home-improvement-planner" url: "http://localhost/computer_media/home-improvement-planner/" markdown_url: "http://localhost/computer_media/home-improvement-planner.md" published_at: "2023-08-13T23:14:29+00:00" modified_at: "2026-04-04T20:18:04+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A multi-module home renovation calculator that estimates carpet yardage, paint gallons, and wallpaper rolls — and even lets you sketch a floor plan — all from a single saved program." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Timex Computer Corporation" slug: "timex-computer-corporation" taxonomy: "post_tag" url: "http://localhost/tag/timex-computer-corporation/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "Ken Frink" slug: "ken-frink" taxonomy: "indiv" url: "http://localhost/indiv/ken-frink/" genre: - name: "Home" slug: "home" taxonomy: "genre" url: "http://localhost/type/home/" media_type: "Cassette" programmers: - name: "Ken Frink" slug: "ken-frink" taxonomy: "indiv" url: "http://localhost/indiv/ken-frink/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Home Improvement Planner (1982)(Timex)(US)(TS1000)(Cassette).zip" mediadate: "1982" producer_company: - id: 11401 title: "Timex Computer Corporation" type: "company" url: "http://localhost/company/timex-computer-corporation/" images: - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260404-eduo.png" - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260404-edsl.png" related_products: - id: 40027 title: "The Home Improvement Planner" type: "product" url: "http://localhost/product/the-home-improvement-planner/" media_type_tags: "Home" --- Home Improvement Planner is a utility program that helps homeowners calculate material quantities and costs for common renovation tasks. It maintains up to 19 named room areas using parallel string and numeric arrays — `D$` for room names and `D` for floor and wall-area figures — which persist across the session and can be saved to cassette. The eight menu options cover room dimensioning, carpet yardage, interior and exterior paint estimation, wallpaper roll calculation, an area catalog display, a pixel-level floor-plan drawing tool using PLOT/UNPLOT, and a cassette SAVE routine that stores the program along with its accumulated dimension data. Paint and wallpaper estimates use fixed coverage constants (3.5 sq ft per unit for interior paint, 35 sq ft per gallon for exterior, 30 sq ft per roll for wallpaper), and carpet yardage is computed by dividing floor area by 9. The floor-plan drawing mode at line 2700 uses keys 5–8 for cursor movement, D/E to toggle draw/erase, C to trigger COPY for a printer dump, and S to exit. *** ## Program Analysis ### Program Structure The program is organized into functional modules reached by a central menu at lines 10–240. After a brief splash screen and instruction display (lines 2–350), control falls through to line 1985 where the user is prompted to press a key before the menu appears. Each menu option branches to a thousand-numbered block: | Option | Entry Point | Function | | --- | --- | --- | | 1 | 1000 | Home dimension input | | 2 | 2000 | Carpet yardage estimation | | 3 | 3000 | Internal painting estimation | | 4 | 4000 | Wallpaper roll estimation | | 5 | 5000 | External painting estimation | | 6 | 1395 | Area and dimension catalog | | 7 | 2700 | Floor plan drawing tool | | 8 | 9950 | Save program and dimensions | Two subroutines are shared across modules: `GOSUB 9520` (lines 9520–9550) copies working arrays `I$` and `I` into the persistent `D$` and `D` arrays; `GOSUB 9560` (lines 9560–9595) prints the full list of stored room names across the screen for reference when a lookup fails. ### Data Storage Strategy Room data is held in two persistent arrays that must be pre-dimensioned before the program first runs, presumably by a LOAD of a previously saved version or by prior initialization. `D$(19,10)` stores room names as 10-character strings; `D(19,2)` stores floor area in column 1 and wall area in column 2 for each of up to 19 rooms. A separate pair `H$(1,10)` / `H(1..2)` holds the house exterior data entered in option 5. During dimension entry (option 1), a temporary `I$(19,10)` and `I(19,2)` are used and only committed via `GOSUB 9520` after each room is confirmed, providing a rudimentary change-guard. Because the program uses `SAVE P$` at line 9980 — which on this platform saves the entire program including its variable space — all entered dimensions are preserved on tape alongside the BASIC code itself. The save routine then jumps back to line 2 to redisplay the copyright screen, effectively restarting cleanly with data intact. ### Dimension Entry Logic (Option 1) The loop at lines 1010–1330 iterates over all 19 room slots. For each slot it checks whether `D$(X,1)` is already filled; if so, it asks whether the user wants to change it, allowing existing entries to be skipped via the N path that jumps directly to `NEXT X` at line 1330. Extra irregular areas can be added iteratively in a sub-loop (lines 1130–1260): each extra rectangle accumulates into the floor total and adds a perimeter contribution scaled by 1.5 to the wall-length estimate. Wall area is computed at line 1310 as `(LENGTH * P * 2) + (EXTRA * P)`, where `LENGTH` is the sum of the main room’s length and width, and `EXTRA` accumulates extra perimeter contributions. ### Estimation Formulas - **Carpet:** Floor area (sq ft) divided by 9 gives square yards; ceiling applied with `+0.9` before `INT` to round up. - **Interior paint (walls):** Wall area divided by 3.5, result divided by 100 to give gallons. This implies the wall area stored in `D(X,2)` is in units of hundredths of square feet, or that the coverage constant implicitly absorbs a scaling factor. The intermediate `CANS` variable name suggests an earlier design using paint cans. - **Interior paint (ceiling):** Floor area divided by 4, again divided by 100. - **Wallpaper:** Wall area minus excluded sections, divided by 30 sq ft per roll, with `+0.99` for ceiling rounding. - **Exterior paint:** Siding area divided by 35, divided by 10 to yield gallons. For paint options, both an exact fractional cost and a rounded-up whole-gallon cost are displayed side by side. ### Floor Plan Drawing Tool (Option 7, Lines 2700–2845) This module implements a real-time cursor-controlled drawing tool using the low-resolution PLOT/UNPLOT graphics system. The cursor position is held in `R` (horizontal, 0–59) and `T` (vertical, 0–41). A draw/erase flag `P` is set to `A` (1) for draw mode and 0 for erase mode; the main loop at line 2785 conditionally PLOTs only when `P=A`. Movement keys are 5 (left), 6 (down), 7 (up), and 8 (right) — the standard cursor key layout. Boundary clamping at lines 2835–2840 prevents the cursor from leaving the 60×42 pixel canvas. Pressing C triggers `COPY` for a printer hard-copy; pressing S exits to the return-to-menu prompt. A subtle issue exists: lines 2790–2815 each call `INKEY$` independently in sequence. Since `INKEY$` is evaluated fresh each time, a key held during one check will not be seen by later checks in the same iteration, meaning only the first matching key in the sequence fires per loop cycle. This effectively prevents simultaneous commands but causes no functional error. ### Notable Idioms and Anomalies - The variable name `VAL` at line 5960 shadows the built-in `VAL` function. This is legal but could cause confusion; it is used only as a numeric variable storing a computed price. - Line 1004 re-dimensions `I$(19,10)` and `I(19,2)` every time option 1 is entered, clearing any previous working data. This is intentional — it resets the scratch arrays before a new editing pass. - The catalog display at line 1395 uses a space-comparison guard (`D$(X,1 TO 5)=" "`) to skip uninitialized entries, while the subroutine at 9560 prints all 19 slots unconditionally, including blank ones. - Line 4020 reuses `U$(1,1 TO 10)` for the wallpaper room lookup without re-dimensioning, relying on the array having been created during a prior session or option 2 visit; if option 4 is reached first in a fresh session without option 2 having been run, a variable-not-found error would occur. - The welcome screen at line 300 references `P$`, which is uninitialized on first run, producing an empty string between the asterisks — a cosmetic quirk on first execution before any SAVE has been performed. ## Source Code ``` 2 PRINT AT 9,8;"COPYRIGHT 1982 BY KEN FRINK" 4 FOR F=1 TO 20 6 NEXT F 8 CLS 9 GOTO 300 10 CLS 11 PRINT AT 6,0;"TS1000 HOME IMPROVEMENT PROGRAM" 20 FOR F=1 TO 90 25 NEXT F 30 PRINT AT 9,1;"CHOOSE AREA OF INTEREST BELOW" 40 PRINT 50 PRINT "1 HOME DIMENSION SPECIFICATIONS" 60 PRINT "2 CARPETING YARDAGE ESTIMATION" 70 PRINT "3 INTERNAL PAINTING ESTIMATION" 80 PRINT "4 WALLPAPER ROLL ESTIMATION" 90 PRINT "5 EXTERNAL PAINTING ESTIMATION" 100 PRINT "6 AREA AND DIMENSION CATALOGUE" 110 PRINT "7 DRAW YOUR OWN FLOOR PLAN" 120 PRINT "8 SAVE PROGRAM AND DIMENSIONS" 150 INPUT L 160 IF L=1 THEN GOTO 1000 170 IF L=2 THEN GOTO 2000 180 IF L=3 THEN GOTO 3000 190 IF L=4 THEN GOTO 4000 200 IF L=5 THEN GOTO 5000 210 IF L=6 THEN GOTO 1395 220 IF L=7 THEN GOTO 2700 230 IF L=8 THEN GOTO 9950 240 GOTO 10 300 PRINT "WELCOME TO YOUR HOME IMPROVEMENTPROGRAM ***";P$;"***" 310 PRINT AT 4,0;"THE FOLLOWING INSTRUCTIONS WILL SIMPLIFY THE USE OF THIS PROGRAM" 320 PRINT AT 7,0;"NEVER USE OR " 330 PRINT AT 9,0;"IF ERROR APPEARS ENTER " 340 PRINT AT 11,0;"IN SECTION 7 BE SURE TO USE 5 6 7 8 TO MOVE CURSOR PRESS TO BEGIN TO ERASE PRESS TO BEGIN TO DRAW PRESS TO COPY ON PRINTER PRESS TO STOP DRAWING" 350 PRINT AT 18,0;"IF ALL ELSE FAILS THEN RELOAD" 450 GOTO 1985 1000 CLS 1004 DIM I$(19,10) 1005 DIM I(19,2) 1010 FOR X=1 TO 19 1012 CLS 1014 IF D$(X,1)=" " THEN GOTO 1025 1016 PRINT AT 6,0;"ARE YOU CHANGING THE ";D$(X,1 TO 10);" PRESS Y FOR YES PRESS N FOR NO" 1018 IF INKEY$="Y" THEN GOTO 1024 1020 IF INKEY$="N" THEN GOTO 1330 1022 GOTO 1018 1024 CLS 1025 PRINT AT 10,4;"INPUT AREA DESIGNATION" 1027 PRINT AT 14,4;"IF NONE PRESS 0" 1030 INPUT I$(X,1 TO 10) 1035 IF I$(X,1)="0" THEN GOTO 1395 1040 PRINT AT 11,0;I$(X,1 TO 10) 1050 GOSUB 9520 1060 PRINT AT 14,0;"INPUT LENGTH OF ";I$(X,1 TO 10) 1070 INPUT L 1080 PRINT AT 14,0;"INPUT WIDTH OF ";I$(X,1 TO 10);" " 1090 INPUT W 1100 LET FLOOR=INT ((L*W)+.5) 1110 LET I(X,1)=FLOOR 1120 LET LENGTH=L+W 1125 LET EXTRA=0 1130 PRINT AT 14,0;"IS ANY EXTRA AREA IN ";I$(X,1 TO 10);" PRESS Y FOR YES PRESS N FOR NO" 1140 IF INKEY$="Y" THEN GOTO 1180 1150 IF INKEY$="N" THEN GOTO 1270 1160 GOTO 1140 1180 CLS 1190 PRINT AT 12,0;"INPUT EXTRA LENGTH IN ";I$(X,1 TO 10) 1200 INPUT Y 1210 PRINT AT 12,0;"INPUT EXTRA WIDTH IN ";I$(X,1 TO 10);" " 1220 INPUT U 1230 LET O=INT ((Y*U)+.5) 1240 LET I(X,1)=I(X,1)+O 1250 LET WALL=INT (LENGTH+Y+U) 1255 LET EXTRA=EXTRA+INT ((1.5*(Y+U))+.5) 1260 GOTO 1130 1270 GOSUB 9520 1280 CLS 1290 PRINT AT 12,0;"INPUT WALL HEIGHT OF ";I$(X,1 TO 10) 1300 INPUT P 1310 LET I(X,2)=INT ((LENGTH*P*2)+(EXTRA*P)+.5) 1320 GOSUB 9520 1330 NEXT X 1395 CLS 1400 PRINT "HOME AREA FLOOR WALL" 1420 FOR X=1 TO 19 1425 IF D$(X,1 TO 5)=" " THEN GOTO 1440 1430 PRINT TAB 0;D$(X,1 TO 10);TAB 14;D(X,1);TAB 23;D(X,2) 1440 NEXT X 1445 IF H(1)=0 AND H(2)=0 THEN GOTO 1985 1450 PRINT TAB 0;H$(1,1 TO 10);TAB 14;H(1);TAB 23;H(2) 1960 PRINT AT 21,0;"PRESS ANY KEY TO RETURN TO MENU " 1970 FOR F=1 TO 50 1980 NEXT F 1985 PRINT AT 21,0;"PRESS ANY KEY TO RETURN TO MENU " 1990 IF INKEY$<>"" THEN GOTO 10 1995 GOTO 1990 2000 CLS 2010 PRINT AT 6,1;"INPUT ROOM TO BE CARPETED" 2015 DIM U$(1,10) 2020 INPUT U$(1,1 TO 10) 2030 FOR X=1 TO 19 2040 IF U$(1,1 TO 10)=D$(X,1 TO 10) THEN GOTO 2080 2050 NEXT X 2060 PRINT AT 3,1;"YOU HAVE NO ROOM LISTED BY THAT NAME. PLEASE INPUT ANOTHER" 2065 PRINT AT 8,1;"CHOOSE FROM LIST OF AREAS BELOW" 2067 GOSUB 9560 2070 GOTO 2010 2080 CLS 2090 PRINT AT 10,1;"DO YOU WISH TO COVER THE ENTIRE FLOOR AREA OF ";D$(X,1 TO 10) 2100 PRINT 2110 PRINT TAB 1;"PRESS Y FOR YES PRESS N FOR NO" 2120 IF INKEY$="Y" THEN GOTO 2300 2130 IF INKEY$="N" THEN GOTO 2150 2140 GOTO 2120 2150 CLS 2160 PRINT AT 10,0;"INPUT LENGTH OF FLOOR NOT TO BE CARPETED IN ";D$(X,1 TO 10) 2165 INPUT CAR 2170 PRINT AT 10,0;"INPUT WIDTH OF FLOOR NOT TO BE CARPETED IN ";D$(X,1 TO 10) 2175 INPUT PET 2180 LET W=D(X,1)-(CAR*PET) 2190 LET R=INT ((W/9)+.9) 2200 GOTO 2310 2300 LET R=INT ((D(X,1)/9)+.9) 2310 CLS 2320 PRINT AT 10,0;"YOU WILL NEED APPROXIMATELY ";R;" SQUARE YARDS TO COVER THE","FLOOR IN THE ";D$(X,1 TO 10) 2370 PRINT AT 15,0;"INPUT THE PRICE PER SQUARE YARD OF YOUR NEW CARPET " 2400 INPUT PRICEC 2410 LET YARD=R*PRICEC 2420 PRINT AT 15,0;"IT WILL COST YOU $";YARD;" TO BUY" 2430 PRINT R;" SQUARE YARDS OF CARPET" 2500 GOTO 1970 2700 CLS 2710 PRINT "0 10 20 30 40 50 60" 2720 FOR E=0 TO 40 STEP 10 2730 PRINT AT (E+1)/2,30;E 2740 NEXT E 2750 LET A=1 2755 LET R=A 2760 LET T=A 2765 LET P=A 2770 PLOT R,T 2780 UNPLOT R,T 2785 IF P=A THEN PLOT R,T 2790 IF INKEY$="5" THEN LET R=ABS (R-A) 2800 IF INKEY$="6" THEN LET T=ABS (T-A) 2810 IF INKEY$="7" THEN LET T=T+A 2815 IF INKEY$="8" THEN LET R=R+A 2820 IF INKEY$="D" THEN LET P=A 2825 IF INKEY$="E" THEN LET P=0 2830 IF INKEY$="S" THEN GOTO 1960 2832 IF INKEY$="C" THEN COPY 2835 IF R>59 THEN LET R=R-A 2840 IF T>41 THEN LET T=T-A 2845 GOTO 2770 3000 CLS 3010 PRINT AT 6,1;"INPUT ROOM TO BE PAINTED" 3015 DIM U$(1,10) 3020 INPUT U$(1,1 TO 10) 3030 FOR X=1 TO 19 3040 IF U$(1,1 TO 10)=D$(X,1 TO 10) THEN GOTO 3110 3050 NEXT X 3060 PRINT AT 3,1;"YOU HAVE NO ROOM LISTED BY THAT NAME. PLEASE INPUT ANOTHER" 3070 PRINT AT 8,1;"CHOOSE FROM LIST OF AREAS BELOW" 3080 GOSUB 9560 3090 GOTO 3010 3110 CLS 3120 PRINT AT 8,0;"DO YOU WISH TO PAINT THE WALLS OR THE CEILING IN THE ";D$(X,1 TO 10);"PRESS W FOR WALLS PRESS C FOR CEILING" 3130 IF INKEY$="W" THEN GOTO 3160 3140 IF INKEY$="C" THEN GOTO 3500 3150 GOTO 3130 3160 CLS 3165 LET NONPA=0 3170 PRINT AT 8,0;"ARE THERE ANY WALL AREAS NOT TO BE PAINTED IN THE ";D$(X,1 TO 10);" PRESS Y FOR YES PRESS N FOR NO" 3180 IF INKEY$="Y" THEN GOTO 3210 3190 IF INKEY$="N" THEN GOTO 3300 3200 GOTO 3180 3210 PRINT AT 15,0;"INPUT LENGTH OF AREA NOT PAINTED" 3220 INPUT P 3230 PRINT AT 15,0;"INPUT HEIGHT OF AREA NOT PAINTED" 3240 INPUT A 3250 LET NONPA=NONPA+(P*A) 3255 CLS 3260 PRINT AT 8,0;"ARE THERE ANY OTHER WALL AREAS NOT TO BE PAINTED IN ";D$(X,1 TO 10);" PRESS Y FOR YES PRESS N FOR NO" 3270 IF INKEY$="Y" THEN GOTO 3210 3280 IF INKEY$="N" THEN GOTO 3300 3290 GOTO 3270 3300 LET PAINT=D(X,2)-INT (NONPA+.5) 3310 CLS 3320 LET CANS=INT ((PAINT/3.5)+.5) 3330 LET GAL=CANS/100 3340 PRINT AT 8,0;"YOU WILL NEED APPROXIMATELY ";GAL;" GALLONS TO PAINT THE","WALLS IN THE ";D$(X,1 TO 10) 3390 PRINT AT 15,0;"INPUT THE PRICE PER GALLON OF THE PAINT YOU WISH TO USE " 3420 INPUT PRICEP 3430 LET PGAL=INT (PRICEP*GAL*100) 3440 LET COGAL=PGAL/100 3442 LET LAL=INT (GAL+1) 3444 LET HAL=LAL*PRICEP 3450 PRINT AT 15,0;"IT WILL COST $";COGAL;" FOR ";GAL,"GALLONS OR $";HAL;" FOR ";LAL;" " 3495 GOTO 1970 3500 CLS 3510 LET UP=INT ((D(X,1)/4)+.5) 3520 LET CEIL=UP/100 3530 PRINT AT 8,0;"YOU WILL NEED APPROXIMATELY ";CEIL;" GALLONS TO PAINT THE","CEILING IN THE ";D$(X,1 TO 10) 3580 PRINT AT 15,0;"INPUT THE PRICE PER GALLON OF THE PAINT YOU WISH TO USE " 3605 INPUT PRICEP 3610 LET SAL=INT (CEIL*PRICEP*100) 3620 LET DAL=SAL/100 3630 LET FAL=INT (CEIL+1) 3640 LET JAL=FAL*PRICEP 3680 PRINT AT 15,0;"IT WILL COST $";DAL;" FOR ";CEIL,"GALLONS OR $";JAL;" FOR ";FAL;" " 3695 GOTO 1970 4000 CLS 4010 PRINT AT 6,0;"INPUT ROOM TO BE WALLPAPERED" 4020 INPUT U$(1,1 TO 10) 4030 FOR X=1 TO 19 4040 IF U$(1,1 TO 10)=D$(X,1 TO 10) THEN GOTO 4080 4050 NEXT X 4060 PRINT AT 3,1;"YOU HAVE NO ROOM LISTED BY THAT NAME. PLEASE INPUT ANOTHER" 4065 PRINT AT 8,1;"CHOOSE FROM LIST OF AREAS BELOW" 4067 GOSUB 9560 4070 GOTO 4010 4080 CLS 4085 LET NP=0 4090 PRINT AT 8,0;"ARE THERE ANY AREAS THAT ARE LONGER THAN 4 FEET THAT WILL NOTBE PAPERED IN THE ";D$(X,1 TO 10);" PRESS Y FOR YES PRESS N FOR NO" 4100 IF INKEY$="Y" THEN GOTO 4130 4110 IF INKEY$="N" THEN GOTO 4500 4120 GOTO 4100 4130 PRINT AT 15,0;"INPUT WIDTH OF AREA NOT TO BE PAPERED" 4140 INPUT J 4150 PRINT AT 15,0;"INPUT HEIGHT OF AREA NOT TO BE PAPERED" 4160 INPUT K 4170 LET NP=NP+((J-4)*K) 4180 CLS 4190 PRINT AT 8,0;"ARE THERE ANY OTHER AREAS THAT ARE LONGER THAN 4 FEET THAT WILLNOT BE PAPERED IN THE ";D$(X,1 TO 10);"PRESS Y FOR YES PRESS N FOR NO" 4200 IF INKEY$="Y" THEN GOTO 4130 4210 IF INKEY$="N" THEN GOTO 4500 4220 GOTO 4200 4500 CLS 4510 LET PAPER=D(X,2)-INT (NP+.5) 4520 LET ROLLS=INT ((PAPER/30)+.99) 4530 PRINT AT 8,0;"YOU WILL NEED APPROXIMATELY ";ROLLS;" ROLLS OF WALLPAPER TO PAPER","THE WALLS OF THE ";D$(X,1 TO 10) 4540 PRINT AT 12,0;"THIS IS ONLY AN ESTIMATE. YOU MAY REQUIRE MORE ROLLS IF THE PAPER HAS A REPEATING PATTERN WITH A LENGTH OF REPEAT OF MORE THAN 12 INCHES" 4550 PRINT AT 18,0;"INPUT THE PRICE PER ROLL YOU WILL PAY FOR WALLPAPER" 4560 INPUT PRICEW 4570 LET BAL=ROLLS*PRICEW 4580 PRINT AT 18,0;"IT WILL COST YOU $";BAL;" FOR ";ROLLS 4590 PRINT "ROLLS OF WALLPAPER " 4900 GOTO 1970 5000 CLS 5010 LET H$(1,1 TO 10)="HOUSE" 5020 PRINT AT 8,0;"DO YOU WISH TO ENTER EXTERNAL DIMENSIONS OF YOUR HOUSE OR DO YOU WISH TO ESTIMATE PAINT USAGEPRESS D FOR DIMENSIONS PRESS P FOR PAINT USAGE" 5030 IF INKEY$="D" THEN GOTO 5060 5040 IF INKEY$="P" THEN GOTO 5500 5050 GOTO 5030 5060 LET SIDING=0 5070 LET GROUND=0 5100 CLS 5110 PRINT AT 8,0;"INPUT THE MAJOR LENGTH OF HOUSE" 5120 INPUT LEN 5130 PRINT AT 8,0;"INPUT THE MAJOR WIDTH OF HOUSE " 5140 INPUT WID 5150 PRINT AT 8,0;"INPUT THE MAJOR FOUNDATION TO ROOF HEIGHT OF HOUSE" 5160 INPUT HEI 5170 LET SIDING=(LEN+WID)*2*HEI 5180 LET GROUND=LEN*WID 5190 CLS 5200 PRINT AT 8,0;"IS THERE ANY MORE SIDE AREA ON YOUR HOUSE PRESS Y FOR YES PRESS N FOR NO" 5210 IF INKEY$="Y" THEN GOTO 5240 5220 IF INKEY$="N" THEN GOTO 5350 5230 GOTO 5210 5240 PRINT AT 15,0;"INPUT THE LENGTH OF SIDE AREA" 5250 INPUT SL 5260 PRINT AT 15,0;"INPUT THE AVERAGE FOUNDATION TO ROOF HEIGHT OF SIDE AREA" 5270 INPUT HS 5280 LET SIDING=SIDING+(SL*HS) 5290 GOTO 5190 5350 CLS 5360 PRINT AT 8,0;"DOES YOUR HOUSE COVER ANY MORE GROUND AREA THAN THE MAJOR DIMENSIONS COVER PRESS Y FOR YES PRESS N FOR NO" 5370 IF INKEY$="Y" THEN GOTO 5400 5380 IF INKEY$="N" THEN GOTO 5460 5390 GOTO 5370 5400 PRINT AT 15,0;"INPUT LENGTH OF EXTRA AREA" 5410 INPUT EXL 5420 PRINT AT 15,0;"INPUT WIDTH OF EXTRA AREA " 5430 INPUT WEX 5440 LET GROUND=GROUND+(EXL*WEX) 5450 GOTO 5350 5460 LET H(2)=INT (SIDING+.5) 5470 LET H(1)=INT (GROUND+.5) 5490 GOTO 1960 5500 CLS 5505 LET BRUSH=0 5510 PRINT AT 8,0;"ARE THERE ANY SIDE AREAS THAT YOU WISH TO EXCLUDE FROM YOUR PAINT USAGE ESTIMATION PRESS Y FOR YES PRESS N FOR NO" 5520 IF INKEY$="Y" THEN GOTO 5550 5530 IF INKEY$="N" THEN GOTO 5800 5540 GOTO 5520 5550 PRINT AT 15,0;"INPUT LENGTH OF AREA NOT PAINTED" 5560 INPUT NPSL 5570 PRINT AT 15,0;"INPUT HEIGHT OF AREA NOT PAINTED" 5580 INPUT HNPA 5590 LET BRUSH=BRUSH+(NPSL*HNPA) 5595 CLS 5600 GOTO 5510 5800 LET FINAL=H(2)-INT (BRUSH+.5) 5810 LET Z=INT ((FINAL/35)+.5) 5820 LET Z=Z/10 5830 CLS 5840 PRINT AT 8,0;"YOU WILL NEED APPROXIMATELY ";Z;" GALLONS TO PAINT YOUR HOUSE" 5850 PRINT AT 11,0;"YOUR USAGE MAY VARY IF YOU USE A SPRAYER TO PAINT YOUR HOUSE" 5900 PRINT AT 15,0;"INPUT THE PRICE PER GALLON OF THE PAINT YOU WISH TO USE " 5925 INPUT PRICEH 5930 LET ZAL=INT (Z*PRICEH*100) 5940 LET XAL=ZAL/100 5950 LET CAL=INT (Z+1) 5960 LET VAL=CAL*PRICEH 5970 PRINT AT 15,0;"IT WILL COST $";XAL;" FOR ";Z,"GALLONS OR $";VAL;" FOR ";CAL;" " 6500 GOTO 1970 9500 STOP 9520 LET D$(X,1 TO 10)=I$(X,1 TO 10) 9525 LET D(X,1)=I(X,1) 9530 LET D(X,2)=I(X,2) 9550 RETURN 9560 PRINT AT 11,0;D$(1,1 TO 10);" ";D$(2,1 TO 10);" ";D$(3,1 TO 10) 9565 PRINT D$(4,1 TO 10);" ";D$(5,1 TO 10);" ";D$(6,1 TO 10) 9570 PRINT D$(7,1 TO 10);" ";D$(8,1 TO 10);" ";D$(9,1 TO 10) 9575 PRINT D$(10,1 TO 10);" ";D$(11,1 TO 10);" ";D$(12,1 TO 10) 9580 PRINT D$(13,1 TO 10);" ";D$(14,1 TO 10);" ";D$(15,1 TO 10) 9585 PRINT D$(16,1 TO 10);" ";D$(17,1 TO 10);" ";D$(18,1 TO 10) 9590 PRINT D$(19,1 TO 10) 9595 RETURN 9940 STOP 9950 CLS 9960 PRINT AT 8,0;"TO SAVE THIS PROGRAM WITH YOUR HOME DIMENSIONS, TYPE IN YOUR PROGRAM NAME, SET YOUR CASSETTE PLAYER TO RECORD AND PRESS ENTER" 9970 INPUT P$ 9980 SAVE P$ 9985 CLS 9990 GOTO 2 9995 STOP ```