My shorter version Basic to set pallette from .PAL file:
110 BORDER 0:IF PEEK(&BB5B)=0 THEN p=45530 ELSE p=47061 ' this line check version of CPC: 464 or 6128
120 LOAD name$+".pal",&7F00:m=PEEK(&7F00):IF m<3 THEN MODE m:FOR a=0 TO 15:i=PEEK(&7F03+a*12):POKE p+a,i:POKE p+17+a,i:NEXT ' if m is bigger, thats mean this pallette file is with colors for CPC PLUS
So if you want see pictures from PLUS on OLD CPC, this lines below convert palette of 4096 into palette 125 blinking colors, thats close enough to enjoy the picture.

130 MODE 0:SPEED INK 1,1:DEFINT r ' here LOAD name$+".pal",&7F00 if it nessesery

140 FOR i=0 TO 15:i(2)=PEEK(&7F08+i*2):i(3)=i(2)AND 15:i(2)=(i(2)AND 240)/16:i(1)=PEEK(&7F09+i*2):FOR a=1 TO 3:IF i(a)<3 THEN i(a)=0 ELSE IF i(a)<6 THEN i(a)=1 ELSE IF i(a)<10 THEN i(a)=2 ELSE IF i(a)<13 THEN i(a)=3 ELSE i(a)=4
150 NEXT:r2=i(2)\2:g1=i(1)\2:b2=i(3)\2:r=(i(2)+1)\2:g2=(i(1)+1)\2:b=(i(3)+1)\2:IF g1=g2 OR b=b2 THEN r1=r2:r2=r:r=r1
160 INK i,b+r*3+g1*9,b2+r2*3+g2*9:NEXT: ' that is good moment to load screen

If you need binary procedure to show compressed ART STUDIO scr file try my 0.BAS program from post-link below.
There is binary code at &A500, just 114 bytes long. This version program need compressed scr if palette is old (LOAD name$+".scr",&6100:CALL &A500) and not compressed scr if palette is for plus (LOAD name$+".scr",&C000).
Any comments and likes welcome.
http://www.cpcwiki.eu/forum/other-retro/proof-that-the-commodre-64-palette-is-far-superior-to-the-amstrad-cpc/msg119731/#msg119731