#include "bios.h"
#include "conio.h"
#include "stdio.h"
#include "dos.h"

char err_no=0;

main()
{
        unsigned char readbuf[100],*p;
        int i;

        clrscr();
        gotoxy(3,2);
        printf("CFxx Series demo Program ...............");

        initial_sys();              /* initial RS-232 */

        send(":SYSTEM:REM;");       /* set device to remote mode  */


        send(":SOUR:RANG LOW;");    /* set range to 150V          */
        send(":SOUR:VOLT 100;");    /* set voltage to 100V        */
        send(":SOUR:FREQ 60;");     /* set frequency to 60Hz      */
        send(":SOUR:STPH  0;");     /* set start phase            */
        send(":SOUR:SPPH  0;");     /* set stop phase             */
        send(":OUTP ON;");          /* output relay on            */
        send(":SOUR:TURN ON;");     /* turn on signal             */

        sleep(3);
        send(":SOUR:VOLT 120;");    /* set voltage to 120V        */

        sleep(3);
        send(":SOUR:FREQ 50;");     /* set frequency to 50Hz      */

        sleep(3);
        send(":SOUR:VOLT 90;");     /* set voltage to 90V        */

        sleep(3);
        send(":SOUR:TURN OFF;");    /* turn off signal            */

        sleep(3);
        send(":SYSTEM:LOC;");       /* set device to local mode   */

 }

initial_sys()
{
        outportb(0x3fb,0x80);
        outportb(0x3f8,0x0c);
        outportb(0x3f9,0x00);
        outportb(0x3fb,0x07);
        outportb(0x3fb,0x03);
};

send(unsigned char *p)
{
        unsigned status;
        int      i,j,k;

        j=strlen(p);
        for(i=0;i<j;i++)
                {
                for(k=0;k<10000;k++)
                        {
                         status=inportb(0x3fd);
                         if(status & 0x20)
                               {
                                outportb(0x3f8,*p);
                                p++;
                                break;
                                }
                        }

                if(k==10000)
                        {
                         err_no=1;
                         gotoxy(3,22);
                         printf("RS232 sending timeout..............");
                         break;
                         }
               }
}

read(unsigned char *p)
{
        unsigned char status,over;
        int      i,j;
        long int   k;

        over=0;
        while(1)
                {
                for(k=0;k<2000000;k++)
                        {
                         status=inportb(0x3fd);
                         if(status & 0x01)
                               {
                                *p=inportb(0x3f8);
                                if(*p==0x0a)
                                   {
                                    *++p=0;
                                    over=1;
                                    }

                                p++;
                                break;
                                }
                        }
                if(over==1)
                        break;
                if(k==2000000)
                        {
                         err_no=1;
                         gotoxy(3,22);
                         printf("RS232 reading timeout..............\n");
                         break;
                         }
                }
}
