!0.......^.........^.........^.. !B \H11\H07\H10\H00 PiC 'N' MiX! !2.......^.........^.........^.........^.........^.........^.... Pick up a handful of your old screen pics and mix them together to create some stunning new visuals. Chris Somerville sketches out the possibilities. !1.......^.........^.........^.........^........ All the graphics packages on the market have one thing in common; the large amounts of time and effort it takes to create a decent picture. Like me, you'll probably have a fair-sized library of picture SCREEN$, each one representing several hours of careful work. But to save time, there must have been occasions when you wished you could incorporate an existing screen dump into your current masterpiece without starting from scratch. Well, now you can. This program allows you to combine any two pictures that you've previously SAVEd by SCREEN$. The resulting mix can produce some very unexpected and unusual effects. And even if the finished product's not quite the masterful mosaic you'd hoped for but a bit of a mess, you can always feed it into a standard graphics program for re-touching. And how about adding titles to your pictures? Say you've drawn a picture of Castle Rathbone - a flourish of gothic script could make all the difference. So, if you're in the mood to add moustaches to your Mona Lisas, then you'll have some fun with this program. !2.......^.........^.........^.........^.........^.........^.... !B This easy-to-use program is compatible with both the 16K and 48K Speccy. Once you've typed it in you can SAVE it using SAVE "picturemix" LINE 40. !0.......^.........^.........^.. 10 GO TO 40 20 LET aflag=1: PRINT AT 20,0; " CHOOSE PAPER AND INK COLOURS": INPUT "PAPER (0 to 7)?:";p$;"IN K ?:";i$: IF CODE p$<48 OR CODE p$>55 OR CODE i$<48 OR CODE i$>5 5 THEN BEEP .25,45: GO TO 20 30 LET att=VAL p$*8+VAL i$: PA PER VAL p$: INK VAL i$: CLS : RE TURN !2.......^.........^.........^.........^.........^.........^.... Lines 20-30 Set up initial screen colours and attribute variables !0.......^.........^.........^.. 40 DATA 17,87,228,33,0,64,1,0, 27,237,176,201,17,87,228,33,0,64 ,6 50 DATA 24,197,6,0,197,126,245 ,26,71,241,168,119,35,19,193,16, 243,193,16,237,201 !2.......^.........^.........^.........^.........^.........^.... Lines 40-50 Data for machine code subroutine !0.......^.........^.........^.. 60 RESTORE : LET cl=58414: IF PEEK 23733<>255 THEN LET cl=256 46 !2.......^.........^.........^.........^.........^.........^.... Line 60 PEEKs P_RAMT to discover whether you're using a 16K or 48K Speccy. !0.......^.........^.........^.. 70 CLEAR cl: LET cl=(PEEK 2373 0+256*PEEK 23731) !2.......^.........^.........^.........^.........^.........^.... Line 70 This line lowers RAMTOP to allow space for 40 bytes of machine code and room to store the picture. It again PEEKs P_RAMT to re-establish CL since this variable has been lost with the previous CLEAR command. !0.......^.........^.........^.. 80 LET st=cl+1: LET mx=cl+13 !2.......^.........^.........^.........^.........^.........^.... Line 80 Initialises the start of the machine code routines !0.......^.........^.........^.. 90 FOR i=st TO mx+27: READ x: POKE i,x: NEXT i !2.......^.........^.........^.........^.........^.........^.... Line 90 POKEs the machine code into place !0.......^.........^.........^.. 100 RANDOMIZE cl+41 !2.......^.........^.........^.........^.........^.........^.... Line 100 Starts the randomise seed going from a specific point !0.......^.........^.........^.. 110 POKE st+1,PEEK 23670: POKE st+2,PEEK 23671 120 POKE mx+1,PEEK 23670: POKE mx+2,PEEK 23671 !2.......^.........^.........^.........^.........^.........^.... Lines 110-120 This POKEs the two-byte value of SEED into two separate locations !0.......^.........^.........^.. 130 PAPER 6: INK 1: BORDER 5: C LS 140 PRINT ' PAPER 2; INK 7; BRI GHT 1;" PICTURE MIXER " 150 PRINT '" This program will combine any two pictures or graphic lay-outs which hav e previously been SAVEd by SCRE EN$." 160 PRINT '" You will be asked to LOAD each picture in turn. Y ou will LOSE the ATTRIBUTES of the picture you first LOAD in. " 170 PRINT '" You can choose to retain the ATTRIBUTES of the picture next LOADed, or to have your composite picture in INK and PAPER colours of y our choice." !2.......^.........^.........^.........^.........^.........^.... Lines 130-170 This prints up the instructions for the use of the program. If you follow the exact spacing, you'll end up with a well laid-out screen and justified text. !0.......^.........^.........^.. 180 PRINT AT 19,0;" PREPARE YOU R CASSETTE & ENTER THE NAME OF YOUR FIRST SCREEN$" 190 PLOT 1,1: DRAW 0,173: DRAW 253,0: DRAW 0,-173: DRAW -253,0 200 INPUT "Picture name";i$: IF LEN i$>10 THEN GO TO 200 205 CLS : PRINT AT 10,10;"PLAY THE TAPE": LOAD i$SCREEN$ !2.......^.........^.........^.........^.........^.........^.... Lines 180-205 This part of the program loads in your first SCREEN$ file !0.......^.........^.........^.. 210 RANDOMIZE 0*USR st !2.......^.........^.........^.........^.........^.........^.... Line 210 Stores the picture, but retains the RND properties !0.......^.........^.........^.. 220 CLS : PRINT '" Your first picture has been stored. No w prepare to LOAD the second p icture." 230 PRINT '" Do you wis h to RETAIN the AT TRIBUTES of the second picture?" 240 PRINT '" PRESS Y (yes) O R N (no)" 250 IF INKEY$<>"" THEN GO TO 2 50 260 LET i$=INKEY$: IF i$="" THE N GO TO 260 270 LET aflag=0: IF i$<>"y" AND i$<>"Y" THEN GO SUB 20 !2.......^.........^.........^.........^.........^.........^.... Lines 220-270 These lines find out if you want to keep the attributes on the second picture !0.......^.........^.........^.. 280 PRINT AT 21,0;" NOW LOAD TH E SECOND PICTURE.": INPUT "Pictu re name";i$: LET i$=""+(i$ AND L EN i$<=10): CLS : PRINT AT 10,10 ;"PLAY THE TAPE": LOAD i$SCREEN$ : IF aflag=0 THEN GO TO 300 !2.......^.........^.........^.........^.........^.........^.... Line 280 Loads in the second SCREEN$ file !0.......^.........^.........^.. 290 FOR i=22528 TO 23295: POKE i,att: NEXT i !2.......^.........^.........^.........^.........^.........^.... Line 290 Adds attributes as necessary !0.......^.........^.........^.. 300 RANDOMIZE USR mx 310 INPUT "ENTER 1 to SAVE,or 0 ";i$: IF i$="" THEN GO TO 310 320 IF i$="1" THEN INPUT "PICT URE NAME? ";p$: IF LEN p$>10 THE N LET p$=p$( TO 10) 330 IF i$="1" THEN SAVE p$SCRE EN$ 340 STOP !2.......^.........^.........^.........^.........^.........^.... Lines 300-340 Save the new mixed-up screen pic and then stop the program Once you've finished mixing your pics remember to re-establish RAMTOP otherwise you'll receive an OUT OF MEMORY or RAMTOP NO GOOD error. After the program has stopped you can restart by: CLEAR 32599: RUN (for 16K users); CLEAR 65367: RUN (for 48K users). !1.......^.........^.........^.........^........ !B -- from Your Spectrum #15 (Jun.1985) -- !$