/*FILE HEADER**************************************************************
 *
 *  File name		: $Id$
 *  RCS Revision Number	: $Revision: 1.1 $
 *  Last Modified	: $Date: 94/10/28 09:23:31 $
 *  CSCI name		: Real-Time Graphics System - Applications Interface
 *  CSC name		: All functions
 *  Notes:
 *      This file contains code used to debug and test the SVME-770 RTGS.
 *      This code is provided as an example of how to call the RTGS functions
 *      from a host application.
 *  History		:
 *      Created 94/01/17 by Jeff Sanderson
 *
 *END FILE HEADER*********************************************************/

#include "dy4std.h"
#include "es.h"
#include "css.h"

#include "rtgs_ai.h"
#include "video.h"
#include "colours.h"

#include "test.h"


void test_initvide( void );

#define CLR_1 0
/*-----------------------------------------------------------------------*/

void test_initvide( void )
{
    video_params_t *gcc_vid_params;

    init( "Initialize video test" );

    gcc_vid_params = (video_params_t *)Gcc_malloc(sizeof(video_params_t), 0);
    malloc_check( gcc_vid_params );

    Set_gcc_base_address( 0x70000000 );
    Take_gcc_out_of_bi_mode();
    Initialize_graphics();
    Initialize_video( 1 );
    Set_gcc_base_address( 0xE0000000 );

    /*--------------------------------------------------*/

    Printf("Video mode %d\n",1);
    Printf(" 640 x 480 x 8, interlaced, master\n");
    Initialize_video( 1 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();

    /*--------------------------------------------------*/

    Printf("Video mode %d\n",2);
    Printf(" 640 x 480 x 8, non-interlaced, master\n");
    Initialize_video( 2 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",3);
    Printf(" 1280 x 1024 x 8, non-interlaced, master\n");
    Initialize_video( 3 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",4);
    Printf(" 1280 x 1024 x 8, non-interlaced, master\n");
    Initialize_video( 4 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",5);
    Printf(" 640 x 480 x 8, interlaced, slave\n");

    Set_gcc_base_address( 0x70000000 );
    Initialize_graphics();
    Initialize_video( 1 );
    Clear_screen( RED, 0, 0 );
    Draw_grid( 0x10 );

    Set_gcc_base_address( 0xE0000000 );
    Initialize_video( 5 );
    Clear_screen( CLR_1, 0, 0 );
    Draw_grid( 0x20 );
    Key_wait();

    /*--------------------------------------------------*/

    Printf("Video mode %d\n",6);
    Initialize_video( 6 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",7);
    Printf(" 857 line interlaced, slave\n");

    Set_gcc_base_address( 0x70000000 );
    Initialize_graphics();
    Initialize_video( 7 );
    Clear_screen( RED, 0, 0 );
    Draw_grid( 0x10 );

    Set_gcc_base_address( 0xE0000000 );
    Initialize_video( 6 );
    Clear_screen( CLR_1, 0, 0 );
    Draw_grid( 0x20 );
    Key_wait();

 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",8);
    Printf(" 1600 x 1200 x 4, non-interlaced, master\n");
    Initialize_video( 8 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",9);
    Printf(" 640 x 480 x 8, non-interlaced, slave\n");

    Set_gcc_base_address( 0x70000000 );
    Initialize_graphics();
    Initialize_video( 2 );
    Clear_screen( RED, 0, 0 );
    Draw_grid( 0x10 );

    Set_gcc_base_address( 0xE0000000 );
    Initialize_video( 9 );
    Clear_screen( CLR_1, 0, 0 );
    Draw_grid( 0x20 );
    Key_wait();

    /*--------------------------------------------------*/

    Printf("Video mode %d\n",10);
    Printf(" 1024 x 768 x 8, interlaced, master\n");
    Initialize_video( 10 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",11);
    Printf(" 1024 x 768 x 8, non-interlaced, master\n");
    Initialize_video( 11 );
    Clear_screen( CLR_1, 0, 0 );
    Set_foreground_colour( WHITE );
    Draw_grid(0x20);
    Key_wait();
 
    /*--------------------------------------------------*/

    Printf("Video mode %d\n",12);
    Printf(" 1024 x 768 x 8, interlaced, slave\n");
    Set_gcc_base_address( 0x70000000 );
    Initialize_graphics();
    Initialize_video( 10 );
    Clear_screen( RED, 0, 0 );
    Draw_grid( 0x10 );

    Set_gcc_base_address( 0xE0000000 );
    Initialize_video( 12 );
    Clear_screen( CLR_1, 0, 0 );
    Draw_grid( 0x20 );
    Key_wait();

    /*--------------------------------------------------*/

#ifdef COMMENT_OUT
    Printf("Video mode %d\n",13);
    Printf(" 1024 x 768 x 8, non-interlaced, slave\n");

    Set_gcc_base_address( 0xE0000000 );
    Initialize_graphics();
    Initialize_video( 11 );
    Clear_screen( RED, 0, 0 );
    Draw_grid( 0x10 );

    Set_gcc_base_address( 0x90000000 );
    Initialize_video( 13 );
    Clear_screen( CLR_1, 0, 0 );
    Draw_grid( 0x20 );
    Key_wait();
#endif

    /*--------------------------------------------------*/

}

/*-----------------------------------------------------------------------*/
