/* este script graba la pantalla del spectrum como IFF sin compresión */
	
	address command
	
	if ~show(ports,ZXAM_REXX) then do
		requestchoice 'title "ZXAM Script error..." body "No encuentro el puerto del emulador!!" gadgets "AARGH!"'
		exit 0
		end

	/* Almacenar el estado inicial del emulador */
	running=zxamactrun()	/* 1=en marcha */
	zxamstop()              /* lo paramos */

/* Usamos el requester del emulador para pedir nombre del fichero */
	
	cajon=""  /* aqui puedes meter el path que uses para pantallas */
	
	oldcajon=zxamactloadpath()	/* guardamos el path del requester */
	oldpattern=zxamactpattern()	/* guardamos el pattern del requester */
	zxampattern('(#?.iff|#?.pic)')  /* filtro para mostrar solo pantallas */
	
	nombre=zxamsaverequester('Nombre para grabar el IFF...',cajon)
	
	zxampattern(oldpattern)		/* recuperamos el pattern */
	zxamloadpath(oldcajon)		/* recuperamos el path */	
	
	if nombre='' then do
		exit	/* selección cancelada */
		end
	
/* Abrimos el fichero */

	if ~OPEN('fichero',nombre,'Write') then exit 0
	
	oldname=zxamactname()		/* guardamos nombre y formato */
	oldformat=zxamactformat()
	
	zxamnameformat('    (GRABANDO PANTALLA IFF)','')
	
/* cabecera identificadora. indica tamaño TODO menos 'FORM' */
	dummy=writech('fichero','FORM')
	dummy=writech('fichero','000060a8'x)	/* tamaño total */
	dummy=writech('fichero','ILBM')

/* chunk ANNO */
	dummy=writech('fichero','ANNO')
	dummy=writech('fichero','00000033'x)	/* tamaño 51 caracteres */
	dummy=writech('fichero','Saved by ZXAM Spectrum Emulator AGA (by Toni Pomar)')
	dummy=writech('fichero','00'x)		/* pad para alinear */

/* chunk BMHD, o sea, bloque indicador de tamaño página */
	dummy=writech('fichero','BMHD')
	dummy=writech('fichero','00000014'x)	/* tamaño 20 */
	dummy=writech('fichero','0100'x)	/* ancho */
	dummy=writech('fichero','00c0'x)	/* alto */
	dummy=writech('fichero','0000'x)	/* pos x */
	dummy=writech('fichero','0000'x)	/* pos y */
	dummy=writech('fichero','04'x)		/* nro bitplanos */
	dummy=writech('fichero','00'x)		/* masking */
	dummy=writech('fichero','00'x)		/* compression */
	dummy=writech('fichero','00'x)		/* Pad1 */
	dummy=writech('fichero','0000'x)	/* color transparente */
	dummy=writech('fichero','2c2c'x)	/* aspect 44:44 */
	dummy=writech('fichero','0140'x)	/* ancho página fuente (320) */
	dummy=writech('fichero','0100'x)	/* alto página fuente (256) */

/* chunk CAMG, o sea, modo de pantalla (PAL:Baja resolución) */
	dummy=writech('fichero','CAMG')
	dummy=writech('fichero','00000004'x)	/* tamaño 4 */
	dummy=writech('fichero','00000000'x)	/* 00021000 = PAL:Baja resolución */

/* chunk CMAP, o sea, mapa de colores */

	dummy=writech('fichero','CMAP')
	dummy=writech('fichero','00000030'x)	/* tamaño 48 (16 colores*3 bytes) */
	
	/* color del borde */
	/* El color (0 a 7) es el índice para la tabla de colores */
	/* que creamos en forma de cadena MUY larga */
        dummy=writech('fichero',x2c(substr('000000000099990000aa00aa00aa0000bbbbcccc00dddddd',(zxamgetreg(bor)*6)+1,6)))
	
	dummy=writech('fichero','000099'x)	/* color 1 */
	dummy=writech('fichero','990000'x)	/* color 2 */
	dummy=writech('fichero','aa00aa'x)	/* color 3 */
	dummy=writech('fichero','00aa00'x)	/* color 4 */
	dummy=writech('fichero','00bbbb'x)	/* color 5 */
	dummy=writech('fichero','cccc00'x)	/* color 6 */
	dummy=writech('fichero','dddddd'x)	/* color 7 */
	dummy=writech('fichero','000000'x)	/* color 8 */
	dummy=writech('fichero','0000aa'x)	/* color 9 */
	dummy=writech('fichero','bb0000'x)	/* color 10 */
	dummy=writech('fichero','cc00cc'x)	/* color 11 */
	dummy=writech('fichero','00cc00'x)	/* color 12 */
	dummy=writech('fichero','00dddd'x)	/* color 13 */
	dummy=writech('fichero','eeee00'x)	/* color 14 */
	dummy=writech('fichero','ffffff'x)	/* color 15 */
	

/* chunk BODY, o sea, bitplanos en formato entrelazado */

	dummy=writech('fichero','BODY')
	dummy=writech('fichero','00006000'x)	/* tamaño 6144*4 (4 bpls de 256*192) */

/* usamos una funcion especial del emulador para sacar la pantalla en 4 bitplanos */

	dummy=writech('fichero',zxamgetscr())

	dummy=close('fichero')
	
	if oldname='' then
		zxamclearnameformat()
	else
		zxamnameformat(oldname,oldformat)
	
	/* dejar el emulador como estaba */
	if running=1 then zxamrun()

	exit
	