#
# ZX Spectrum ULAplus SCR importer
# A Multipaint internal script
#
# consider possibility one might import standard scr
#
# length 6912 is speccy
# length 6976 is ulaplus
#

LOAD

# Error checking
# divert between ULAP and standard SCR
#

K = 0

A = LENGTH

IF A<6912
	ALERT 1
	STOP
ENDIF

IF A>6976
	ALERT 1
	STOP
ENDIF

# Original ZX length?

IF A=6912
	K=1
ENDIF

# Display file

# bitmap

FOR Y=0 TO 2
	FOR V=0 TO 7
		FOR E=0 TO 7
			P=1024+V*256+E*2048+Y*16384
			FOR X=0 TO 31
				C=128
				READ L
				L=255-L
				FOR B=0 TO 7
					A=L&C				
					IF A=0
						POKE P,0
					ENDIF
					IF A<>0
						POKE P,1
					ENDIF
					P=P+1
					C=C/2
				NEXT B
			NEXT X
		NEXT E
	NEXT V
NEXT Y

# ulaplus Attributes

IF K=0
	FOR Y=0 TO 23
		FOR X=0 TO 31
			READ A
			F=A&$80
			F=F/$80
			R=A&$40
			R=R/$40
			P=A&$07
			I=A&$38
			I=I/8
			I=I+8
			I=I+R*16
			I=I+F*32
			P=P+R*16
			P=P+F*32
			D=65536+X+Y*256
			J=65536+X+Y*256+6144
			FOR V=0 TO 7
				POKE D,I
				POKE J,P
				LET D=D+32
				LET J=J+32
			NEXT V
		NEXT X
	NEXT Y
ENDIF

# ZX Attributes

IF K=1
	FOR Y=0 TO 23
		FOR X=0 TO 31
			READ A
			A=A&$7F
			R=A&$40
			R=R/64
			P=A&$38
			I=A&$07
			P=P/8
			I=I+R*16
			P=P+R*16
			I=I+16
			P=P+24
			D=65536+X+Y*256
			J=65536+X+Y*256+6144
			FOR V=0 TO 7
				POKE D,P
				POKE J,I
				LET D=D+32
				LET J=J+32
			NEXT V
		NEXT X
	NEXT Y
ENDIF

# ULAPlus palette

IF K=0
	FOR C=0 TO 63
		READ V
		G=V&$E0
		G=G/32
		R=V&$1C
		R=R/4
		B=V&$3
		MAKECOLOR C,7,7,3,R,G,B
	NEXT C
ENDIF

# ZX palette

IF K=1
	FOR C=0 TO 63
		MAKECOLOR C,7,7,3,0,0,0
	NEXT C
	MAKECOLOR 16+1,255,255,255,0,0,182
	MAKECOLOR 16+2,255,255,255,182,0,0
	MAKECOLOR 16+3,255,255,255,182,0,182
	MAKECOLOR 16+4,255,255,255,0,182,0
	MAKECOLOR 16+5,255,255,255,0,182,182
	MAKECOLOR 16+6,255,255,255,182,182,0
	MAKECOLOR 16+7,255,255,255,182,182,182
	MAKECOLOR 16+9,255,255,255,0,0,182
	MAKECOLOR 16+10,255,255,255,182,0,0
	MAKECOLOR 16+11,255,255,255,182,0,182
	MAKECOLOR 16+12,255,255,255,0,182,0
	MAKECOLOR 16+13,255,255,255,0,182,182
	MAKECOLOR 16+14,255,255,255,182,182,0
	MAKECOLOR 16+15,255,255,255,182,182,182
	MAKECOLOR 16+17,255,255,255,0,0,255
	MAKECOLOR 16+18,255,255,255,255,0,0
	MAKECOLOR 16+19,255,255,255,255,0,255
	MAKECOLOR 16+20,255,255,255,0,255,0
	MAKECOLOR 16+21,255,255,255,0,255,255
	MAKECOLOR 16+22,255,255,255,255,255,0
	MAKECOLOR 16+23,255,255,255,255,255,255
	MAKECOLOR 16+25,255,255,255,0,0,255
	MAKECOLOR 16+26,255,255,255,255,0,0
	MAKECOLOR 16+27,255,255,255,255,0,255
	MAKECOLOR 16+28,255,255,255,0,255,0
	MAKECOLOR 16+29,255,255,255,0,255,255
	MAKECOLOR 16+30,255,255,255,255,255,0
	MAKECOLOR 16+31,255,255,255,255,255,255
ENDIF

SAVEKEY "ex_ulap.txt"

REFRESH

