#include "dos.h"

void interrupt mytimer();

void interrupt (*prevtimer)();

int running=0;

char far *vdu;

char far *mode;

unsigned long far *time=(unsigned long far*)0x46c;

 

main()

//AIM : to make the tsr clock which will display time at the top right corner

//                right now not working

{

      unsigned long far *clkint;

      clkint=(unsigned long far*)32;

      mode=(char far*)0x410;

      if((*mode&0x30)==0x30)

            *vdu=0xb0000000l;

      else

            *vdu=0xb8000000l;

      prevtimer=(void (interrupt *far)())*clkint;

      *clkint=(unsigned long)mytimer;

      keep(0,1000);

      return 0;

}

 

void interrupt mytimer()

{

      unsigned char hh,mm,ss;

      void writechar(char,int,int,int);

      if(running==0)

            {

                  running=1;

                  hh=(*time/65520);

                  mm=(*time-hh*65520)/1092;

                  ss=(*time-hh*65520-mm*1092)*10/182;

                  if(ss>=60)

                        {

                              ss-=60;

                              mm++;

                              if(mm>=60)

                                    {

                                          mm=0;

                                          hh++;

                                          if(hh>=24)

                                                {

                                                      hh=0;

                                                }//if(hh>=24)

                                    }//if(mm>=60)

                        }//if(ss>=60)

                        writechar(48+hh/10,0,72,112);

                        writechar(48+hh%10,0,73,112);

                        writechar(48+':',0,74,112);

                        writechar(48+mm/10,0,75,112);

                        writechar(48+mm%10,0,76,112);

                        writechar(48+':',0,77,112);

                        writechar(48+ss/10,0,78,112);

                        writechar(48+ss%10,0,79,112);

                        running=0;

            }//if(running==0)

            (*prevtimer)();

}//main()

 

void writechar(char ch,int row,int col,int attr)

{

      *(vdu+row*160+col*2)=ch;

      *(vdu+row*160+col*2+1)=attr;

}