home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Type P to Pause, S to Stop listing
-
- 1 rem Canvas.bas by Charles Adams5 DIM O$(5) : O$(0) = "SKETCH" : O$(1) = "LINES" : O$(2) = "LINES..." : O$(3) = "BOXES" : O$(4) = "CIRCLES" : O$ (5) = "ERASE"10 DIM C$(2),C%(2) : C$(0) = "RED" : C$(1) = "GREEN" : C$(2) = "BLUE"11 CL = 1 : BR = 015 SCREEN 0,5,0 : PENO 1 : OUTLINE 120 PENO 1 : FOR A = 0 TO 31 : PENA A30 BOX (9 * A,0;8 + 9 * A,19),140 NEXT A : BOX (287,0;302,19) : PENO 2 : BOX (9*CL,0;8+9*CL,19)45 FOR A = 1 TO 18 : PENA A : DRAW (288,A TO 301,A) : NEXT A47 PENO 1 : PENA 0 : OUTLINE 1 : BOX (296,0;301,8),1: OUTLINE 050 PENO CL : PENA CL100 ASK MOUSE X%,Y%,B% : IF B% = 0 THEN LX = -1 :LB = 0: GOTO 100 ELSE IF LB = 1 THEN 100 ELSE IF Y% < 20 THEN 150110 IF MD > 0 THEN 1000 ELSE IF LX < 0 THEN AREA (X%,Y% TO X%+BR,Y% TO X%+BR,Y%+BR TO X%,Y%+BR) : GOTO 120112 IF LX < X% THEN GOSUB 2000: GOTO 120115 IF LX = X% THEN GOSUB 2100: GOTO 120117 GOSUB 2200120 LX = X% : LY = Y% : GOTO 100150 IF X% > 287 THEN 200 ELSE CH = INT (X%/9) : IF CH > 31 THEN 100160 PENO 1 : BOX (9 * CL,0;8 + 9 * CL,19) : PENO 2 : BOX (9 * CH,0;8 + 9 * CH,19) : CL = CH : PENA CL :PENO CL : GOTO 100200 IF X% > 296 AND Y% < 8 THEN GOTO 500 : PENA CL : GOTO 100 ELSE WINDOW 4,0,0,130,56,"COLOR" : CMD 4 : ASK RGB CL,C%(0),C%(1),C%(2) : C = 0205 LC = 9 : O = 1210 OUTLINE 0 : PRINT "R:" : PRINT "G:" : PRINT "B:" : PRINT "EXIT:" : PENO 1 : BOX (81,24;89,31) : FOR A = 0 TO 2 : C = A : LN = 4 * C%(A) : GOSUB 290 : NEXT A220 ASK MOUSE X%,Y%,B% : IF B% = 0 THEN 220 ELSE IF X% > 81 AND X% < 89 AND Y% > 24 AND Y% < 31 THEN LB = 1 : GOTO 300230 C = INT (Y%/8) : IF C > 2 OR C < 0 THEN 220 ELSE GOSUB 295 : LN = X% - 24 : IF LN < 1 THEN LN = 1 ELSE IF LN > 63 THEN LN = 63235 C%(C) = INT (LN/4) : O = 2 : GOSUB 290240 RGB CL,C%(0),C%(1),C%(2) : GOTO 220290 OUTLINE 1 : PENO O : PENA 1 : BOX (24,8*C;24+LN,7+8*C),1 : PENO 1 : PENA 0 : BOX (25+LN,8*C;89,7+8*C),1 : OUTLINE 0 : RETURN295 IF C = LC THEN RETURN ELSE LC = C : OUTLINE 1 : FOR A = 0 TO 2 : PENO (1 - (A=C)) : BOX (24,8*A;89,7+8*A) : NEXT A : OUTLINE 0 : RETURN300 CLOSE 4 : CMD 0 : GOTO 100500 CLOSE 4 : OX = 0 : OY = 0 : WINDOW 4,0,0,108,124,"OPTIONS" : CMD 4 : PENA 1: PENO 1 : OUTLINE 1510 FOR A = 0 TO 5 : PRINT O$(A) : NEXT A : PRINT : PRINT "FILL?": BOX (73,56;81,64),FL : GOSUB 590515 PRINT "BRUSH:" BR+1 : BOX (73,64;81,72) : PRINT "LOAD." : BOX (73,72;81,80) : PRINT "SAVE." : BOX (73,80;81,88) : PRINT "EXIT." : BOX (73,88;81,96)520 ASK MOUSE X%,Y%,B% : IF B% = 0 THEN LC = 0 : GOTO 520 ELSE IF X% < 74 OR X% > 80 THEN 520530 IF Y% > 56 AND Y% < 64 THEN IF LC = 1 THEN 520 ELSE FL = - (FL = 0) : PENA FL : BOX (73,56;81,64),1 : LC = 1 : GOTO 520540 Z = INT (Y%/8) : IF Z = 11 THEN 595 ELSE IF Z = 8 THEN 550 ELSE IF Z = 9 THEN 3000 ELSE IF Z = 10 THEN 4000 ELSE IF Z > 5 THEN 520 ELSE MD = Z : GOSUB 590 : GOTO 520550 IF LC = 1 THEN 520 ELSE LC = 1 : BR = BR + 1 + 5 * (BR = 4 ) : PRINT AT (7,9);BR+1 : PRINT : PRINT : PRINT : GOTO 520590 FOR A = 0 TO 5 : F = - (MD = A) : PENA F : BOX (73,8*A;81,8*A+8),1 : NEXT A : RETURN595 CLOSE 4 : CMD 0 : OUTLINE 0 : PENA CL : LB = 1 : GOTO 1001000 IF OX = 0 AND OY = 0 THEN OX = X% : OY = Y% : LB = 1 : OC = PIXEL (X%,Y%) : DRAW (X%,Y%) : GOTO 1001005 ON MD GOTO 1050,1010,1020,1030,10401010 LX = OX : LY = OY : OX = X% : OY = Y% : LB = 1 : IF LX < X% THEN GOSUB 2000: GOTO 10151012 IF LX = X% THEN GOSUB 2100 : GOTO 1015 ELSE GOSUB 22001015 GOTO 1201020 PENO CL : FOR A = 0 TO BR : BOX (OX+A,OY;X%+A,Y%),FL : BOX (OX,OY+A;X%,Y%+A)1025 BOX (OX+A,OY+A;X%+A,Y%+A) : NEXT A : OX = 0 : OY = 0 : LB = 1 : GOTO 1001030 R = SQR ((OX - X%)^2 + (OY - Y%)^2) : FOR A = 0 TO BR : CIRCLE (OX,OY),R+A : NEXT A : LB = 11035 PENA OC : DRAW (OX,OY) : PENA CL : PENO CL : IF FL = 1 THEN PAINT (OX,OY),01037 OX = 0 : Z = OY-R-A+1 : OY = 0 : IF Z < 20 THEN 20 ELSE 1001040 PENO 0 : PENA 0 : BOX (OX,OY;X%,Y%),1 : PENA CL : OX = 0 : OY = 0 : LB = 1 : GOTO 1001050 LB = 1 : LX = OX : LY = OY : IF LX < X% THEN GOSUB 2000 : GOTO 10551052 IF LX = X% THEN GOSUB 2100 : GOTO 1055 ELSE GOSUB 22001055 OX = 0 : OY = 0 : GOTO 1202000 IF LY < Y% THEN X1 = LX : X2 = LX : X3 = LX + BR : X4 = X% + BR : X5 = X4 : X6 = X% ELSE X1 = LX + BR : X2 = LX : X3 = LX : X4 = X% : X5 = X% + BR : X6 = X52010 IF LY < Y% THEN Y1 = LY + BR : Y2 = LY : Y3 = LY : Y4 = Y% : Y5 = Y% + BR : Y6 = Y5 ELSE Y1 = LY + BR : Y2 = Y1 : Y3 = LY : Y4 = Y% : Y5 = Y% : Y6 = Y% + BR2020 GOTO 25002100 IF LY < Y% THEN Y1 = LY : Y2 = LY : Y3 = LY + BR : Y4 = Y% : Y5 = Y% + BR : Y6 = Y5 ELSE Y1 = LY + BR : Y2 = Y1 : Y3 = LY : Y4 = Y% + BR : Y5 = Y% : Y6 = Y%2110 X1 = LX + BR : X2 = LX : X3 = LX : X4 = X% : X5 = X% : X6 = X% + BR2120 GOTO 25002200 IF LY < Y% THEN X1 = LX : X2 = LX + BR : X3 = X2 : X4 = X% + BR : X5 = X% : X6 = X% ELSE X1 = LX + BR : X2 = X1 : X3 = LX : X4 = X% : X5 = X% : X6 = X% + BR2210 IF LY < Y% THEN Y1 = LY : Y2 = LY : Y3 = LY + BR : Y4 = Y% + BR : Y5 = Y4 : Y6 = Y% ELSE Y1 = LY : Y2 = LY + BR : Y3 = Y2 : Y4 = Y% + BR : Y5 = Y% : Y6 = Y%2500 AREA (X1,Y1 TO X2,Y2 TO X3,Y3 TO X4,Y4 TO X5,Y5 TO X6,Y6) : RETURN3000 SCNCLR : PRINT "PICTURE TO" : PRINT "LOAD:" : PRINT "<CR> = EXIT" : INPUT N$ : IF N$ = "" THEN 500 ELSE OPEN "I",2,N$3005 PRINT "LOADING..." : CMD 03010 FOR A = 0 TO 31 : INPUT #2,R%,G%,B% : RGB A,R%,G%,B% : NEXT A3020 FOR A = 20 TO 199 : FOR B = 0 TO 319 : INPUT #2,P% : IF P% > -1 THEN DRAW (B,A),P%3030 NEXT B : NEXT A : CLOSE 2 : GOTO 5004000 SCNCLR : PRINT "PICTURE TO" : PRINT "SAVE:" : PRINT "<CR> = EXIT" : INPUT N$ : IF N$ = "" THEN 500 ELSE OPEN "O",2,N$4005 PRINT "SAVING...": CMD 04010 FOR A = 0 TO 31 : ASK RGB A,R%,G%,B% : PRINT #2,R%,G%,B% : NEXT A4020 FOR A = 20 TO 199 : FOR B = 0 TO 319 : P% = PIXEL (B,A) : PRINT #2,P% : NEXT B : NEXT A : CLOSE 2 : GOTO 500
- Type Selection or M for list,
- P to set protocol, <CR> to exit: