Home Improvement Planner

Date: 1983
Type: Program
Platform(s): TS 2068
Tags: Home

This program is a home improvement planning tool that helps users estimate materials and costs for interior and exterior renovation tasks. It stores measurements for up to 19 named rooms in two parallel arrays — a string array `D$` for room names and a numeric array `D` for floor area (in square feet) and wall area — then uses those stored values to calculate carpet yardage, interior and exterior paint gallons, and wallpaper rolls needed. A block of machine code is loaded from tape at address 57970 and called repeatedly via `USR 57970`, likely handling custom display routines or UDG character definitions. The program uses detailed PLOT/DRAW sequences and UDG characters to render room-layout diagrams with labeled dimension arrows on screen during data entry.


Program Analysis

Program Structure

The program is organized into a main menu dispatcher and a set of subroutine-like sections branched to by line number. Initialization occurs in the subroutine at lines 7010–7050, called from line 2 before jumping to the menu at line 20. The nine menu options dispatch as follows:

KeyFunctionTarget Line
1Internal dimension entry1000
2External dimension entry5000
3Carpet yardage estimation2000
4Interior paint estimation3000
5Wallpaper roll estimation4000
6External painting estimation5500
7Area and dimension catalogue1395
8Save program and dimensions9950
9Operating instructions300
0Delete all previous specs2 (re-init)

The main polling loop (lines 160–250) reads INKEY$ without a wait, interspersed with PAUSE 10 delays and animated PAPER color flashes at lines 165 and 195 to provide a visual “ticker” effect while awaiting input.

Data Storage

Room data is held in three parallel structures dimensioned at lines 7010–7040:

  • D$(19,10) — names of up to 19 rooms, 10 characters each
  • D(19,2) — column 1 = floor area in square feet; column 2 = wall area in square feet
  • H$(1,10) and H(2) — a single external “HOUSE” entry storing ground area and siding area

During internal dimension entry (lines 1000–1340), data is first collected into temporary arrays I$ and I, then copied into the permanent D$/D arrays via the subroutine at line 9520. This two-stage approach allows the user to skip re-entering unchanged rooms.

Machine Code Usage

Line 10 loads 7,560 bytes of machine code from tape into memory at address 57970. This routine is called frequently throughout the program via LET c1=USR 57970. The result is stored in c1 but never used — the call is made purely for the side effect of executing the machine code routine, most likely to redefine UDG characters or reset display hardware state. The UDG characters \a through \u are used extensively in the diagram-drawing subroutines (lines 6000–6530), confirming that the machine code block sets up custom graphic characters.

Diagram Drawing Subroutines

Three graphical subroutines render annotated dimension diagrams to guide data entry:

  • GO SUB 6000 — draws a floor-plan rectangle with labeled L (length) and W (width) arrows, plus extra-area indicators, using a mix of PLOT/DRAW and UDG characters
  • GO SUB 6200 — draws a wall elevation diagram with H (height) and L labels
  • GO SUB 6300 — draws an exterior house outline with roof, garage, window, and door features using lengthy PLOT/DRAW sequences across lines 6300–6530

Dimension labels flash on-screen (FLASH 1) to indicate which measurement the user should enter next, then are turned off (FLASH 0) before the next label flashes.

Estimation Algorithms

The material estimation formulas are straightforward but include deliberate rounding biases to avoid underestimation:

  • Carpet: INT((W/9)+.9) — divides floor square footage by 9 to get square yards, biased strongly upward
  • Interior wall paint: INT((PAINT/3.5)+.5) — assumes approximately 350 square feet per gallon (stored ×100 for dollar arithmetic)
  • Ceiling paint: INT((D(X,1)/4)+.5) — approximately 400 sq ft per gallon
  • Wallpaper: INT((PAPER/30)+.99) — 30 square feet per roll, strongly rounded up
  • Exterior paint: INT((FINAL/35)+.5) — 350 sq ft per gallon, divided by 10 to yield gallons

Wall Area Calculation

Wall area for a room is computed at line 1310 as INT((LENGTH*P*2)+(EXTRA*P)+.5), where LENGTH is the sum of room length and width (so multiplying by 2 gives perimeter), P is ceiling height, and EXTRA accumulates 1.5× the perimeter of any L-shaped extensions added at line 1230. This is an approximation that can overestimate wall area for complex floor plans.

Save and Error Recovery

The save routine (lines 9950–9995) saves both the BASIC program (with SAVE P$ LINE 8, auto-starting at line 8 to reload machine code first) and the machine code block separately as "home"CODE 57970,7560. Lines 9982–9985 implement an error-recovery loop using ON ERR GO TO 9982, ON ERR RESET, and ON ERR CONTINUE to handle tape errors gracefully.

Bugs and Anomalies

  • Lines 1410 and 1420 both open a FOR X=1 TO 19 loop, making line 1410’s loop immediately superseded. The inner loop at line 1420 also duplicates the PRINT and skip logic that appears again at lines 1430–1435, causing each qualifying row to print twice.
  • Line 3210 contains the label for the non-paint area entry, but the branch at line 3180 goes to line 3210 while the branch at line 3270 also goes to 3210 — however, the initial branch target is GO TO 3210 yet line 3215 is the actual first executable line in that block; line 3210 is missing from the listing, meaning control falls through from 3210 to 3215 which is fine, but it is a structural inconsistency.
  • Lines 5350 and 5360 are referenced by GO TO 5350 from line 5440, but line 5350 does not appear in the listing — control would fall into line 5360, which is the intended destination. This is a harmless gap.
  • The variable name VAL at line 5930 shadows the built-in VAL function. While legal in BASIC, this could cause confusion if VAL were subsequently used as a function.
  • Line 4135 is the target of GO TO 4130 (lines 4100 and 4200), but line 4130 does not exist — control passes directly to 4135. This is a benign line-number gap.

Audio Feedback

The subroutine at lines 6600–6610 plays an eight-note BEEP melody as a return-to-menu cue. It is called via GO SUB 6600 from the “press z to return” wait loop at line 1990, providing audio confirmation before the menu redisplay.

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

Source Code

    2 GO SUB 7010
    5 GO TO 20
    8 PRINT INK 2;AT 16,10;"\::"; INK 3;AT 16,11;"\::"; INK 4;AT 16,12;"\::"; INK 5;AT 16,13;"\::"; INK 6;AT 16,14;"\::"; INK 7;AT 16,15;"\::"
   10 LOAD "home"CODE 57970,7560
   11 PRINT INK 0; PAPER 7; BRIGHT 1; FLASH 1;AT 15,8;"TURN  OFF";AT 16,7;"TAPE PLAYER": PAUSE 350
   12 INK 0
   13 ON ERR GO TO 9982
   14 PAPER 7
   20 CLS : BORDER 5
   25 LET c1=USR 57970
   27 PRINT AT 2,11;"MENU"
   30 PRINT AT 11,1;"CHOOSE AREA OF INTEREST BELOW "
   50 PRINT "1  INTERNAL DIMENSION SPECS","2  EXTERNAL DIMENSION SPECS","3  CARPETING YARDAGE ESTIMATION","4  INTERNAL PAINTING ESTIMATION","5  WALLPAPER ROLL ESTIMATION","6  EXTERNAL PAINTING ESTIMATION","7  AREA AND DIMENSION CATALOGUE","8  SAVE PROGRAM AND DIMENSIONS","9  PROGRAM OPERATING INSTRUCTION"
   60 PRINT "0  DELETE ALL PREVIOUS SPECS    "
  160 IF INKEY$="1" THEN GO TO 1000
  162 IF INKEY$="0" THEN GO TO 2
  165 PRINT PAPER 5;AT 1,1;"\s";AT 2,2;"\s";AT 1,29;"\s"
  170 IF INKEY$="2" THEN GO TO 5000
  175 IF INKEY$="3" THEN GO TO 2000
  180 IF INKEY$="4" THEN GO TO 3000
  185 PAUSE 10
  190 IF INKEY$="5" THEN GO TO 4000
  195 PRINT PAPER 5;AT 1,1;"\t";AT 2,2;"\t";AT 1,29;"\t"
  200 IF INKEY$="6" THEN GO TO 5500
  205 PAUSE 10
  210 IF INKEY$="7" THEN GO TO 1395
  230 IF INKEY$="8" THEN GO TO 9950
  240 IF INKEY$="9" THEN GO TO 300
  250 GO TO 160
  300 CLS : PRINT "WELCOME TO YOUR HOME IMPROVEMENTPLANNER  ***";P$;"***": PRINT AT 4,0;"THE FOLLOWING INSTRUCTIONS WILL SIMPLIFY THE USE OF THIS PROGRAM": PRINT AT 7,0;"AREA NAMES TO BE 10 SPACES MAX": PRINT AT 9,0;"IF ERROR APPEARS ENTER <GOTO 20>"
  330 PRINT AT 11,0;"ALL DIMENSIONS TO BE IN FEET";AT 13,0;"FLASHING LETTER INDICATES TYPE  OF DIMENSION TO BE ENTERED";AT 16,0;"ALL AREAS GIVEN ARE SQUARE FEET"
  350 PRINT AT 18,0;"IF ALL ELSE FAILS THEN RELOAD"
  450 GO TO 1985
 1000 CLS : BORDER 1: DIM I$(19,10): DIM I(19,2)
 1010 FOR X=1 TO 19
 1014 IF D$(X,1)=" " THEN GO TO 1025
 1015 LET c1=USR 57970
 1016 PRINT AT 12,0;"ARE YOU CHANGING THE ";D$(X,1 TO 10),"PRESS y FOR YES",,"PRESS n FOR NO"
 1018 IF INKEY$="y" THEN GO TO 1024
 1020 IF INKEY$="n" THEN GO TO 1330
 1022 GO TO 1018
 1024 CLS 
 1025 LET c1=USR 57970
 1030 PRINT AT 12,4;"INPUT AREA DESIGNATION": PRINT AT 14,0;"IF NONE ENTER 0": INPUT I$(X,1 TO 10)
 1035 IF I$(X,1)="0" THEN GO TO 1395
 1040 PRINT AT 11,0;I$(X,1 TO 10): GO SUB 9520
 1050 CLS : GO SUB 6000
 1055 PRINT FLASH 1;AT 0,15;"L"
 1060 PRINT AT 14,0;"INPUT LENGTH OF ";I$(X,1 TO 10): INPUT L
 1070 PRINT FLASH 0;AT 0,15;"L"; FLASH 1;AT 4,7;"W"
 1080 PRINT AT 14,0;"INPUT WIDTH OF ";I$(X,1 TO 10);" ": INPUT W
 1100 LET FLOOR=INT ((L*W)+.5): LET I(X,1)=FLOOR: LET LENGTH=L+W: LET EXTRA=0
 1110 PRINT FLASH 0;AT 4,7;"W"
 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 GO TO 1150
 1145 IF INKEY$="n" THEN GO TO 1270
 1147 GO TO 1140
 1150 PRINT FLASH 1;AT 8,18;"L"
 1180 PRINT AT 14,0;"INPUT EXTRA LENGTH IN ";I$(X,1 TO 10),,,,,: INPUT Y
 1190 PRINT FLASH 0;AT 8,18;"L"; FLASH 1;AT 4,23;"W"
 1210 PRINT AT 14,0;"INPUT EXTRA WIDTH IN ";I$(X,1 TO 10);" ": INPUT U
 1220 PRINT FLASH 0;AT 4,23;"W"
 1230 LET O=INT ((Y*U)+.5): LET I(X,1)=I(X,1)+O: LET WALL=INT (LENGTH+Y+U): LET EXTRA=EXTRA+INT ((1.5*(Y+U))+.5): GO TO 1130
 1270 GO SUB 9520
 1280 CLS : GO SUB 6200
 1290 PRINT FLASH 1;AT 4,7;"H"
 1300 PRINT AT 12,0;"INPUT WALL HEIGHT OF ";I$(X,1 TO 10): INPUT P
 1310 LET I(X,2)=INT ((LENGTH*P*2)+(EXTRA*P)+.5)
 1320 GO SUB 9520
 1330 FOR p=1 TO 75: NEXT p
 1340 NEXT X
 1395 CLS : BORDER 6
 1400 PRINT "HOME AREA    FLOOR     WALL"
 1410 FOR X=1 TO 19
 1420 FOR X=1 TO 19: IF D$(X,1 TO 5)="     " THEN GO TO 1440: PRINT TAB 0;D$(X,1 TO 10);TAB 14;D(X,1);TAB 23;D(X,2)
 1430 IF D$(X,1 TO 5)="     " THEN GO TO 1440
 1435 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 GO TO 1985
 1450 PRINT TAB 0;H$(1,1 TO 10);TAB 14;H(1);TAB 23;H(2)
 1960 PRINT AT 21,0;"PRESS z KEY TO RETURN TO MENU   "
 1970 PAUSE 70
 1985 PRINT AT 21,0;"PRESS z KEY TO RETURN TO MENU   "
 1990 GO SUB 6600
 1995 IF INKEY$="z" THEN GO TO 20
 1997 GO TO 1995
 2000 CLS : BORDER 2
 2005 LET c1=USR 57970
 2007 PRINT PAPER 5;AT 0,0;" "
 2010 PRINT AT 12,0;"INPUT ROOM TO BE CARPETED"
 2020 DIM U$(1,10): INPUT U$(1,1 TO 10)
 2030 FOR X=1 TO 19: IF U$(1,1 TO 10)=D$(X,1 TO 10) THEN GO TO 2080
 2040 NEXT X
 2060 CLS : PRINT AT 3,0;"YOU HAVE NO ROOM LISTED BY THAT NAME. PLEASE INPUT ANOTHER";AT 6,0;"INPUT ROOM TO BE CARPETED";AT 8,0;"CHOOSE FROM LIST OF AREAS BELOW": GO SUB 9560
 2070 GO TO 2020
 2080 CLS : GO SUB 6000
 2085 LET W=D(X,1): PRINT AT 10,0;"DO YOU WISH TO COVER THE ENTIRE FLOOR AREA OF ";D$(X,1 TO 10),"PRESS y FOR YES",,"PRESS n FOR NO"
 2090 IF INKEY$="y" THEN GO TO 2300
 2100 IF INKEY$="n" THEN GO TO 2150
 2110 GO TO 2090
 2150 PRINT FLASH 1;AT 8,18;"L"
 2160 PRINT AT 10,0;"INPUT LENGTH OF FLOOR NOT TO BE CARPETED IN ";D$(X,1 TO 10),,,,,: INPUT CAR
 2165 PRINT FLASH 0;AT 8,18;"L"; FLASH 1;AT 4,23;"W"
 2170 PRINT AT 10,0;"INPUT WIDTH OF FLOOR NOT TO BE  CARPETED IN ";D$(X,1 TO 10): INPUT PET
 2180 LET W=W-(CAR*PET)
 2182 PRINT FLASH 0;AT 4,23;"W"
 2185 PRINT AT 10,0;"IS THERE ANY OTHER AREA NOT TO  BE COVERED IN ";D$(X,1 TO 10),"PRESS y FOR YES",,"PRESS n FOR NO"
 2186 IF INKEY$="y" THEN GO TO 2150
 2187 IF INKEY$="n" THEN GO TO 2190
 2188 GO TO 2186
 2190 LET R=INT ((W/9)+.9): GO TO 2310
 2300 LET R=INT ((D(X,1)/9)+.9)
 2310 PRINT AT 10,0;"YOU WILL NEED APPROXIMATELY     ";R;" SQUARE YARDS TO COVER THE","FLOOR IN THE ";D$(X,1 TO 10),,: PRINT AT 15,0;"INPUT THE PRICE PER SQUARE      YARD OF YOUR NEW CARPET": INPUT PRICEC
 2410 LET YARD=PRICEC*R: PRINT AT 15,0;"IT WILL COST YOU $";YARD;" TO BUY": PRINT R;" SQUARE YARDS OF CARPET": GO TO 1970
 3000 LET c1=USR 57970
 3005 PRINT AT 10,0;"INPUT NAME OF ROOM TO BE PAINTED"
 3010 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 GO TO 3110
 3050 NEXT X
 3060 CLS : PRINT AT 3,0;"YOU HAVE NO ROOM LISTED BY THAT NAME. PLEASE INPUT ANOTHER";AT 6,0;"INPUT NAME OF ROOM TO BE PAINTED";AT 8,0;"CHOOSE FROM LIST OF AREAS BELOW": GO SUB 9560
 3090 GO TO 3010
 3110 PRINT AT 10,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 GO TO 3160
 3140 IF INKEY$="c" THEN GO TO 3500
 3150 GO TO 3130
 3160 CLS : LET NONPA=0
 3165 GO SUB 6200
 3170 PRINT AT 10,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 GO TO 3210
 3190 IF INKEY$="n" THEN GO TO 3300
 3200 GO TO 3180
 3215 PRINT FLASH 1;AT 8,15;"L"
 3220 PRINT AT 10,0;"INPUT LENGTH OF AREA NOT PAINTED",,,,,,: INPUT P
 3230 PRINT FLASH 0;AT 8,15;"L": PRINT FLASH 1;AT 7,23;"H"
 3240 PRINT AT 10,0;"INPUT HEIGHT OF AREA NOT PAINTED": INPUT A
 3250 LET NONPA=NONPA+(P*A): CLS 
 3255 GO SUB 6200
 3260 PRINT AT 10,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 GO TO 3210
 3280 IF INKEY$="n" THEN GO TO 3300
 3290 GO TO 3270
 3300 CLS : LET PAINT=D(X,2)-INT (NONPA+.5): LET CANS=INT ((PAINT/3.5)+.5): 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);AT 15,0;"INPUT THE PRICE PER GALLON      OF THE PAINT YOU WISH TO USE": INPUT PRIC
 3430 LET PGAL=INT (PRIC*GAL*100): LET COGAL=PGAL/100: LET LAL=INT (GAL+1): LET HAL=LAL*PRIC
 3450 PRINT AT 15,0;"IT WILL COST $";COGAL;" FOR ";GAL,"GALLONS OR $";HAL;" FOR ";LAL;"           "
 3495 GO TO 1970
 3500 CLS : LET UP=INT ((D(X,1)/4)+.5): 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);AT 15,0;"INPUT THE PRICE PER GALLON      OF THE PAINT YOU WISH TO USE": INPUT PRIC
 3610 LET SAL=INT (CEIL*PRIC*100): LET DAL=SAL/100: LET FAL=INT (CEIL+1): LET JAL=FAL*PRIC
 3680 PRINT AT 15,0;"IT WILL COST $";DAL;" FOR ";CEIL,"GALLONS OR $";JAL;" FOR ";FAL;"          "
 3695 GO TO 1970
 4000 CLS : BORDER 4
 4005 LET c1=USR 57970
 4010 PRINT AT 12,0;"INPUT ROOM TO BE WALLPAPERED": DIM U$(1,10)
 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 GO TO 4080
 4050 NEXT X
 4060 CLS : PRINT AT 3,0;"YOU HAVE NO ROOM LISTED BY THAT NAME. PLEASE INPUT ANOTHER";AT 6,0;"INPUT ROOM TO BE WALLPAPERED";AT 8,0;"CHOOSE FROM LIST OF AREAS BELOW": GO SUB 9560
 4070 GO TO 4020
 4080 CLS : GO SUB 6200
 4090 LET NP=0: PRINT AT 10,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 GO TO 4130
 4110 IF INKEY$="n" THEN GO TO 4500
 4120 GO TO 4100
 4135 PRINT FLASH 1;AT 8,15;"L"
 4140 PRINT AT 10,0;"INPUT LENGTH OF AREA NOT PAPERED",,,,,,,: INPUT J
 4150 PRINT FLASH 0;AT 8,15;"L": PRINT FLASH 1;AT 7,23;"H"
 4160 PRINT AT 10,0;"INPUT HEIGHT OF AREA NOT PAPERED": INPUT K
 4170 LET NP=NP+((J-4)*K)
 4180 PRINT FLASH 0;AT 7,23;"H"
 4190 PRINT AT 10,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 GO TO 4130
 4210 IF INKEY$="n" THEN GO TO 4500
 4220 GO TO 4200
 4500 CLS : LET PAPER=D(X,2)-INT (NP+.5): LET ROLLS=INT ((PAPER/30)+.99)
 4530 CLS : PRINT AT 7,0;"YOU WILL NEED APPROXIMATELY     ";ROLLS;" ROLLS OF WALLPAPER TO PAPER","THE WALLS OF THE ";D$(X,1 TO 10);AT 11,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 17,0;"INPUT THE PRICE PER ROLL YOU    WILL PAY FOR WALLPAPER": INPUT PRICEW
 4570 LET BAL=ROLLS*PRICEW
 4580 PRINT AT 17,0;"IT WILL COST YOU $";BAL;" FOR ";ROLLS,"ROLLS OF WALLPAPER",: GO TO 1970
 5000 CLS : BORDER 5: LET H$(1,1 TO 10)="HOUSE"
 5060 LET SIDING=0: LET GROUND=0
 5070 CLS : GO SUB 6300
 5080 PRINT FLASH 1;AT 11,13;"L"
 5100 PRINT AT 15,0;"INPUT MAJOR LENGTH OF HOUSE": INPUT LEN
 5110 PRINT FLASH 0;AT 11,13;"L"; FLASH 1;AT 0,22;"W"
 5130 PRINT AT 15,0;"INPUT THE MAJOR WIDTH OF HOUSE ": INPUT WID
 5140 PRINT FLASH 0;AT 0,22;"W"; FLASH 1;AT 7,0;"H"
 5150 PRINT AT 15,0;"INPUT THE MAJOR FOUNDATION TO   ROOF HEIGHT OF HOUSE": INPUT HEI
 5170 LET SIDING=(LEN+WID)*2*HEI: LET GROUND=LEN*WID
 5190 PRINT FLASH 0;AT 7,0;"H"
 5200 PRINT AT 15,0;"IS THERE ANY MORE SIDE AREA ON  YOUR HOUSE",,"PRESS y FOR YES",,"PRESS n FOR NO"
 5210 IF INKEY$="y" THEN GO TO 5240
 5220 IF INKEY$="n" THEN GO TO 5350
 5230 GO TO 5210
 5240 CLS : GO SUB 6300
 5245 PRINT FLASH 1;AT 7,24;"L";AT 7,27;"L"; INVERSE 1;AT 6,26;"L"
 5250 PRINT AT 15,0;"INPUT THE LENGTH OF SIDE AREA": INPUT SL
 5255 PRINT FLASH 0;AT 7,24;"L"; FLASH 0;AT 7,27;"L"; FLASH 0; INVERSE 1;AT 6,26;"L"; FLASH 1;AT 6,31;"H"
 5260 PRINT AT 15,0;"INPUT THE AVERAGE FOUNDATION TO ROOF HEIGHT OF SIDE AREA": INPUT HS
 5270 PRINT FLASH 0;AT 6,31;"H"
 5280 LET SIDING=SIDING+(SL*HS): GO TO 5190
 5360 PRINT AT 15,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 GO TO 5400
 5380 IF INKEY$="n" THEN GO TO 5460
 5390 GO TO 5370
 5400 CLS : GO SUB 6300
 5405 PRINT FLASH 1;AT 10,27;"L"
 5410 PRINT AT 15,0;"INPUT LENGTH OF EXTRA AREA": INPUT EXL
 5420 PRINT FLASH 0;AT 10,27;"L"; FLASH 1;AT 10,24;"W"
 5430 PRINT AT 15,0;"INPUT WIDTH OF EXTRA AREA ": INPUT WEX
 5435 PRINT FLASH 0;AT 10,24;"W"
 5440 LET GROUND=GROUND+(EXL*WEX): GO TO 5350
 5460 LET H(2)=INT (SIDING+.5): LET H(1)=INT (GROUND+.5): GO TO 1395
 5500 CLS : 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 GO TO 5550
 5530 IF INKEY$="n" THEN GO TO 5800
 5540 GO TO 5520
 5550 CLS : GO SUB 6300
 5555 PRINT FLASH 1;AT 10,7;"L"
 5560 PRINT AT 15,0;"INPUT LENGTH OF AREA NOT PAINTED": INPUT NPSL
 5570 PRINT FLASH 0;AT 10,7;"L"; FLASH 1;AT 8,2;"H"
 5580 PRINT AT 15,0;"INPUT HEIGHT OF AREA NOT PAINTED": INPUT HNPA
 5590 LET BRUSH=BRUSH+(NPSL*HNPA): CLS : GO TO 5510
 5800 LET FINAL=H(2)-INT (BRUSH+.5): LET Z=INT ((FINAL/35)+.5): LET Z=Z/10: CLS 
 5840 PRINT AT 8,0;"YOU WILL NEED APPROXIMATELY     ";Z;" GALLONS TO PAINT YOUR HOUSE";AT 11,0;"YOUR USAGE MAY VARY IF YOU USE  A SPRAYER TO PAINT YOUR HOUSE";AT 15,0;"INPUT THE PRICE PER GALLON      OF THE PAINT YOU WISH TO USE": INPUT PRICEH
 5930 LET ZAL=INT (Z*PRICEH*100): LET XAL=ZAL/100: LET CAL=INT (Z+1): LET VAL=CAL*PRICEH
 5970 PRINT AT 15,0;"IT WILL COST $";XAL;" FOR ";Z,"GALLONS OR $";VAL;" FOR ";CAL;"           "
 5980 GO TO 1970
 6000 FOR F=73 TO 121: PLOT INK 4;F,163: DRAW INK 4;0,-40: NEXT F
 6010 FOR F=122 TO 175: PLOT INK 4;F,163: DRAW INK 4;0,-48: NEXT F
 6020 PRINT AT 0,15;"L": PRINT AT 0,9;"<": PRINT AT 0,21;">"
 6030 PLOT 73,168: DRAW 0,6: PLOT 73,171: DRAW 42,0: PLOT 131,171: DRAW 43,0: PLOT 175,168: DRAW 0,6
 6040 PRINT AT 4,7;"W";AT 1,7;"\a";AT 6,7;"\b"
 6050 PLOT 58,123: DRAW 10,0: PLOT 58,163: DRAW 10,0: PLOT 60,123: DRAW 0,11: PLOT 60,146: DRAW 0,17
 6060 PRINT AT 4,23;"W";AT 6,23;"\b";AT 7,23;"\a"
 6070 PLOT 180,115: DRAW 11,0: PLOT 180,123: DRAW 11,0: PLOT 188,105: DRAW 0,9: PLOT 188,123: DRAW 0,9
 6080 PRINT AT 8,18;"L";AT 8,21;">";AT 8,15;"<"
 6090 PLOT 122,104: DRAW 0,7: PLOT 175,104: DRAW 0,7: PLOT 122,107: DRAW 14,0: PLOT 156,107: DRAW 19,0
 6110 PRINT INK 3; PAPER 4;AT 5,19;"\c\::";AT 6,20;"\d"; PAPER 3; INK 4;AT 4,19;"\:.\.."
 6120 PRINT INK 5; PAPER 4;AT 2,12;"\e\g\f"; INK 2;AT 2,11;"\h";AT 2,15;"\i"; INK 5;AT 5,14;"\j"
 6190 RETURN 
 6200 FOR F=73 TO 175: PLOT INK 6;F,168: DRAW INK 6;0,-48: NEXT F
 6240 PRINT AT 4,7;"H";AT 1,7;"\q";AT 6,7;"\r";AT 8,13;"> L <": PLOT 96,107: DRAW 11,0: PLOT 141,107: DRAW 11,0: PLOT 111,103: DRAW 0,11: PLOT 137,103: DRAW 0,11
 6250 PLOT 58,120: DRAW 10,0: PLOT 58,168: DRAW 10,0: PLOT 60,120: DRAW 0,11: PLOT 60,151: DRAW 0,17
 6260 PRINT INK 3;AT 6,15;"\k";AT 3,19;"\o\o";AT 4,19;"\j\j";AT 5,19;"\::\:.";AT 6,19;"\::\::"
 6270 PRINT INK 0;AT 3,11;"\l";AT 4,11;"\m";AT 5,11;"\n";AT 6,11;"\o"; INK 2;AT 3,14;"\p\p\p";AT 4,14;"\p\p\p"; INK 0; PAPER 6;AT 1,15;"\b"
 6280 PRINT AT 7,23;"H";AT 5,23;"\q";AT 2,23;"\r": PLOT 180,136: DRAW 11,0: PLOT 180,151: DRAW 11,0: PLOT 188,124: DRAW 0,11: PLOT 188,152: DRAW 0,11
 6290 RETURN 
 6300 PLOT 36,102: DRAW 0,30: DRAW 124,8: DRAW 0,-40: DRAW -124,2
 6310 PLOT 160,140: DRAW 28,18: DRAW -118,-10: DRAW -38,-16: DRAW 7,0
 6320 PLOT 188,158: DRAW 13,-14
 6330 PLOT 197,143: DRAW -9,11: DRAW 0,4
 6340 PLOT 44,102: DRAW 0,16: DRAW 25,0: DRAW 0,-16
 6350 PRINT AT 6,6;"\p";AT 6,9;"\p"
 6360 PLOT 97,101: DRAW 0,20: DRAW 10,0: DRAW 0,-20
 6370 PLOT 120,130: DRAW 30,2: DRAW 0,-15: DRAW -30,1: DRAW 0,12
 6380 PLOT 180,105: DRAW 0,28: DRAW 24,1: DRAW 0,-29: DRAW -24,0: DRAW -20,-4
 6390 PLOT 180,132: DRAW 18,12: DRAW 24,1: DRAW 7,-9: DRAW 0,-25: DRAW -25,-6
 6400 PLOT 204,133: DRAW 18,11
 6410 PRINT AT 6,24;"\p"
 6420 PLOT 184,106: PLOT 188,107: PLOT 192,108: PLOT 196,109: PLOT 200,110: PLOT 201,111: PLOT 201,115: PLOT 201,119: PLOT 201,123: PLOT 201,127: PLOT 201,131: PLOT 201,135: PLOT 201,139
 6430 PLOT 205,111: PLOT 209,111: PLOT 213,111: PLOT 217,111: PLOT 221,111: PLOT 225,111
 6450 PRINT AT 10,5;"<";AT 10,8;">";AT 11,19;">";AT 11,4;"<";AT 8,0;"\r";AT 9,2;"\q";AT 6,2;"\r";AT 5,0;"\a"
 6460 PRINT AT 10,22;"<";AT 10,25;">";AT 0,24;">";AT 0,20;"<";AT 10,29;"<";AT 4,31;"\a";AT 7,31;"\r"
 6470 PLOT 34,78: DRAW 0,18: PLOT 160,78: DRAW 0,18: PLOT 70,86: DRAW 0,10: PLOT 42,86: DRAW 0,10
 6480 PLOT 0,132: DRAW 25,0: PLOT 0,103: DRAW 29,0: PLOT 14,120: DRAW 15,0
 6490 PLOT 178,86: DRAW 0,14: PLOT 206,86: DRAW 0,14: PLOT 232,87: DRAW 0,20: PLOT 160,175: DRAW 0,-30: PLOT 200,175: DRAW 0,-27
 6500 PLOT 4,103: DRAW 0,28: PLOT 20,91: DRAW 0,10: PLOT 20,122: DRAW 0,7: PLOT 45,91: DRAW 23,0: PLOT 37,83: DRAW 118,0: PLOT 163,171: DRAW 35,0: PLOT 180,91: DRAW 24,0: PLOT 234,91: DRAW 8,0
 6505 PLOT 236,112: DRAW 19,0: PLOT 236,140: DRAW 19,0: PLOT 252,113: DRAW 0,26
 6510 PRINT AT 0,22;"W";AT 10,24;"W";AT 10,27;"L";AT 11,13;"L";AT 10,7;"L";AT 8,2;"H";AT 7,0;"H";AT 6,31;"H"
 6530 RETURN 
 6600 BEEP .07,14: BEEP .12,10: BEEP .07,6: BEEP .07,7: BEEP .1,11: BEEP .1,4: BEEP .22,18: BEEP .01,5
 6610 RETURN 
 6990 STOP 
 7000 STOP 
 7010 DIM D$(19,10)
 7020 DIM D(19,2)
 7030 DIM H$(1,10)
 7040 DIM H(2)
 7045 LET P$="home"
 7050 RETURN 
 9520 LET D$(X,1 TO 10)=I$(X,1 TO 10): LET D(X,1)=I(X,1): LET D(X,2)=I(X,2): RETURN 
 9560 PRINT AT 11,0;D$(1,1 TO 10);" ";D$(2,1 TO 10);" ";D$(3,1 TO 10): PRINT D$(4,1 TO 10);" ";D$(5,1 TO 10);" ";D$(6,1 TO 10): PRINT D$(7,1 TO 10);" ";D$(8,1 TO 10);" ";D$(9,1 TO 10): PRINT D$(10,1 TO 10);" ";D$(11,1 TO 10);" ";D$(12,1 TO 10): PRINT D$(13,1 TO 10);" ";D$(14,1 TO 10);" ";D$(15,1 TO 10): PRINT D$(16,1 TO 10);" ";D$(17,1 TO 10);" ";D$(18,1 TO 10): PRINT D$(19,1 TO 10)
 9570 RETURN 
 9950 CLS : BORDER 7: PRINT AT 8,0;"TO SAVE THIS PROGRAM WITH YOUR  HOME DIMENSIONS, TYPE IN YOUR   PROGRAM NAME AND PRESS ENTER"
 9970 INPUT P$
 9980 CLS 
 9981 GO TO 9990
 9982 ON ERR RESET 
 9983 PAUSE 100
 9984 ON ERR GO TO 9982
 9985 ON ERR CONTINUE 
 9990 SAVE P$ LINE 8
 9991 PRINT AT 10,2;"press a key to complete save"
 9995 SAVE "home"CODE 57970,7560

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top