DEF FNArraySize& = 3 + INT((BobRight + 16)/16)*(BobBottom+1) * Depth BobRight = 600 : BobBottom = 187 : Depth = 4 Size& = FNArraySize& * 2 IF FRE(0) AND FRE(-1) < Size& THEN PRINT "Not enough memory" : END IF FRE(0) < Size& THEN CLEAR ,Size& + 24000 DEF FNArraySize& = 3 + INT((BobRight + 16)/16)*(BobBottom+1) * Depth END IF DECLARE FUNCTION SetDrMd LIBRARY DECLARE FUNCTION Move LIBRARY DECLARE FUNCTION Flood LIBRARY DEFINT a - z Depth = 0 PRINT "Select the number of BIT planes:"; WHILE Depth < 2 OR Depth > 5 Depth$ = INKEY$ Depth = VAL(Depth$) WEND PRINT Depth Res = 0 IF Depth = 5 THEN Res = 311 ELSE PRINT "Select Resolution, (H)igh or (L)ow"; WHILE Res = 0 Res$ = INKEY$ Res$ = UCASE$(Res$) IF Res$ = "H" THEN Res = 631 IF Res$ = "L" THEN Res = 311 WEND END IF DIM Pat1%(1), Pat2%(1),PCan!(31,3) : DIM BobArray(1) Res2 = Res / 320 IF Res < 400 THEN ScrMode = 1 ELSE ScrMode = 2 SCREEN 1,ScrMode * 320,200,Depth,ScrMode CLS WINDOW 2,"Deluxe Draw V1.2 Wirch/Jones",,0,1 WINDOW OUTPUT 2 TRUE = -1 : FALSE = 0 IF Depth = 5 THEN ColBox = 6 ELSE ColBox = 10 FOR I = 0 TO 15 : PALETTE I,6/15,6/15,6/15 : NEXT I PCan!(0,0) = 6/15 : PCan!(0,1) = 6/15 : PCan!(0,2) = 6/15 ' Dark Grey PCan!(1,0) = 0/15 : PCan!(1,1) = 0/15 : PCan!(1,2) = 0/15 ' Black PCan!(2,0) = 10/15 : PCan!(2,1) = 10/15 : PCan!(2,2) = 10/15 ' Light Grey PCan!(3,0) = 15/15 : PCan!(3,1) = 15/15 : PCan!(3,2) = 15/15 ' White PCan!(4,0) = 15/15 : PCan!(4,1) = 9/15 : PCan!(4,2) = 9/15 ' Pink PCan!(5,0) = 15/15 : PCan!(5,1) = 6/15 : PCan!(5,2) = 6/15 ' Light Red PCan!(6,0) = 15/15 : PCan!(6,1) = 2/15 : PCan!(6,2) = 2/15 ' Red PCan!(7,0) = 12/15 : PCan!(7,1) = 0/15 : PCan!(7,2) = 14/15 ' Purple PCan!(8,0) = 7/15 : PCan!(8,1) = 13/15 : PCan!(8,2) = 15/15 ' Light Blue PCan!(9,0) = 8/15 : PCan!(9,1) = 8/15 : PCan!(9,2) = 15/15 ' Medium Blue PCan!(10,0) = 4/15 : PCan!(10,1) = 4/15 : PCan!(10,2) = 15/15 ' Dark Blue PCan!(11,0) = 0/15 : PCan!(11,1) = 14/15 : PCan!(11,2) = 13/15 ' Aqua PCan!(12,0) = 8/15 : PCan!(12,1) = 12/15 : PCan!(12,2) = 8/15 ' Light Green PCan!(13,0) = 4/15 : PCan!(13,1) = 12/15 : PCan!(13,2) = 4/15 ' Medium Green PCan!(14,0) = 0/15 : PCan!(14,1) = 15/15 : PCan!(14,2) = 0/15 ' Dark Green PCan!(15,0) = 15/15 : PCan!(15,1) = 15/15 : PCan!(15,2) = 2/15 ' Yellow PCan!(16,0) = 0/15 : PCan!(16,1) = 4/15 : PCan!(16,2) = 4/15 PCan!(17,0) = 0/15 : PCan!(17,1) = 6/15 : PCan!(17,2) = 6/15 PCan!(18,0) = 0/15 : PCan!(18,1) = 8/15 : PCan!(18,2) = 8/15 PCan!(19,0) = 0/15 : PCan!(19,1) = 10/15 : PCan!(19,2) = 10/15 PCan!(20,0) = 0/15 : PCan!(20,1) = 12/15 : PCan!(20,2) = 12/15 PCan!(21,0) = 15/15 : PCan!(21,1) = 15/15 : PCan!(21,2) = 2/15 PCan!(22,0) = 15/15 : PCan!(22,1) = 15/15 : PCan!(22,2) = 4/15 PCan!(23,0) = 15/15 : PCan!(23,1) = 15/15 : PCan!(23,2) = 6/15 PCan!(24,0) = 15/15 : PCan!(24,1) = 15/15 : PCan!(24,2) = 8/15 PCan!(25,0) = 15/15 : PCan!(25,1) = 15/15 : PCan!(25,2) = 10/15 PCan!(26,0) = 15/15 : PCan!(26,1) = 15/15 : PCan!(26,2) = 12/15 PCan!(27,0) = 2/15 : PCan!(27,1) = 15/15 : PCan!(27,2) = 2/15 PCan!(28,0) = 4/15 : PCan!(28,1) = 15/15 : PCan!(28,2) = 4/15 PCan!(29,0) = 6/15 : PCan!(29,1) = 15/15 : PCan!(29,2) = 6/15 PCan!(30,0) = 8/15 : PCan!(30,1) = 15/15 : PCan!(30,2) = 8/15 PCan!(31,0) = 10/15 : PCan!(31,1) = 15/15 : PCan!(31,2) = 10/15 FOR I = 1 TO 2^Depth-1 : PALETTE I,PCan!(I,0),PCan!(I,1),PCan!(I,2) : NEXT I LIBRARY "graphics.library" Rp& = WINDOW(8) W = WINDOW(2) : H = WINDOW(3) : WWidth = W : Height = H FOR Y = 0 TO Height STEP ColBox Col = (Y\ColBox) IF Col <= 2^Depth-1 THEN COLOR Col : LINE (0,Y)-(20,Y+ColBox),,bf LINE(0,Y)-(20,Y+ColBox),1,b END IF NEXT COLOR 1 : FOR Y = 0 TO 150 STEP 10 LINE(21,Y)-(45,Y+10),,b : NEXT COLOR 2 LINE(29,1)-(37,9) AREA(26,11) : AREA(32,11) : AREA(40,19) : AREA(34,19) : AREAFILL AREA(24,21) : AREA(34,21) : AREA(42,29) : AREA(32,29) : AREAFILL AREA(22,31) : AREA(36,31) : AREA(44,39) : AREA(30,39) : AREAFILL LINE(25,44)-(32,46),,bf : LINE(32,42)-(35,48),,bf : LINE(35,42)-(40,48),3,bf LINE(26,52)-(41,52) : LINE (26,52)-(39,55) : LINE(26,52)-(36,57) LINE(26,52)-(31,59) : PSET(26,52),3 AREA(31,62) : AREA(38,65) : AREA(31,68) : AREA(24,65) : AREAFILL COLOR 3 : AREA(39,65) : AREA(38,69) : AREA(40,69) : AREAFILL COLOR 2 : CIRCLE(33,75),4 : PSET(33,75),3 LINE(25,82)-(40,88),,b : PSET(25,82),3 : PSET(40,88),3 LINE(26,95)-(39,95) : PSET(25,95),3 : PSET(40,95),3 CALL Move&(Rp&,29,108) : PRINT "T"; LINE(23,112)-(43,114),3,bf : LINE(23,112)-(43,114),1,b LINE(23,114)-(43,116),3,bf : LINE(23,114)-(43,118),1,b LINE(23,116)-(43,118),3,bf : LINE(23,116)-(43,118),1,b Pat1%(0) = &HFFFF : Pat1%(1) = &HFFFF Pat2%(0) = &HAAAA : Pat2%(1) = &H5555 PATTERN ,Pat2% COLOR 1,2 : LINE(22,121)-(44,129),,bf PATTERN ,Pat1% : Dotty = FALSE FOR I = 3 TO 13 : Col=I : IF Col > 2^Depth-1 THEN Col = 0 COLOR Col : LINE(16+2*I,131)-(17+2*I,139) : NEXT COLOR 1 : LINE(44,131)-(44,139) FOR I = 1 TO 4 : Col = I : IF Col > 2^Depth-1 THEN Col = 0 COLOR Col : LINE(19+4*I,143)-(23+4*I,147) : LINE(20+4*I,143)-(24+4*I,147) LINE(21+4*I,143)-(25+4*I,147) : LINE(22+4*I,143)-(26+4*I,147) NEXT I LINE(22,151)-(33,159),Col,bf : LINE(34,151)-(44,159),LastColor,bf MENU 1,0,1,"Project" MENU 1,1,1,"New Painting " MENU 1,2,1,"Load Brush " MENU 1,3,1,"Load Painting" MENU 1,4,1,"Save Brush " MENU 1,5,1,"Save Painting" MENU 1,6,1,"Quit " MENU 2,0,1,"" : MENU 3,0,1,"" : MENU 4,0,1,"" TextX = 47 : TextY = 8 : NoBrush = TRUE : AdjOff = TRUE CycCl = FALSE : CycDr = FALSE : CStop = 2^Depth - 4 Col = 1 : LastColor = 0 : MaxColor = 2^Depth-1 Style = 2 : DY = Style-1 : DX = 2*DY*Res2 GOSUB InitFile : GOSUB ResSel I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) Main: WHILE I <> 0 : I = MOUSE(0) : WEND Main2: I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 IF MENU(0) THEN ON MENU(1) GOSUB NewPic,OpenBrush,OpenFile,WriteBrush,WriteFile,Quit IF CycCl THEN J = J+1 : IF J > ColEnd THEN J = ColStart FOR I = ColStart TO ColEnd PALETTE ((I+J) MOD CSpan)+ColStart,PCan!(I,0),PCan!(I,1),PCan!(I,2) NEXT I END IF IF CycDr THEN J = (J+1) : IF J > ColEnd THEN J = ColStart COLOR J END IF IF X < 0 OR X > WWidth OR Y < 0 OR Y > Height GOTO Main2 IF X > 46 THEN IF Style <= 4 THEN GOSUB NBrush ELSE ON Style - 4 GOSUB Brush,DLines,DFill,DCircle,DBox,DLine,DText,AdjColor END IF GOTO Main2 END IF IF I = 0 OR I = -1 THEN GOTO Main2 IF X < 21 THEN GOSUB SelColor : GOTO Main2 IF Y < 120 THEN GOSUB SetStyle : GOTO Main2 IF Y < 130 THEN GOSUB PatSet : GOTO Main IF Y < 140 THEN GOSUB CycCol : GOTO Main IF Y < 150 THEN GOSUB CycDraw : GOTO Main GOTO Main AdjColor: IF AdjOff THEN BobRight = 223 : BobBottom = 30 Size& = FNArraySize&\2 : DIM SavCol&(Size&) GET(58,50)-(281,80), SavCol& GOSUB ColReq AdjOff = FALSE END IF IF Y>51 AND Y<61 AND I <> 0 THEN Gun = 0 IF Y>61 AND Y<71 AND I <> 0 THEN Gun = 1 IF Y>71 AND Y<81 AND I <> 0 THEN Gun = 2 GOSUB Slider RETURN Slider: TopS = Gun*10+52 : BottomS = Gun*10+58 Slide = PCan!(Col,Gun)*15*14+60 WHILE I <> 0 G1=(Slide-59)\14 IF X>Slide THEN LINE(60,TopS)-(Slide,BottomS),3,bf IF X 269 THEN Slide = 269 PALETTE Col,RED/15,GRN/15,BLU/15 I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) WEND RETURN ColReq: LINE(58,50)-(281,80),2,bf CALL Move&(Rp&,273,58) : PRINT "R" CALL Move&(Rp&,273,68) : PRINT "G" CALL Move&(Rp&,273,78) : PRINT "B" I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) RED = PCan!(Col,0)*15 : GRN = PCan!(Col,1)*15 : BLU = PCan!(Col,2)*15 LINE(58,50)-(271,60),1,b LINE(60,52)-(RED*14+60,58),3,bf : LINE(RED*14+61,52)-(270,58),0,bf LINE(58,60)-(271,70),1,b LINE(60,62)-(GRN*14+60,68),3,bf : LINE(GRN*14+61,62)-(270,68),0,bf LINE(58,70)-(271,80),1,b LINE(60,72)-(BLU*14+60,78),3,bf : LINE(BLU*14+61,72)-(270,78),0,bf RETURN ResSel: LINE(0,ColBox*Col)-(20,ColBox*(Col+1)),3,b IF Col = 3 THEN LINE(1,ColBox*Col+1)-(19,ColBox*(Col+1)-1),1,b IF Style > 0 THEN LINE(21,10*(Style-1))-(45,10*Style),3,b IF Dotty THEN LINE(21,120)-(45,130),3,b IF CycDr THEN LINE(21,140)-(45,150),3,b LINE(22,151)-(33,159),Col,bf : LINE(34,151)-(44,159),LastColor,bf COLOR Col,LastColor RETURN NBrush: IF I = 0 THEN Left = 47 + DX : IF X < Left THEN X = Left Top = 0 + DY : IF Y < Top THEN Y = Top Bottom = Height - DY - 1 : IF Y > Bottom THEN Y = Bottom Right = WWidth-DX-1 : IF X > Right THEN X = Right X1 = X : Y1 = Y ELSE IF X < Left THEN X = Left IF Y < Top THEN Y = Top IF X > Right THEN X = Right IF Y > Bottom THEN Y = Bottom IF X + DX > 46 THEN AREA(X1-DX,Y1+DY) : AREA(X1+DX,Y1-DY) : AREA(X+DX,Y-DY) AREA(X-DX,Y+DY) : AREAFILL END IF X1 = X : Y1 = Y : I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 END IF RETURN DLine: IF I = 0 THEN RETURN X1 = X : Y1 = Y : x2 = X : y2 = Y : CALL SetDrMd&(Rp&,2) WHILE I<>0 LINE(X1,Y1)-(x2,y2) : LINE(X1,Y1)-(x2,y2) x2 = X : y2 = Y I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 : IF X<47 THEN X=47 WEND CALL SetDrMd&(Rp&,1) : LINE(X1,Y1)-(x2,y2) RETURN DText: C$ = INKEY$ : IF I = 0 AND C$ = "" THEN RETURN IF I = 0 THEN PRINT C$; : TextX = TextX+8 IF TextX > WWidth THEN TextX = 47 TextY = TextY + 9 END IF CALL Move&(Rp&, TextX, TextY) ELSE TextX = X : TextY = Y CALL Move&(Rp&, TextX, TextY) END IF RETURN DLines: IF I = 0 THEN X1 = X : Y1 = Y ELSE LINE(X1,Y1)-(X,Y) I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 : IF X<47 THEN X=47 END IF RETURN Brush: IF NoBrush THEN GOSUB NewBrush IF I = 0 THEN PUT(X,Y),BobArray,XOR : PUT(X,Y),BobArray,XOR ELSE PUT(X,Y),BobArray,PSET END IF RETURN NewBrush: IF I = 0 OR X < 47 THEN RETURN X1 = X : Y1 = Y : x2 = X : y2 = Y : CALL SetDrMd&(Rp&,2) WHILE I <> 0 LINE(X1,Y1)-(x2,y2),,b : LINE(X1,Y1)-(x2,y2),,b x2 = X : y2 = Y I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 : IF X<47 THEN X=47 WEND CALL SetDrMd&(Rp&,1) NoBrush = FALSE ERASE BobArray BobRight = x2-X1 : BobBottom = y2-Y1 ArraySize& = FNArraySize& DIM BobArray(ArraySize&) GET(X1,Y1)-(x2,y2),BobArray RETURN DFill: IF I = 0 THEN RETURN WHILE I <> 0 : I = MOUSE(0) : WEND IF Col = 1 OR Col = 3 THEN LINE(46,0)-(46,187),2 CALL Flood&(Rp&,1,X,Y) IF Col = 1 OR Col = 3 THEN LINE(46,0)-(46,187),0 RETURN DCircle: IF I = 0 THEN RETURN X1=X : Y1=Y : x2=X : y2=Y : R2=0 : R=0 : CALL SetDrMd&(Rp&,2) WHILE I <> 0 R = SQR(((X1-X)/Res2)^2+(Y1-Y)^2) IF X1-R*Res2 < 47 THEN R = (X1-47)/Res2 CIRCLE(X1,Y1),R : CIRCLE(X1,Y1),R x2 = X : y2 = Y : R2 = R I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 : IF X<47 THEN X=47 WEND CALL SetDrMd&(Rp&,1) : CIRCLE(X1,Y1),R2 RETURN DBox: IF I = 0 THEN RETURN X1=X : Y1=Y : x2=X : y2=Y : CALL SetDrMd&(Rp&,2) WHILE I <> 0 LINE(X1,Y1)-(x2,y2),,b : LINE(X1,Y1)-(x2,y2),,b x2=X : y2=Y I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : Y = Y-1 : IF X<47 THEN X=47 WEND CALL SetDrMd&(Rp&,1) : LINE(X1,Y1)-(x2,y2),,b RETURN NewPic: Prompt$ = " Press Return to New" Cancel = FALSE : GOSUB GetName IF Cancel THEN RETURN FOR X=0 TO Height\2 LINE(47+X,1+X)-(WWidth-X-1,Height-X),3,b LINE(46+X,X)-(WWidth-X,Height-X),0,b NEXT GOSUB ResSel RETURN GetName: BobRight = 190 : BobBottom = 80 Size& = FNArraySize&\2 DIM SavReq&(Size&) GET(50,16)-(240,96),SavReq& FOR I = 0 TO 40 LINE(90-I,56-I)-(200+I,56+I),2,b NEXT LINE(50,16)-(240,96),3,b COLOR 1,2 : CALL Move&(Rp&,53,35) : PRINT Prompt$ LINE(85,50)-(202,62),3,b Curs = 88 : LINE(Curs,52)-(Curs+7,60),3,bf LINE(166,74)-(219,86),3,b COLOR 3,1 : CALL Move&(Rp&,169,83) : PRINT "CANCEL" C$ = INKEY$ : WHILE C$ <> "" : C$ = INKEY$ : WEND FileName$ = "" Loop: C$ = INKEY$ : I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) IF I <> 0 THEN WHILE I <> 0 : I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : WEND Y=Y-1 IF X > 165 AND X < 220 AND Y > 73 AND Y < 87 THEN Cancel = TRUE : PUT(50,16),SavReq&,PSET : ERASE SavReq& : RETURN END IF END IF IF C$ = "" THEN GOTO Loop LINE(75,69)-(183,91),2,b IF LEN(FileName$) = 0 THEN IF C$ < "A" AND ASC(C$) <> 13 GOTO Loop IF ASC(C$) = 13 THEN PUT(50,16),SavReq&,PSET : ERASE SavReq& RETURN END IF IF ASC(C$) = 8 THEN FileName$ = LEFT$(FileName$,LEN(FileName$)-1) LINE(Curs,52)-(Curs+7,60),2,bf Curs = Curs-8 : LINE(Curs,52)-(Curs+7,60),3,bf GOTO Loop END IF IF LEN(FileName$) = 13 THEN GOTO Loop IF RIGHT$(FileName$,1) = "." OR RIGHT$(FileName$,1) = "-" GOTO Loop IF ASC(C$) = 8 THEN Loop IF C$ < "0" OR (C$ > "9" AND C$ < "A") GOTO Loop IF (C$ > "Z" AND C$ < "a") OR C$ > "z" GOTO Loop FileName$ = FileName$ + C$ LINE(Curs,52)-(Curs+7,60),2,bf COLOR 1,2 : CALL Move&(Rp&,0,59) : PRINT PTAB(Curs);C$; Curs = Curs + 8 : LINE(Curs,52)-(Curs+7,60),3,bf GOTO Loop SelColor: WHILE I <> 0 : I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : WEND IF X > 21 THEN RETURN LINE(0,ColBox*Col)-(20,ColBox*(Col+1)),1,b IF Col = 3 THEN LINE(1,ColBox*Col+1)-(19,ColBox*(Col+1)-1),3,b I = Col : Col = Y\ColBox IF Col > MaxColor THEN Col = 0 IF I <> Col THEN LastColor = I COLOR Col,LastColor LINE(0,ColBox*Col)-(20,ColBox*(Col+1)),3,b IF Col = 3 THEN LINE(1,ColBox*Col+1)-(19,ColBox*(Col+1)-1),1,b LINE(22,151)-(33,159),Col,bf: LINE(34,151)-(44,159),LastColor,bf IF Style = 12 THEN GOSUB ColReq GOSUB SetSpan FOR I = 0 TO MaxColor : PALETTE I,PCan!(I,0),PCan!(I,1),PCan!(I,2) : NEXT COLOR Col,LastColor RETURN SetStyle: WHILE I <> 0 : I = MOUSE(0) : X = MOUSE(1) : Y = MOUSE(2) : WEND IF X < 21 OR X > 45 THEN RETURN IF Style = 5 AND (Y\10+1) = 5 THEN NoBrush = TRUE IF (Y\10+1) = Style THEN RETURN IF Style > 0 THEN LINE(21,10*(Style-1))-(45,10*Style),1,b IF Style = 12 THEN PUT(58,50),SavCol&,PSET ERASE SavCol& IF Col = 0 THEN FOR I = 31 TO 2^Depth STEP -1 PALETTE I,PCan!(0,0),PCan!(0,1),PCan!(0,2) NEXT END IF AdjOff = TRUE END IF Style = Y\10+1 IF Style > 0 THEN LINE(21,10*(Style-1))-(45,10*Style),3,b DY = Style - 1 : DX = 2*DY*Res2 RETURN PatSet: IF Dotty THEN Dotty = FALSE : PATTERN ,Pat1% LINE(21,120)-(45,130),1,b ELSE LINE(21,120)-(45,130),3,b Dotty = TRUE : PATTERN ,Pat2% END IF GOSUB ResSel COLOR Col,LastColor RETURN CycCol: IF CycCl THEN CycCl = FALSE FOR I = 0 TO MaxColor : PALETTE I,PCan!(I,0),PCan!(I,1),PCan!(I,2) : NEXT GOSUB ResSel ELSE CycCl = TRUE GOSUB SetSpan END IF RETURN CycDraw: IF CycDr THEN CycDr = FALSE LINE(21,140)-(45,150),1,b COLOR Col,LastColor ELSE CycDr = TRUE LINE(21,140)-(45,150),3,b GOSUB SetSpan END IF RETURN SetSpan: IF Col > LastColor THEN ColStart = LastColor : ColEnd = Col ELSE ColStart = Col : ColEnd = LastColor END IF CSpan = ColEnd - ColStart + 1 RETURN Quit: Prompt$ = " Press Return to Quit" Cancel = FALSE : GOSUB GetName IF Cancel THEN RETURN LIBRARY CLOSE WINDOW CLOSE 2 : SCREEN CLOSE 1 MENU RESET : WINDOW OUTPUT 1 END InitFile: collisionPlaneIncluded = 2 : imageShadowIncluded = 4 ' neither used! SaveBack = 8 : Overlay = 16 : SaveBob = 32 fVSprite = 0 : FileName$ = "" Flags = SaveBack + Overlay + fVSprite BobRight = WWidth - 1 BobBottom = Height - 1 PlanePick = MaxColor RETURN OpenBrush: NoBrush = FALSE : BrushLoad = TRUE Prompt$ = " Enter Brush Name" OpenFile: IF NOT BrushLoad THEN Prompt$ = "Enter Picture File Name" Pending = 4 : Cancel = FALSE : GOSUB GetName IF FileName$ <> "" AND (NOT Cancel) THEN OPEN FileName$ FOR INPUT AS 1 LEN = 1024 olddepth = Depth ColorSet = CVL(INPUT$(4,1)) DataSet = CVL(INPUT$(4,1)) Depth = CVL(INPUT$(4,1)) BobRight = CVL(INPUT$(4,1)) - 1 BobBottom = CVL(INPUT$(4,1)) - 1 Flags = CVI(INPUT$(2,1)) IF PlanePick < CVI(INPUT$(2,1)) THEN COLOR 3,0 LOCATE 3,8 : PRINT "ERROR: File has more bit planes" LOCATE 4,8 : PRINT " then this screen has." COLOR Col,LastColor ELSE PlaneOnOff = CVI(INPUT$(2,1)) ERASE BobArray ArraySize& = FNArraySize& DIM BobArray(ArraySize&) BobArray(0) = BobRight + 1 BobArray(1) = BobBottom + 1 BobArray(2) = Depth FOR I = 3 TO ArraySize& - 1 : BobArray(I) = CVI(INPUT$(2,1)) : NEXT IF NOT BrushLoad THEN GOSUB RedrawPicture END IF Depth = olddepth CLOSE #1 END IF Pending = 0 BrushLoad = FALSE WriteBrush: IF NoBrush THEN RETURN BrushSave = TRUE Prompt$ = " Enter Brush File Name" WriteFile: IF NOT BrushSave THEN Prompt$ = " Enter Picture Name" Pending = 3 : Cancel = FALSE : GOSUB GetName IF FileName$ <> "" AND (NOT Cancel) THEN IF NOT BrushSave THEN GOSUB GetPicture OPEN FileName$ FOR OUTPUT AS 1 LEN = 1024 PRINT #1,MKL$(0); PRINT #1,MKL$(0); PRINT #1,MKI$(0);MKI$(BobArray(2)); PRINT #1,MKI$(0);MKI$(BobArray(0)); PRINT #1,MKI$(0);MKI$(BobArray(1)); PRINT #1,MKI$(Flags); PRINT #1,MKI$(PlanePick); PRINT #1,MKI$(0); FOR I = 3 TO ArraySize&-1 : PRINT #1,MKI$(BobArray(I)); : NEXT CLOSE #1 END IF Pending = 0 BrushSave = FALSE RETURN GetPicture: BobRight = WWidth - 1 : BobBottom = Height - 1 ArraySize& = FNArraySize& ERASE BobArray DIM BobArray(ArraySize&) GET(47,0)-(BobRight,BobBottom),BobArray RETURN RedrawPicture: PUT(47,0),BobArray,PSET GOSUB ResSel ERASE BobArray DIM BobArray(1) RETURN Driver: FOR X = 1 TO 9 : xx = MOUSE(0) : NEXT X WHILE MOUSE(0) = 0 : WEND MENU RESET WINDOW CLOSE 2 SCREEN CLOSE 1 WINDOW OUTPUT 1 STOP