1000 GOTO 5000 1010 C$=INKEY$: IF C$="" GOTO 1010 1020 IF LEN(C$)=1 THEN C=ASC(C$) ELSE C=ASC(MID$(C$,2)) 1030 RETURN 1040 GET (CX-10,CY-8)-(CX+10,CY+8),UCUR: PUT (CX-10,CY-8),CUR,XOR: RETURN 1050 PUT (CX-10,CY-8),UCUR,PSET: ECOL=POINT(CX,CY): RETURN 1060 GOSUB 1050: T=C-71 1070 CX=CX+RX*DX(T) 1080 IF CX<10 THEN CX=10: BEEP ELSE IF CX>299 THEN CX=299: BEEP 1090 CY=CY+RY*DY(T) 1100 IF CY<8 THEN CY=8: BEEP ELSE IF CY>183 THEN CY=183: BEEP 1110 ON SKETCH GOTO 1345,1390,1355,1365,1415,1375,1040,1040,1480,1040 1120 T=C-48: IF T=0 THEN RX=PIC(0)/2: RY=PIC(1): RETURN 1130 RX=(8*(T)-4)/3: RY=2*(T)-1: RETURN 1140 COLOR BACK: GOSUB 1010: IF C<>32 THEN RETURN 5020 1150 BACK=BACK+1: IF BACK>15 THEN BACK=0 1160 GOTO 1140 1170 GET (124,90)-(195,107),HOLD 1180 COLOR ,PAL 1190 LINE (124,90)-(147,107),1,BF:LINE(148,90)-(171,107),2,BF: LINE (172,90)-(195,107),3,BF 1200 GOSUB 1010: IF C<>32 THEN PUT (124,90),HOLD,PSET: RETURN 5020 1210 PAL=1-PAL: GOTO 1180 1220 GET (124,90)-(195,107),HOLD 1230 LINE (124,90)-(195,107),COL,BF 1240 GOSUB 1010: IF C<>32 THEN PUT (124,90),HOLD,PSET: RETURN 5020 1250 COL=COL+1: IF COL>3 THEN COL=0 1260 GOTO 1230 1270 GET (124,90)-(195,107),PIC 1280 LINE (124,90)-(195,107),BND,BF 1290 GOSUB 1010: IF C<>32 THEN PUT (124,90),PIC,PSET: RETURN 5020 1300 BND=BND+1: IF BND>3 THEN BND=0 1310 GOTO 1280 1320 COL=BND: RETURN 1330 ON C-58 GOTO 1340,1380,1350,1362,1410,1370,1220,1270,1470,1560 1340 GOSUB 1050 1345 LX=CX: LY=CY: PSET (CX,CY),BND: GOSUB 1040: RETURN 1350 GOSUB 1050 1355 LINE (LX,LY)-(CX,CY),BND: GOSUB 1040 1360 OX=LX: OY=LY: LX=CX: LY=CY: RETURN 1362 GOSUB 1050 1365 LINE(LX,LY)-(CX,CY),BND: GOTO 1040 1370 GOSUB 1050 1375 LINE (LX,LY)-(CX,CY),BND,B: GOSUB 1040: RETURN 1380 GOSUB 1050 1390 TX=ABS(CX-LX): TY=6*ABS(CY-LY)/5: CIRCLE (LX,LY),SQR(TX*TX+TY*TY),BND: GOTO 1040 1410 GOSUB 1050 1415 PAINT (CX,CY),COL,BND: GOSUB 1040: RETURN 1430 ON C-103 GOTO 1670,1630,1440,1820,1440,4000,1140,1170,1570,1850 1440 BEEP: RETURN 1470 GOSUB 1050 1480 IF CX+PIC(0)/2>320 THEN BEEP: GOTO 1040 1490 TY=PIC(1): IF CY+PIC(1)>200 THEN PIC(1)=200-CY 1500 ON PMODE GOSUB 1520,1530,1540,1550 1510 PIC(1)=TY: GOTO 1040 1520 PUT (CX,CY),PIC,PSET: RETURN 1530 PUT (CX,CY),PIC,XOR: RETURN 1540 PUT (CX,CY),PIC,OR: RETURN 1550 PUT (CX,CY),PIC,AND: RETURN 1560 GOSUB 1050: GET (LX,LY)-(CX,CY),PIC: GOSUB 1040: RETURN 1570 GET (124,90)-(195,107),HOLD 1580 T$="PSETXOR OR AND " 1590 LOCATE 13,19: PRINT " ";MID$(T$,4*PMODE-3,4);" "; 1600 GOSUB 1010: IF C<>32 THEN PUT (124,90),HOLD,PSET: RETURN 5020 1610 PMODE=PMODE+1: IF PMODE>4 THEN PMODE=1 1620 GOTO 1590 1621 SKETCH=C-83: RETURN 1630 TYPE$="loaded": GOSUB 1710 1640 ON ERROR GOTO 1835 1645 IF NAMEF$="" THEN RETURN 1650 DEF SEG=&HB800 1653 BLOAD DRIVE$+":"+NAMEF$+".pic",0 1660 GOTO 1040 1670 TYPE$="saved": GOSUB 1710 1680 ON ERROR GOTO 1700 1681 IF NAMEF$="" THEN RETURN 1690 GOSUB 1050 1691 GOSUB 1050: DEF SEG=&HB800: BSAVE DRIVE$+":"+NAMEF$+".pic",0,&H4000: GOTO 1040 1694 DEF SEG=&HB800: BSAVE DRIVE$+":"+NAMEF$+".pic",0,&H4000:GOTO 1040 1700 LOCATE 1,1: PRINT "Unable to save picture ";: GOSUB 1010: PUT (0,0),HOLD,PSET: GOSUB 1040: RESUME 5020 1710 GET (0,0)-(319,7),HOLD 1720 LOCATE 1,1: PRINT SPACE$(39);: LOCATE 1,1 1730 PRINT"Name of picture to be ";TYPE$; 1740 LINE INPUT ": ";NAMEF$ 1750 IF NAMEF$="" GOTO 1810 1760 NAMEF$=LEFT$(NAMEF$,8) 1770 LOCATE 1,1: PRINT SPACE$(39);: LOCATE 1,1 1780 LINE INPUT;" Drive picture is on (default=A): ";DRIVE$ 1790 IF DRIVE$="" THEN DRIVE$="A" 1800 IF DRIVE$="a" OR DRIVE$="A" OR DRIVE$="b" OR DRIVE$="B" GOTO 1810 ELSE GOTO 1770 1810 PUT (0,0),HOLD,PSET: RETURN 1820 GET (0,0)-(319,31),HOLD: GOSUB 1770 1825 ON ERROR GOTO 1835 1830 LOCATE 1,1: FILES DRIVE$+":*.PIC": GOTO 1840 1835 LOCATE 1,1: PRINT "Picture not found "; 1840 GOSUB 1010: PUT (0,0),HOLD,PSET: RESUME 5020 1850 GOSUB 1050: LOCATE (CY+4)/8,(CX+4)/8: LINE INPUT "";T$: GOTO 1040 2000 ON C-93 GOTO 2100,2200,2300,2400,3000,2500,1440,2600,1440,2700 2100 T=BND: BND=ECOL: GOSUB 1340: BND=T: RETURN 2200 T=BND: BND=ECOL: GOSUB 1380: BND=T: RETURN 2300 T=BND: BND=ECOL: LX=OX: LY=OY: GOSUB 1362: BND=T: RETURN 2400 T=BND: BND=ECOL: GOSUB 1362: BND=T: RETURN 2500 T=BND: BND=ECOL: GOSUB 1370: BND=T: RETURN 2600 GOSUB 1050: LINE (LX,LY)-(CX,CY),COL,BF: GOSUB 1040: RETURN 2700 CLS: GOSUB 1040: RETURN 3000 DRIVE$="B":NAMEF$="HELP2":GOSUB 1690 3100 NAMEF$="help1":GOSUB 1650:GOSUB 1050:GOSUB 1010 3200 NAMEF$="help2":GOSUB 1650:GOTO 5010 3500 IF TYPE$="loaded" GOTO 1835 3600 GOTO 1700 4000 ON ERROR GOTO 4500 4010 LPRINT CHR$(14) " DRAW PROGRAM FUNCTION KEYS" 4020 LPRINT CHR$(27) "________________________________________________________________________________" 4030 LPRINT " FUNCTION ALONE WITH WITH WITH" 4040 LPRINT " KEY SHIFT CTL ALT" 4050 LPRINT "________________________________________________________________________________" 4060 LPRINT " F1 DRAW SKETCH ERASE SAVE" 4070 LPRINT " POINT POINT POINT PICTURE" 4080 LPRINT "--------------------------------------------------------------------------------" 4090 LPRINT " F2 DRAW SKETCH ERASE LOAD" 4100 LPRINT " CIRCLE CIRCLE CIRCLE PICTURE" 4110 LPRINT "--------------------------------------------------------------------------------" 4120 LPRINT " F3 DRAW CONTIN SKETCH CONT ERASE CONTIN N/A" 4130 LPRINT " LINE LINE LINE" 4140 LPRINT "--------------------------------------------------------------------------------" 4150 LPRINT " F4 DRAW SKETCH ERASE LIST" 4160 LPRINT " LINE LINE LINE PICTURES" 4170 LPRINT "--------------------------------------------------------------------------------" 4180 LPRINT " F5 PAINT SKETCH HELP N/A" 4190 LPRINT " PAINT (SCREEN)" 4200 LPRINT "--------------------------------------------------------------------------------" 4210 LPRINT " F6 DRAW SKETCH ERASE HELP" 4220 LPRINT " BOX BOX BOX (PRINTER)" 4230 LPRINT "--------------------------------------------------------------------------------" 4240 LPRINT " F7 SET COLOR: SKETCH N/A SET COLOR:" 4250 LPRINT " PAINT OFF BACKGROUND" 4260 LPRINT "--------------------------------------------------------------------------------" 4270 LPRINT " F8 SET COLOR: SKETCH CLEAR SET COLOR:" 4280 LPRINT " DRAW OFF BOX PALETTE" 4290 LPRINT "--------------------------------------------------------------------------------" 4300 LPRINT " F9 PUT SKETCH N/A SET MODE:" 4310 LPRINT " OBJECT PUT OBJECT PUT OBJECT" 4320 LPRINT "--------------------------------------------------------------------------------" 4330 LPRINT " F10 GET SKETCH CLEAR TYPE" 4340 LPRINT " OBJECT OFF SCREEN TEXT" 4350 LPRINT "--------------------------------------------------------------------------------" 4450 GOSUB 1010 4460 RETURN 5020 4500 GET (0,0)-(319,0),HOLD 4510 LOCATE 1,1 4515 X=ERR:Y=ERL 4520 PRINT "Printer not ready"; 4525 PRINT X "ERROR NO " Y "LINE" 4530 GOSUB 1010 4540 RESUME 5020 5000 GOSUB 5070 5010 ON ERROR GOTO 3500 5015 GOSUB 1010 5020 IF C>=48 AND C<=57 THEN GOSUB 1120 5030 IF C>=59 AND C<=68 THEN GOSUB 1330 5040 IF C>=71 AND C<=81 THEN GOSUB 1060 5045 IF C>=84 AND C<=93 THEN GOSUB 1621 5047 IF C>=94 AND C<=103 THEN GOSUB 2000 5050 IF C>=104 AND C<=113 THEN GOSUB 1430 5060 GOTO 5010 5070 DEFINT A-Z 5080 DIM PIC(8001),CUR(52),UCUR(52),DX(10),DY(10),HOLD(1281) 5100 BACK=9: PAL=0: COL=2: BND=1: PMODE=2: SKETCH=10 5110 KEY OFF: SCREEN 1,0: COLOR BACK,PAL 5130 CLS: GET (0,0)-(0,0),PIC 5140 LINE (0,8)-(6,8): LINE (14,8)-(20,8) 5150 LINE (10,0)-(10,4): LINE (10,12)-(10,16) 5160 GET (0,0)-(20,16),CUR 5180 CLS: CX=159: CY=99: GOSUB 1040: GOSUB 1340: C=57: GOSUB 1120 5190 DATA -1,-1,0,-1,1,-1,0,0,-1,0,0,0,1,0,0,0,-1,1,0,1,1,1 5200 FOR I=0 TO 10: READ DX(I),DY(I): NEXT 5210 FOR I=1 TO 10: KEY I,"": NEXT 5220 RETURN