!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)

--

!$

