CLK26.COM / ALMCLK26.COM Jan 8, 1986
By Scott Strench
CLK26 and it's newest update, ALMCLK26, are resident on-screen clocks
for the IBM PC family and close compatibles. Both have been tested on PC's,
XT's, and Jr's, and no one has complained (so-far) of unexpected behavior.
However, I wrote CLK26 for my own use; I don't guarantee success on any machine
but my own. If you find these utilities work well, and you like what you see,
you're welcome to them; if not, DEL works quite well.
First, some technical background. I had tried several of the clocks that
are available on most BBS's, with varying degrees of success. With the
exception of CLOCK.COM (1024 bytes) all had caused lockup within 10 minutes.
CLOCK.COM worked better, but still locked up eventually. I tried debugging
a few to try and improve, but found it easier to write my own.
Debugging did provide 2 basic constraints: (1) Displaying the time should
be done by writing directly to the video buffer, avoiding video interrupts;
clocks using INT 10h invariably failed. (2) Time should be displayed where it
would not interfere with what is already on-screen.
After a few hours of reading from the Tech Ref manual, I decided to display
the time at the bottom of the screen, in the normally unused border area.
This requires modifying the video chips' internal registers to allow 26 lines,
which isn't a problem but does require that the 6845 video chip be used.
IF YOUR VIDEO CARD DOESN'T USE THE 6845 CHIP OR *EXACT* REPLACEMENT, I DOUBT
CLK26 WILL WORK!
In particular, CLK26 writes to the 6845's register R6 - Vertically displayed
rows - changing the normal value of 25 to 26. This is accomplished by writing
to PC ports 3D4h & 3D5h; if your machine doesn't have these ports, forget it.
Since BIOS assumes 25 lines, line 26 is untouched by all video functions,
making it the ideal place to display a 'status' line.
The first test of CLK26 didn't worry about what else might happen with the
video circuitry, and just modified R6. This proved that changing video modes
or pages caused problems. The next version intercepted the video interrupt
and ensured that the time is displayed only in 80-column textmodes (2 & 3)
on page 0. Any other mode/page causes CLK26 to disable 26 lines and disappear
from view; it still runs in the background waiting for the correct mode/page
combination to reoccur, whereupon it will reappear (after a delay).
One annoyance - Line 26 is halfway between page's 0 and 1. If a program
switches to page 1, half of the time line is displayed on line 1. Fixing
this would be no problem, but I seldom switch pages and all programs I use
that do switch to page 1 are well mannered enough to clear the screen.
ALMCLK26 is the first revision of CLK26 v1, and is self explanatory.
CTRL-ALT-S will set an alarm to the time you specify; the time must be entered
as 4 digits in 24hr format - 2359 for 11:59pm. The alarm will sound until you
press CTRL-ALT-A or 1 minute passes. An asterisk is displayed at the far
right of the time line if the alarm is set. Also, ALMCLK26 beeps on the hour.
CLK26m.COM and ALMCLKm.COM have been modified for monochrome monitors.
They *HAVE NOT* been tested, and I have no way of knowing if they'll work;
I don't even know if the mono card uses the 6845.
As I said, if these programs work for you and you like them - enjoy! If
not - DEL! Any comments or suggestions can be directed to me through the
TELESTAR BBS (512-822-8882) or the other San Antonio IBM boards. If you're
interested in the source, the same applies.
PS - Now the real question... Why go to all the trouble of writing 60 lines
of nonsense to explain a program that I wrote mainly because I was bored?
Simple. An edited version of this nonsense is eventually going to get me
an 'A' on a 2-week project in Technical Writing. I'm a firm believer in
taking the course of least resistence...