#
# ZX Spectrum TAP (emulator executable) exporter
# A Multipaint internal script
#

# Machine code header

BYTE $13,$00,$00,$00,$75,$6C,$61,$73,$68,$6F,$77,$20,$20,$20,$5D,$00
BYTE $0A,$00,$5D,$00,$51,$5F,$00,$FF,$00,$0A,$16,$00,$EA,$6C,$6F,$61
BYTE $64,$65,$72,$20,$62,$79,$20,$62,$69,$6E,$32,$74,$61,$70,$31,$2E
BYTE $32,$0D,$00,$14,$12,$00,$E7,$B0,$22,$30,$22,$3A,$DA,$B0,$22,$30
BYTE $22,$3A,$D9,$B0,$22,$37,$22,$0D,$00,$1E,$0A,$00,$FD,$B0,$22,$32
BYTE $34,$35,$37,$35,$22,$0D,$00,$32,$0C,$00,$EF,$22,$75,$6C,$61,$73
BYTE $68,$6F,$77,$22,$AF,$0D,$00,$3C,$0B,$00,$F9,$C0,$B0,$22,$32,$34
BYTE $35,$37,$36,$22,$0D,$95,$13,$00,$00,$03,$75,$6C,$61,$73,$68,$6F
BYTE $77,$20,$20,$20,$B3,$1B,$00,$60,$00,$80,$10,$B5,$1B,$FF,$CD,$18
BYTE $60,$CD,$1E,$60,$CD,$55,$60,$CD,$39,$60,$01,$FE,$FB,$ED,$78,$E6
BYTE $01,$28,$02,$18,$F5,$C9,$3A,$71,$60,$D3,$FE,$C9,$AF,$32,$00,$40
BYTE $01,$FF,$17,$21,$00,$40,$11,$01,$40,$ED,$B0,$01,$00,$03,$21,$00
BYTE $58,$11,$01,$58,$ED,$B0,$C9,$AF,$32,$00,$40,$01,$00,$18,$21,$72
BYTE $60,$11,$00,$40,$ED,$B0,$76,$01,$00,$03,$21,$72,$78,$11,$00,$58
BYTE $ED,$B0,$C9,$0E,$3B,$11,$BF,$00,$21,$B2,$7B,$3E,$41,$3D,$43,$ED
BYTE $79,$42,$ED,$AB,$A7,$20,$F6,$C9,$55,$4C,$41,$70,$6C,$75,$73

# Set checksum

Q = $FE

# Border

A = PEEK 0
A = A-8
IF A<0
	A=0
ENDIF
IF A>7
	A=7
ENDIF

BYTE A
Q = Q^A

# Display file

# ulafixer needed?

# bitmap

FOR Y=0 TO 2
	FOR V=0 TO 7
		FOR E=0 TO 7
			FOR X=0 TO 31
				C=128
				L=0
				FOR B=0 TO 7
					P=V
					P=P+E*8
					P=P+Y*64

					A=1024
					A=A+P*256
					A=A+X*8

					A=A+B
					O=PEEK A
					L=L+C*O
					C=C/2
				NEXT B

				L=255-L

				BYTE L
				Q = Q^L

			NEXT X
		NEXT E
	NEXT V
NEXT Y

# Attributes

FOR Y=0 TO 23
	FOR X=0 TO 31
		R = 0
		F = 0
		P = Y*256
		P = P+X
		P = P+65536
		L = PEEK P
		P = P+6144
		H = PEEK P

		C = L/16
		M = C*16
		I = L-M
		P = H-M

		IF I>7
			I=I-8
		ENDIF

		IF P>7
			P=P-8
		ENDIF

		IF C=0
			R=0
			F=0
		ENDIF

		IF C=1
			R=64
			F=0
		ENDIF

		IF C=2
			R=0
			F=128
		ENDIF

		IF C=3
			R=64
			F=128
		ENDIF

		A = P
		M = I*8
		A = A+M
		A = A+R
		A = A+F

		BYTE A
		Q = Q^A

	NEXT X
NEXT Y

# End of display file

# Palette

# ULAplus palette 

P = 256

FOR C=0 TO 63
	R = PEEK P
	P = P+1
	G = PEEK P
	P = P+1
	B = PEEK P
	P = P+1
	IF R=0
		r=0
	ENDIF
	IF R=36
		r=1
	ENDIF
	IF R=73
		r=2
	ENDIF
	IF R=109
		r=3
	ENDIF
	IF R=146
		r=4
	ENDIF
	IF R=182
		r=5
	ENDIF					
	IF R=219
		r=6
	ENDIF	
	IF R=255
		r=7
	ENDIF
	IF G=0
		g=0
	ENDIF
	IF G=36
		g=1
	ENDIF
	IF G=73
		g=2
	ENDIF
	IF G=109
		g=3
	ENDIF
	IF G=146
		g=4
	ENDIF
	IF G=182
		g=5
	ENDIF					
	IF G=219
		g=6
	ENDIF	
	IF G=255
		g=7
	ENDIF
	IF B=0
		b=0
	ENDIF
	IF B=109
		b=1
	ENDIF
	IF B=182
		b=2
	ENDIF
	IF B=255
		b=3
	ENDIF					
	A=g*32
	M=r*4
	A=A+M
	A=A+b
	
	BYTE A
	Q = Q^A

NEXT C

# checksum

BYTE Q

# Write to file

SAVE

