/*
	* SetLace.c - V1.0 - Attiva e disattiva il modo interlacciato *

	*By Bob Pariseau & Luigi Callegari - Novembre 1988 - Lattice C*

	Formato:	Setlace 1 	- Attiva modo interlacciato
			SetLace 0	- Disattiva modo interlacciato
*/

#include <exec/types.h>
#include <graphics/gfxbase.h>
#include <graphics/view.h>
#include <graphics/copper.h>
#include <graphics/display.h>
#include <intuition/intuitionbase.h>

#include <proto/exec.h>		/* SOLO per Lattice C V4.00 */
#include <proto/intuition.h>	/* SOLO per Lattice C V4.00 */

extern struct GfxBase		*GfxBase;
extern struct IntuitionBase	*IntuitionBase;

void main(argc,argv)
int argc;
char *argv[];
{
void exit(long);
void RemakeDisplay(void);
void CloseLibrary(struct Library *);
struct Library *OpenLibrary(char *, long);

if (!(GfxBase = (struct GfxBase *) OpenLibrary("graphics.library",33L)))
	exit(20L);

if (!(IntuitionBase=(struct IntuitionBase *)
				OpenLibrary("intuition.library",33L)))
	{
	CloseLibrary( (struct Library *) GfxBase);
	exit(20L);
	}

/* Il valore di _bplcon0 viene sempre messo in OR logico con tutte le
istruzioni della lista del copper che cambiano bplcon0 (uno dei registri
hardware di controllo dei bitplanes) tutte le volte che le routines
di gestione delle liste del copper ne creano una nuova. Tale valore
fornisce un contesto di verifica che sovrascrive i valori di controllo
normalmente usati da Intuition. In particolare, Intuition controlla
il modo interlacciato nella struttura View, quindi noi dobbiamo lavorare
necessariamente entro questa istruzione per potere effettuare una
modificazione stabile. */

if ( argc > 1 && argv[1][0] != '0' )
	GfxBase->system_bplcon0 |= INTERLACE;
else
	GfxBase->system_bplcon0 &= !INTERLACE;


/* Ora dobbiamo ricostruire le liste del copper. Il modo piu' semplice
di fare cio' e' usare RemakeDisplay(), funzione di Intuition. */

RemakeDisplay();

CloseLibrary( (struct Library *) GfxBase);
CloseLibrary( (struct Library *) GfxBase);
}
