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.9beforeINTto 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 intermediateCANSvariable 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.99for 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
VALat line 5960 shadows the built-inVALfunction. 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)andI(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.
Content
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 <RUN> OR <CLEAR>"
330 PRINT AT 9,0;"IF ERROR APPEARS ENTER <GOTO 10>"
340 PRINT AT 11,0;"IN SECTION 7 BE SURE TO USE 5 6 7 8 TO MOVE CURSOR PRESS <E> TO BEGIN TO ERASE PRESS <D> TO BEGIN TO DRAW PRESS <C> TO COPY ON PRINTER PRESS <S> 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
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

