home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
TURBOM2
/
M2DSCLK.LBR
/
M2DSCLK.MZD
/
M2DSCLK.MOD
Wrap
Text File
|
2000-06-30
|
7KB
|
314 lines
MODULE DSclock;
(*
This is a program that simply puts a 7-bar type clock on the screen.
It is RTC based that derives its time from Plu*Perfect's DateStamper.
It uses my DS access MODULE DStime and adapted from my earlier full
software version. As DS doesn't pass fractions of a sec, I copped
out and have the colon flashing at a 1 sec on 1 sec off rate rather than
a proper 500mSec on 500mSec off rate.
Jim Lill 27 Aug 87
*)
FROM Terminal IMPORT BusyRead, ClearScreen, GotoXY;
FROM DStime IMPORT CLOCK,HOUR,MIN,SEC;
CONST
bar1 ='///';
bar2 ='////';
bar3 ='/////////';
bar4 ='///////////';
bar5 ='/////////////';
bar6 ='///////////////';
bar7 ='/// ///';
bar8 ='/// ///';
blank =' ';
VAR
n, lmin, BASE : CARDINAL;
i,o,x,y,
hrs,mins,secs,
tenshrs,unithrs,tensmins,unitmins : INTEGER;
c : CHAR;
(*...................................*)
PROCEDURE zero(x,y :INTEGER);
BEGIN (*zero*)
GotoXY(x+11,y);WRITE(bar4);
GotoXY(x+9,y+1);WRITE(bar5);
GotoXY(x+7,y+2);WRITE(bar8);
GotoXY(x+6,y+3);WRITE(bar8);
GotoXY(x+5,y+4);WRITE(bar8);
GotoXY(x+4,y+5);WRITE(bar8);
GotoXY(x+3,y+6);WRITE(bar8);
GotoXY(x+2,y+7);WRITE(bar8);
GotoXY(x+2,y+8);WRITE(bar5);
GotoXY(x+2,y+9);WRITE(bar4)
END zero;
(*...................................*)
PROCEDURE one(x,y :INTEGER);
BEGIN (*one*)
GotoXY(x+15,y);WRITE(bar2);
GotoXY(x+14,y+1);WRITE(bar2);
GotoXY(x+13,y+2);WRITE(bar2);
GotoXY(x+12,y+3);WRITE(bar2);
GotoXY(x+11,y+4);WRITE(bar2);
GotoXY(x+10,y+5);WRITE(bar2);
GotoXY(x+9,y+6);WRITE(bar2);
GotoXY(x+8,y+7);WRITE(bar2);
GotoXY(x+7,y+8);WRITE(bar2);
GotoXY(x+6,y+9);WRITE(bar2)
END one;
(*..................................*)
PROCEDURE two(x,y :INTEGER);
BEGIN (*two*)
GotoXY(x+11,y);WRITE(bar4);
GotoXY(x+9,y+1);WRITE(bar5);
GotoXY(x+7,y+2);WRITE(bar8);
GotoXY(x+18,y+3);WRITE(bar1);
GotoXY(x+6,y+4);WRITE(bar5);
GotoXY(x+5,y+5);WRITE(bar5);
GotoXY(x+3,y+6);WRITE(bar1);
GotoXY(x+2,y+7);WRITE(bar1);
GotoXY(x+1,y+8);WRITE(bar6);
GotoXY(x,y+9);WRITE(bar6)
END two;
(*...................................*)
PROCEDURE three(x,y :INTEGER);
BEGIN (*three*)
GotoXY(x+11,y);WRITE(bar4);
GotoXY(x+9,y+1);WRITE(bar5);
GotoXY(x+7,y+2);WRITE(bar8);
GotoXY(x+18,y+3);WRITE(bar1);
GotoXY(x+9,y+4);WRITE(bar3);
GotoXY(x+8,y+5);WRITE(bar3);
GotoXY(x+15,y+6);WRITE(bar1);
GotoXY(x+2,y+7);WRITE(bar8);
GotoXY(x+2,y+8);WRITE(bar5);
GotoXY(x+2,y+9);WRITE(bar4)
END three;
(*...................................*)
PROCEDURE four(x,y :INTEGER);
BEGIN (*four*)
GotoXY(x+10,y);WRITE(bar7);
GotoXY(x+9,y+1);WRITE(bar7);
GotoXY(x+8,y+2);WRITE(bar7);
GotoXY(x+7,y+3);WRITE(bar7);
GotoXY(x+6,y+4);WRITE(bar6);
GotoXY(x+5,y+5);WRITE(bar6);
GotoXY(x+14,y+6);WRITE(bar1);
GotoXY(x+13,y+7);WRITE(bar1);
GotoXY(x+12,y+8);WRITE(bar1);
GotoXY(x+11,y+9);WRITE(bar1)
END four;
(*....................................*)
PROCEDURE five(x,y :INTEGER);
BEGIN (*five*)
GotoXY(x+9,y);WRITE(bar6);
GotoXY(x+8,y+1);WRITE(bar6);
GotoXY(x+7,y+2);WRITE(bar1);
GotoXY(x+6,y+3);WRITE(bar1);
GotoXY(x+5,y+4);WRITE(bar5);
GotoXY(x+4,y+5);WRITE(bar6);
GotoXY(x+15,y+6);WRITE(bar1);
GotoXY(x+2,y+7);WRITE(bar8);
GotoXY(x+2,y+8);WRITE(bar5);
GotoXY(x+2,y+9);WRITE(bar4)
END five;
(*....................................*)
PROCEDURE six(x,y :INTEGER);
BEGIN (*six*)
GotoXY(x+11,y);WRITE(bar4);
GotoXY(x+9,y+1);WRITE(bar5);
GotoXY(x+7,y+2);WRITE(bar8);
GotoXY(x+6,y+3);WRITE(bar1);
GotoXY(x+5,y+4);WRITE(bar5);
GotoXY(x+4,y+5);WRITE(bar6);
GotoXY(x+3,y+6);WRITE(bar8);
GotoXY(x+2,y+7);WRITE(bar8);
GotoXY(x+2,y+8);WRITE(bar5);
GotoXY(x+2,y+9);WRITE(bar4)
END six;
(*....................................*)
PROCEDURE seven(x,y :INTEGER);
BEGIN (*seven*)
GotoXY(x+11,y);WRITE(bar5);
GotoXY(x+10,y+1);WRITE(bar5);
GotoXY(x+18,y+2);WRITE(bar2);
GotoXY(x+17,y+3);WRITE(bar2);
GotoXY(x+16,y+4);WRITE(bar2);
GotoXY(x+15,y+5);WRITE(bar2);
GotoXY(x+14,y+6);WRITE(bar2);
GotoXY(x+13,y+7);WRITE(bar2);
GotoXY(x+12,y+8);WRITE(bar2);
GotoXY(x+11,y+9);WRITE(bar2)
END seven;
(*.....................................*)
PROCEDURE eight(x,y :INTEGER);
BEGIN (*eight*)
GotoXY(x+11,y);WRITE(bar4);
GotoXY(x+9,y+1);WRITE(bar5);
GotoXY(x+7,y+2);WRITE(bar8);
GotoXY(x+6,y+3);WRITE(bar8);
GotoXY(x+6,y+4);WRITE(bar5);
GotoXY(x+5,y+5);WRITE(bar5);
GotoXY(x+3,y+6);WRITE(bar8);
GotoXY(x+2,y+7);WRITE(bar8);
GotoXY(x+2,y+8);WRITE(bar5);
GotoXY(x+2,y+9);WRITE(bar4)
END eight;
(*......................................*)
PROCEDURE nine(x,y :INTEGER);
BEGIN (*nine*)
GotoXY(x+11,y);WRITE(bar4);
GotoXY(x+9,y+1);WRITE(bar5);
GotoXY(x+7,y+2);WRITE(bar8);
GotoXY(x+6,y+3);WRITE(bar8);
GotoXY(x+5,y+4);WRITE(bar6);
GotoXY(x+6,y+5);WRITE(bar5);
GotoXY(x+15,y+6);WRITE(bar1);
GotoXY(x+2,y+7);WRITE(bar8);
GotoXY(x+2,y+8);WRITE(bar5);
GotoXY(x+2,y+9);WRITE(bar4)
END nine;
(*.......................................*)
PROCEDURE colon(x,y:INTEGER;c:CHAR);
BEGIN; (*colon*)
GotoXY(x+5,y); WRITE(c,c,c);
GotoXY(x+4,y+1); WRITE(c,c,c);
GotoXY(x+1,y+4); WRITE(c,c,c);
GotoXY(x,y+5); WRITE(c,c,c)
END colon;
(*......................................*)
PROCEDURE dispit(x,y,number:INTEGER);
BEGIN
CASE number OF
| 0 : zero(x,y)
| 1 : one(x,y)
| 2 : two(x,y)
| 3 : three(x,y)
| 4 : four(x,y)
| 5 : five(x,y)
| 6 : six(x,y)
| 7 : seven(x,y)
| 8 : eight(x,y)
| 9 : nine(x,y)
END
END dispit;
(*...................................*)
PROCEDURE author;
BEGIN (*author*)
GotoXY(55,22);
WRITE('by Jim Lill 27 Aug 87')
END author;
(*....................................*)
PROCEDURE cleardigit(pos:INTEGER);
BEGIN (*cleardigit*)
FOR i:= 0 TO 9 DO
GotoXY(pos-i,8+i);
WRITE(blank)
END
END cleardigit;
(*....................................*)
PROCEDURE dispmins(mins:INTEGER);
BEGIN (*dispmins*)
tensmins:= mins DIV 10;
cleardigit(48);
dispit(39,8,tensmins);
unitmins:= mins MOD 10;
dispit(56,8,unitmins)
END dispmins;
(*.......................................*)
PROCEDURE disphrs(hrs:INTEGER);
BEGIN (*disphrs*)
tenshrs:= hrs DIV 10;
cleardigit(9);
dispit(0,8,tenshrs);
unithrs:= hrs MOD 10;
dispit(17,8,unithrs)
END disphrs;
(*........................................*)
PROCEDURE runclock;
VAR anykey : CHAR;
BEGIN (*runclock*)
REPEAT
BusyRead(anykey);
IF CLOCK() THEN
IF MIN() # lmin THEN
disphrs(INT(HOUR()));
dispmins(INT(MIN()));
colon(36,10,'/');
lmin:= MIN();
END;
IF (SEC() MOD 2) = 0 THEN colon(36,10,'/')
ELSE colon(36,10,' ')
END;
END;
GotoXY(78,22);
UNTIL anykey # 0C
END runclock;
(*...................................*)
BEGIN (*clock*)
ClearScreen;
author;
runclock;
END DSclock.