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:
| Lines | Module |
|---|---|
| 2–9 | Copyright splash / startup |
| 10–240 | Main menu |
| 300–450 | Instructions / first-run welcome |
| 1000–1395 | Home dimension entry |
| 1395–1995 | Area/dimension catalogue display |
| 2000–2500 | Carpeting estimator |
| 2700–2845 | Floor-plan drawing tool |
| 3000–3695 | Interior painting estimator |
| 4000–4900 | Wallpaper estimator |
| 5000–6500 | Exterior painting estimator |
| 9500–9995 | Utility 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
+.9insideINT(). - 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)andINT(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 precedingDIM U$(1,10)in section 4. Since sections 2 and 3 eachDIM 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
VALat line 5960 shadows the built-inVALkeyword, 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 theD$(X,…)arrays are not updated for that room — the intended behavior. - Lines 9500 and 9940 are bare
STOPstatements that appear to be unreachable dead code, likely left from development. - The welcome screen at line 300 references variable
P$in the greeting ("***";P$;"***"), butP$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
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.