c162-dr@zooey.Berkeley.EDU (Eric Ng) (05/05/90)
I am writing an application in which it would be advantageous to reprogram the timer's channel 0 to tick at more than 18.2 times per second (for argument's sake, let's assume quadruple that rate, 72.8 times per second). With no Tech Ref (but some Kermit and Freemacs source), I wrangled out the below code fragment: mov dx,0043 mov al,36 ; timer channel 0, low before high, square wave, binary out dx,al mov dx,0040 mov al,07 ; low byte of 0x4007 = 1,193,280/72.8 out dx,al mov al,40 ; high byte of 0x4007 out dx,al After executing this code fragment, I notice that I have achieved (at least partial) success: the clock runs about four times faster. In my application I plan to grab the 0x08 interrupt and issue the old 0x08 interrupt every fourth time through so that the time of day and other timer-dependent things aren't botched up. Now, what my question is, I want to restore the timer channel 0 rate upon exit: how do I read the original rate from channel 0? I mean, I can just assume 18.2, but I'm sure this could lead to problems... Also, is there anything that I am doing that is painfully wrong? I mean, the above came out of plain guesswork, so I'm assuming that I did something wrong... Can anyone who has done this before help me? Thanks in advance, -eric -- Eric Ng, 1906 Milvia Street, Berkeley, California 94704 ..!ucbvax!irss.njit.edu!erc -or- erc@irss.njit.edu