1301 HINGEDONE=0:DOINGDOOR=1:DOORNO=DOORNO+1:LOCATE 3,48:PRINT "Point to the point where the";: LOCATE 4,48:PRINT "HINGE should be, then press" ;:LOCATE 5,48:PRINT "ENTER.";
1430 IF XP#=0 THEN LINE(X1+1,Y1)-(X2+1,Y2),0:LINE(X1+2,Y1)-(X2+2,Y2),0
1431 IF YP#=0 THEN LINE(X1,Y1+1)-(X2,Y2+1),0
1432 IF XP#=WDTH#*SCALE# THEN LINE(X1-1,Y1)-(X2-1,Y2),0:LINE(X1-2,Y1)-(X2-2,Y2),0
1433 IF YP#=LENGTH#*SCALE#/2 THEN LINE(X1,Y1-1)-(X2,Y2-1),0
1435 DOINGWIND=0:HINGEDONE=0:DOINGDOOR=0
1440 GOTO 1100
1500 IF PERMFIXNO>11 THEN GOTO 1100
1510 PERMFIXNO=PERMFIXNO+1
1515 '
1520 LOCATE 3,50:PRINT "Is this fixture...";
1522 LOCATE 5,50:PRINT "1. square or rectangular"
1524 LOCATE 6,50:PRINT "2. round"
1525 LOCATE 7,50:PRINT "3. a diagonal wall"
1530 GOSUB 8050
1532 IF VAL(I$)<1 OR VAL(I$)>3 THEN 1525
1534 ON VAL(I$) GOTO 1540,1560,1580
1540 '
1541 PF#(PERMFIXNO,1)=1:GOSUB 7100:LOCATE 3,48:PRINT "move the arrow to the upper";: LOCATE 4,48:PRINT "left corner of the fixture";:LOCATE 5,48:PRINT "then press ENTER.";
1547 DRAW "r4l4d2u2":GOSUB 7100:LOCATE 3,48:PRINT "Now move the arrow to the lower";: LOCATE 4,48:PRINT "right corner of the fixture and";: LOCATE 5,48:PRINT "press ENTER. ";
1561 PF#(PERMFIXNO,1)=2:GOSUB 7100:LOCATE 3,48:PRINT "What is the diameter of the";:LOCATE 4,48:PRINT "fixture in ";:IF METRIC THEN PRINT "meters? ";: ELSE PRINT "feet and inches? ";
1562 LOCATE 5,48:GOSUB 7000
1564 PF#(PERMFIXNO,2)=NUM/2
1566 GOSUB 7100:LOCATE 3,48:PRINT "Move the arrow to the point";:LOCATE 4,48:PRINT "where the CENTER of the";:LOCATE 5,48:PRINT "fixture will be and press ";:LOCATE 6,48:PRINT "ENTER.";
1581 PF#(PERMFIXNO,1)=3:GOSUB 7100:LOCATE 3,48:PRINT "move the arrow to one end";: LOCATE 4,48:PRINT "of the wall and press ";:LOCATE 5,48:PRINT "ENTER.";
2250 LOCATE 10,48:PRINT "What do you want to call this";:LOCATE 11,48:PRINT "piece of furniture?";:LOCATE 13,52:ALLEN%=12:GOSUB 9500:FU$(FURNNO,3)=NTRY$
2260 IF NTRY$="" OR MID$(NTRY$,1,1)=" " THEN 2250 ELSE LOCATE (FLENGTH*50)\8+5,23-LEN(FU$(FURNNO,3))\2:PRINT FU$(FURNNO,3);
2261 LOCATE 16
2262 GOTO 2140
2295 GOSUB 8000
2300 '
2305 FU$(FURNNO,1)="C"
2307 CLS
2310 LOCATE 3,48:PRINT "Enter the DIAMETER of the ";:LOCATE 4,48:PRINT "item in ";:IF METRIC THEN PRINT "meters."; ELSE PRINT "feet and inches.";
2510 LOCATE 17,1:GOSUB 7100:GOSUB 16000:IF FUWORK=0 THEN 2000
2520 CLS
2521 X=VAL(FU$(FUWORK,7)):Y=VAL(FU$(FUWORK,8))
2530 IF FU$(FUWORK,1)="C" THEN CIRCLE(180,VAL(FU$(FUWORK,7))*25),VAL(FU$(FUWORK,7))*50,1,,,0.5 ELSE LINE(180-VAL(FU$(FUWORK,7))*50,0)-(180+VAL(FU$(FUWORK,7))*50,VAL(FU$(FUWORK,8))*50),1,B
2531 IF FU$(FUWORK,1)="C" THEN LOCATE X*50\8+3,20:NUM=X:GOSUB 7075:LOCATE X*50\8+5,23-LEN(FU$(FUWORK,3))\2:PRINT FU$(FUWORK,3); ELSE LOCATE Y*50\8+3,16:PRINT "WIDTH: ";:NUM=X:GOSUB 7075:LOCATE Y*50\8+4,16:PRINT "LENGTH: ";:NUM=Y:GOSUB 7075
2532 IF FU$(FUWORK,1)="R" THEN LOCATE Y*50\8+6,23-LEN(FU$(FUWORK,3))\2:PRINT FU$(FUWORK,3);
3221 IF FU$(FUWORK,1)="R" THEN RADIUS =SQR((FW/2)^2 + (FL/2)^2) ELSE RADIUS=FW/2
3222 A1#=ATN((FL/2)/(FW/2))*RADFAC
3224 A2#=180-A1#
3226 A3#=180+A1#
3228 A4#=360-A1#
3230 LOCATE 1,48:PRINT " MOVING FURNITURE ";
3232 LOCATE 3,48:PRINT "Use arrow keys and SHIFT+arrows"
3234 LOCATE 4,48:PRINT "to move the furniture. "
3236 LOCATE 6,48:PRINT "The + and - keys will rotate "
3238 LOCATE 7,48:PRINT "the item around its center. "
3240 LOCATE 9,48:PRINT "Press ENTER to set item down"
3242 LOCATE 10,48:PRINT "and return to the WORK menu."
3244 LOCATE 12,48:PRINT "Press ESC to return this "
3246 LOCATE 13,48:PRINT "item to the list and return"
3248 LOCATE 14,48:PRINT "to the WORK menu."
3299 GOTO 3500
3300 '
3310 GOSUB 7100:GOSUB 16000
3320 LOCATE 21,1:GOSUB 7100:LOCATE 3,48:PRINT "Are you sure you want to";:LOCATE 4,48:PRINT "delete this furniture? (Y or N)";
3330 DEF SEG=0:POKE &H41A,PEEK(&H41C)
3335 I$=INKEY$:IF I$="" THEN 3335 ELSE IF I$="Y" OR I$="y" THEN 3340 ELSE 3350
3340 LOCATE 6,52:PRINT "DELETING THIS ITEM";
3345 FOR LCV=FUWORK TO FURNNO-1:FOR SUBLOOP = 1 TO 8:FU$(LCV,SUBLOOP)=FU$(LCV+1,SUBLOOP):NEXT SUBLOOP,LCV:FU$(FURNNO,3)=" ":FURNNO=FURNNO-1:GOTO 3360
3350 LOCATE 6,52:PRINT "DELETE ABORTED";
3360 FOR DELAY= 1 TO 1000:NEXT DELAY
3370 LOCATE 17,1:GOSUB 7100:GOTO 2010
3500 '
3501 '========= given a1,a2,a3,a4,radius,angle,fx#,yx# ======
3502 IF METRIC THEN UNIT#=0.01 ELSE UNIT#=0.0254
3503 DEF SEG=0:POKE &H41A,PEEK(&H41C):POKE &H417,(PEEK(&H417) OR &H40)
3504 IF METRIC THEN UNIT2=10 ELSE UNIT2=12
3505 DEF SEG=0:POKE &H417,(PEEK(&H417) AND &HDF)
3506 INC=UNIT#
3507 IF FU$(FUWORK,1)="R" THEN GOSUB 7400 ELSE AC1=(FX#-RADIUS)*SCALE#-1:AC2=(FY#-RADIUS)*SCALE#/2-1:AC3=(FX#+RADIUS)*SCALE#+1:AC4=(FY#+RADIUS)*SCALE#/2+1
3508 IF AC1<0 THEN AC1=0
3509 IF AC2<0 THEN AC2=0
3510 IF AC3>639 THEN AC3=639
3511 IF AC4>199 THEN AC4=199
3514 ON ERROR GOTO 29000
3515 GET(AC1,AC2)-(AC3,AC4),PA
3520 IF FU$(FUWORK,1)="R" THEN GOSUB 7484 ELSE CIRCLE(FX#*SCALE#,FY#*SCALE#/2),SCALE#*RADIUS,1,,,0.5:DRAW "BM"+STR$(INT(FX#*SCALE#)-4)+","+STR$(INT(FY#*SCALE#/2)+4)+N$(FUWORK\10)+N$(FUWORK MOD 10)
3521 ON ERROR GOTO 30000
3522 DEF SEG=0:POKE &H41A,PEEK(&H41C)
3523 I$=INKEY$:IF I$="" THEN 3523
3524 OX=(FX#):OY=(FY#)
3525 IF I$=CHR$(13) THEN 3600
3526 IF I$=CHR$(27) THEN PUT(AC1,AC2),PA,PSET:GOTO 1100
3528 IF I$="+" THEN ANGLE=ANGLE-10/RADFAC:GOTO 3570
3529 IF I$="-" THEN ANGLE=ANGLE+10/RADFAC:GOTO 3570
4110 CLS:LOCATE 12,5:BEEP:PRINT "This will take all furniture from all rooms and return it to the list.";:LOCATE 13,19:PRINT "Are you sure you want to do this? (Y or N)"
4112 DEF SEG=0:POKE &H41A,PEEK(&H41C)
4114 I$=INKEY$:IF I$="" THEN 4114 ELSE IF I$="Y" OR I$="y" THEN LOCATE 14,38:PRINT "YES";:GOTO 4120 ELSE LOCATE 14,33:PRINT "ACTION ABORTED";:GOTO 4125
4120 FOR LCV=1 TO FURNNO:FU$(LCV,2)="":FU$(LCV,6)="":NEXT LCV
4122 LOCATE 15,28:PRINT "Moving furniture back to list.";
4125 FOR DELAY= 1 TO 500:NEXT DELAY
4130 GOTO 500
4200 IF IBMPC THEN DEF SEG:OUT &H3D9,12
4210 GOSUB 7100:LOCATE 5,48:PRINT "This action will remove all";:LOCATE 6,48:PRINT "furniture from this room";:LOCATE 7,48:PRINT "and return it to the list.";:LOCATE 8,48:PRINT "Are you sure you want to";
4212 LOCATE 9,48:PRINT "do this? (Y or N) ";
4215 DEF SEG=0:POKE &H41A,PEEK(&H41C)
4216 I$=INKEY$:IF I$="Y" OR I$="y" THEN LOCATE 11,52:PRINT "FURNITURE REMOVED" ELSE IF I$="N" OR I$="n" THEN 4230 ELSE 4216
4220 FOR LCV=1 TO FURNNO:IF FU$(LCV,2)=RFN$ THEN FU$(LCV,2)="":FU$(LCV,6)=""
4222 NEXT LCV:GOSUB 13500
4224 GOTO 4235
4230 LOCATE 11,52:PRINT "ACTION ABORTED";
4235 FOR DELAY=1 TO 1000:NEXT DELAY:IF IBMPC THEN DEF SEG:OUT &H3D9,2
13930 IF FU$(FUWORK,1)="R" THEN GOSUB 7400:GOSUB 7484 ELSE CIRCLE(FX#*SCALE#,FY#*SCALE#/2),SCALE#*RADIUS,1,,,0.5:DRAW "BM"+STR$(INT(FX#*SCALE#)-4)+","+STR$(INT(FY#*SCALE#/2)+4)+N$(FUWORK\10)+N$(FUWORK MOD 10)
13990 NEXT FUWORK
13999 RETURN
14000 '
14005 SCREEN 0,0,0:WIDTH 80
14010 ON KEY(8) GOSUB 60000
14020 GOSUB 15000
14025 IF FI.CO =1 THEN F$=FI.FI$(1):RETURN
14030 COLOR 7,0:CLS
14040 BASELOC=12-(FI.CO\2)
14070 FOR SELECTION = 1 TO FI.CO:LOCATE BASELOC+SELECTION,33:PRINT LEFT$(FI.FI$(SELECTION),8);:NEXT SELECTION
14080 LOCATE BASELOC+FI.CO+4,25:COLOR 7,0:PRINT "Use ";CHR$(24);" and ";CHR$(25);" to select."
14090 LOCATE ,25:PRINT "Press ";CHR$(17);"SOUND' to continue."
14100 LOCATE ,25:PRINT "F8 will exit this program."
15070 IF SCREEN(FI.RO,FI.NA)<>SCREEN(1,70) THEN FI.CO=FI.CO+1:FI.FI$(FI.CO)="":FOR FI.P=1 TO 12:FI.FI$(FI.CO)=FI.FI$(FI.CO)+CHR$(SCREEN(FI.RO,FI.NA-1+FI.P)):NEXT FI.P: ELSE 15090
15080 NEXT FI.NA,FI.RO
15090 FI.RO$="":FOR FI.CL=2 TO 7:FI.RO$=FI.RO$+CHR$(SCREEN(FI.LA-2,FI.CL)):NEXT FI.CL
15100 COLOR 7,0
15110 RETURN
15200 SCREEN 2:CLS:ON ERROR GOTO 30000:RESUME 500
16000 '
16005 LOCATE 1,48:PRINT " SELECT FURNITURE ";
16006 LOCATE 19,48:PRINT "Use arrow keys to select item.";:LOCATE 20,48:PRINT "Press ENTER to continue.";:LOCATE 21,48:PRINT "ESC will abort.";
16010 PG=0
16100 'LOCATE 17,50:GOSUB 7100
16110 FOR LCV= 1 TO 15:LOCATE 2+LCV,48:PRINT PG*30+LCV;FU$(PG*30+LCV,3);:LOCATE 2+LCV,64:PRINT PG*30+LCV+15;FU$(PG*30+LCV+15,3);:NEXT LCV
16120 POINTER=1
16200 IF POINTER >15 THEN LOCATE 2+POINTER-15,64 ELSE LOCATE 2+POINTER,48
16210 PRINT ">";CHR$(29);
16300 I$=INKEY$:IF I$="" THEN 16300
16310 IF I$=CHR$(13) THEN FUWORK=PG*30+POINTER:GOTO 16900
16312 IF I$=CHR$(27) THEN FUWORK=0:GOTO 16900
16320 IF LEN(I$)<2 THEN 16300
16322 PRINT " ";CHR$(29);
16324 I=ASC(RIGHT$(I$,1))
16330 IF I=72 AND POINTER>1 THEN POINTER=POINTER-1
16332 IF I=80 AND FU$(1+POINTER+30*PG,3)<>"" AND POINTER<30 THEN POINTER=POINTER+1
16334 IF I=77 AND POINTER+15+30*PG<=FURNNO THEN POINTER=POINTER+15
16336 IF I=75 AND POINTER>15 THEN POINTER=POINTER-15
16340 IF I=73 AND PG>0 THEN PG=PG-1:LOCATE 17,1:GOSUB 7100:GOTO 16100
16342 IF I=81 AND PG<FURNNO\30+1 THEN PG=PG+1:LOCATE 17,1:GOSUB 7100:GOTO 16100
16350 GOTO 16200
16900 LOCATE 16,48:RETURN
16999 GOSUB 8000:STOP
19999 RETURN
28000 '
28010 CLS:LOCATE 12,12:PRINT "This program uses the graphics card. If you do not have":LOCATE 13,12:PRINT "graphics capabilities, proceeding past this screen may create":LOCATE 14,12:PRINT "errors. Press F8 to exit or C to continue."
28020 DEF SEG=0:POKE &H41A,PEEK(&H41C)
28030 I$=INKEY$:IF I$<>"C" AND I$<>"c" THEN 28030 ELSE RETURN
29000 '========== graphic function call errors ===========
29010 IF ERR=5 THEN FX#=WDTH#/2:FY#=LENGTH#/2:BEEP:RESUME 3507
50080 IF SM.NC<>SM.OC THEN SM.ST$=SM.ST$+CHR$(255)+CHR$(SM.NC):SM.OC=SM.NC
50090 SM.ST$=SM.ST$+CHR$(SCREEN(12,SM.LCV))
50100 NEXT SM.LCV
50110 LOCATE 12,40:PRINT CHR$(219);
50120 SM.V=SCREEN(12,40,1):SM.RF=(SM.V MOD 16):SM.RB=(((SM.V-SM.RF)/16) MOD 128)
50130 COLOR 15,4
50140 LOCATE 12,SM.SL+1:PRINT " ";MSG$;" "
50150 SM.I$=INKEY$:IF SM.I$="" THEN 50150
50160 SM.SP=1
50170 LOCATE 12,SM.SL
50180 COLOR SM.RF,SM.RB
50190 FOR SM.LCV=1 TO LEN(SM.ST$)
50200 IF MID$(SM.ST$,SM.LCV,1)=CHR$(255) THEN SM.V=ASC(MID$(SM.ST$,SM.LCV+1,1)):SM.F=(SM.V MOD 16):SM.B=(((SM.V-SM.F)/16) MOD 128):COLOR SM.F,SM.B:SM.LCV=SM.LCV+2
50210 PRINT MID$(SM.ST$,SM.LCV,1);
50220 NEXT SM.LCV
50230 LOCATE SM.RW,SM.CL:COLOR SM.RF,SM.RB
50240 RETURN
60000 '======= RESAVE FURNITURE AND CLOSE FILES ==========
60001 BEEP
60005 GOSUB 1650:CLOSE
65010 CLOSE:SCREEN 0: WIDTH 80: COLOR 14,0
65015 ON ERROR GOTO 0
65020 IF ADDR.%<>0 THEN LOCATE 25,1,0: PRINT SPACE$(28)
65030 CLS: LOCATE 12,35: PRINT"Good-bye!": COLOR 3