123 Eng

Engineering the engineers™


Latest Jobs   Forum Map

 


Home
Source Codes
Engineering Colleges

Training  Reports
Seminar Reports
Placement Papers

Forums

   Computer Science / IT
   Electronics
   Electrical
   Mechanical
   Chemical
   Civil

   CAT / MBA

   GMAT / Foreign MBA
Latest Jobs

Engineering Jobs / Technical Jobs
Management Jobs

Sitemap
Terms of use

Displaying  Source Code(s)  
 

 
A TSR CLOCK.

--------------------------------------------------------------------------------

Description : This is the TSR clock in c language. Every time when dos run u have to run exe file of this source code and you get result. This utility works properly only in the text mode. Since the time is to be displayed by directly writing it into VDU memory it is necessary to find out the base address of the VDU memory. This address depends on the initial video mode in which the computer has booted. The initial video mode is stored at bits 4 and 5 location 0x410. If both the bits are on then the computer must have booted in monochrome text mode, otherwise in CGA text mode. Hence, to begin with, in main( ) the initial video mode is determined and the corresponding base address is stored in scr. Next the contents of IVT are changed such that the routine mytimer() would get called whenever the timer ticks, and the program is made resident by calling keep( ).

#include "dos.h"

void interrupt ( *prevtimer )( ) ;
void interrupt mytimer( ) ;

int running = 0 ;
unsigned long far *time = ( unsigned long far * ) 0x46C ;
char far *scr ;
char far *mode ;

main( )
{

/* peek into location 0:410h and determine video mode */
if ( ( *mode & 0x30 ) == 0x30 )
scr = ( char far * ) 0xB0000000 ;
else
scr = ( char far * ) 0xB8000000 ;

prevtimer = getvect ( 8 ) ;
setvect ( 8, mytimer ) ;
keep ( 0, 1000 ) ;

}

void interrupt mytimer( )
{
unsigned char hours, sec, min ;

if ( running == 0 )
{

running = 1;
hours = ( *time / 65520 ) ;
min = ( *time - hours * 65520 ) / 1092 ;
sec = ( *time - hours * 65520 - min * 1092 ) * 10 / 182 ;

if ( sec >= 60 )
{

sec -= 60 ;
min++ ;

if ( min == 60 )
{

min = 0 ;
hours++ ;

if ( hours == 24 )
hours = 0 ;

}

}



/* display digital clock */
writechar ( 48 + hours / 10, 0, 72, 112 ) ;
writechar ( 48 + hours % 10, 0, 73, 112 ) ;
writechar ( ':', 0, 74, 112 ) ;
writechar ( 48 + min / 10, 0, 75, 112 ) ;
writechar ( 48 + min % 10, 0, 76, 112 ) ;
writechar ( ':', 0, 77, 112 ) ;
writechar ( 48 + sec / 10, 0, 78, 112 ) ;
writechar ( 48 + sec % 10, 0, 79, 112 ) ;

running = 0 ;

}

( *prevtimer )( ) ;

}



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

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

}
 

 

 

Contribute content or training reports / feedback / Comments
job placement papers
All rights reserved copyright 123ENG