Home Improvement Program

Developer(s): Ken Frink
Date: 1982
Type: Cassette
Platform(s): TS 1000
Tags: Home

This home improvement calculator helps users estimate materials and costs for carpeting, interior and exterior painting, and wallpapering, while also tracking room dimensions for up to 19 areas. Room data is stored in parallel string and numeric arrays — `D$(19,10)` for names and `D(19,2)` for floor and wall areas — which persist across sessions via a SAVE routine that re-runs the program from line 2 after recording. A freehand floor-plan drawing module at line 2700 uses PLOT/UNPLOT toggling with INKEY$ polling to move a cursor, supporting draw, erase, COPY to printer, and stop modes. Paint quantity calculations use a coverage rate of 350 square feet per gallon (stored as integer hundredths to avoid floating-point display issues), and wallpaper estimation accounts for areas wider than 4 feet to be excluded, with a note about repeating patterns.


Program Analysis

Program Structure

The program is organized as a menu-driven application with a splash screen, instruction page, and eight functional modules. Control flow is handled entirely through IF … THEN GOTO chains from the main menu at lines 150–240. The modules occupy well-separated line-number ranges:

LinesModule
2–9Copyright splash / startup
10–240Main menu
300–450Instructions / first-run welcome
1000–1395Home dimension entry
1395–1995Area/dimension catalogue display
2000–2500Carpeting estimator
2700–2845Floor-plan drawing tool
3000–3695Interior painting estimator
4000–4900Wallpaper estimator
5000–6500Exterior painting estimator
9500–9995Utility subroutines and SAVE routine

Data Storage Strategy

Up to 19 interior rooms are stored in two parallel arrays: D$(19,10) holds 10-character room names and D(19,2) holds floor area (column 1) and wall area (column 2) as integers. A separate “house” record is kept in H$(1,10) and H(1)/H(2) for the exterior. During dimension entry, data is first collected into temporary arrays I$(19,10) and I(19,2), then copied to the persistent arrays via the subroutine at line 9520. This double-buffering allows the user to choose not to update an existing room.

Persistence via SAVE

Menu option 8 (lines 9950–9990) prompts for a filename, executes SAVE P$, then immediately performs GOTO 2. Since line 2 re-prints the copyright screen and the program state (including all dimension arrays) is embedded in the saved file, reloading the tape restores all entered room data automatically. The user is warned never to use RUN or CLEAR, as either would reset variables.

Floor-Plan Drawing Tool (Lines 2700–2845)

The drawing module implements a simple pixel-cursor using PLOT and UNPLOT. The cursor position is tracked in R (horizontal) and T (vertical). The variable P acts as a mode flag: when equal to A (which is 1), PLOT is active; when 0, only the cursor blink (UNPLOT then no re-plot) operates. Keys 5/6/7/8 move the cursor; D sets draw mode; E sets erase mode; C triggers COPY for a printer dump; S exits. Boundary checks at lines 2835–2840 prevent the cursor from leaving the 60×42 pixel area.

The display at line 2710 prints a ruler showing 0–60 in steps of 10, and lines 2720–2740 print vertical scale labels 0–40 at the left edge. The cursor movement loop has no explicit delay, so responsiveness depends on the machine’s natural execution speed.

Estimation Calculations

  • Carpet (line 2300): Floor area (sq ft) divided by 9 gives square yards; fractional yards are always rounded up with +.9 inside INT().
  • Interior wall paint (line 3320): Wall area divided by 3.5 sq ft per can-unit; the result is divided by 100 at line 3330 to yield gallons, implying the raw wall area is stored in units of hundredths of square feet — an artifact of the integer storage scheme.
  • Ceiling paint (line 3510): Floor area divided by 4, then divided by 100, suggesting a coverage of 400 sq ft per gallon (in the same hundredths units).
  • Wallpaper (line 4520): Wall area divided by 30 with a ceiling of +.99, giving number of rolls; areas to exclude must be wider than 4 feet (the 4-foot deduction at line 4170).
  • Exterior paint (lines 5810–5820): Siding area divided by 35, divided by 10 — again using the hundredths convention.

Key BASIC Idioms

  • INKEY$ polling loops (e.g., lines 1018–1022, 1140–1160) replace INPUT for single-keypress menu choices, keeping the display clean.
  • INT(value + .5) is used consistently for rounding to the nearest integer.
  • INT(value + .9) and INT(value + .99) are used for ceiling (always round up) functions in yardage and roll calculations.
  • String slices such as D$(X,1 TO 10) are used throughout for fixed-width room name storage and comparison.

Subroutines

Two GOSUB targets are used. The subroutine at line 9520 copies temporary input arrays into the persistent dimension arrays and returns. The subroutine at line 9560 prints all 19 room names in a 3-column layout for reference when the user cannot recall an exact room name; it is called when a lookup fails in the carpeting, painting, and wallpapering sections.

Bugs and Anomalies

  • Line 4020 references U$(1,1 TO 10) without a preceding DIM U$(1,10) in section 4. Since sections 2 and 3 each DIM U$(1,10) at their start, if the user enters section 4 after section 2 or 3 the array persists; however, entering section 4 directly from the menu after a fresh start would cause a variable-not-found error.
  • The variable named VAL at line 5960 shadows the built-in VAL keyword, which could cause confusion, though on this platform user variable names take precedence in the numeric context used here.
  • Line 1330 is both the target of the “press N, don’t change” branch (line 1020) and contains NEXT X. This means skipping a room still advances the loop counter correctly, but the D$(X,…) arrays are not updated for that room — the intended behavior.
  • Lines 9500 and 9940 are bare STOP statements that appear to be unreachable dead code, likely left from development.
  • The welcome screen at line 300 references variable P$ in the greeting ("***";P$;"***"), but P$ is only assigned a value after the user saves (line 9970). On first run, P$ will be empty, so the stars appear adjacent with nothing between them.

Content

Appears On

Related Products

Related Articles

Related Content

Image Gallery

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