Home Improvement Planner

Developer(s): Ken Frink
Date: 1982
Type: Cassette
Platform(s): TS 1000
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:

OptionEntry PointFunction
11000Home dimension input
22000Carpet yardage estimation
33000Internal painting estimation
44000Wallpaper roll estimation
55000External painting estimation
61395Area and dimension catalog
72700Floor plan drawing tool
89950Save 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.

Content

Appears On

Related Products

Calculate the materials and cost of various home improvement projects at the touch of a few keys. Separate options let...

Related Articles

Related Content

Image Gallery

Home Improvement Planner

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.

Scroll to Top