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
/
BEEHIVE
/
OS
/
Z8D24SUP.ARC
/
Z8D-UTL1.LBR
/
DATEREG.DZC
/
DATEREG.DOC
Wrap
Text File
|
1991-02-10
|
6KB
|
112 lines
DATEREG.DOC
Rick Charnes, 25 October 1987, San Francisco
In Z80DOS the date is stored in memory locations 0050 and 0051. The
hex values contained therein are the number of days in hex since
December 31, 1977. In this form the date is entirely inaccessible for
use in aliases. DATEREG takes the contents of these bytes and
transforms it to the actual month, day and year, then puts these in the
ZCPR3 registers in hexadecimal form. Thus the $Rn symbol in ARUNZ can
be used to represent the date.
The components of the date will be stored as follows:
REGISTER 5 = mm, where 'mm' is the month
REGISTER 6 = dd, where 'dd' is the day
REGISTER 7 = yy, where 'yy' is the 20th century year
Thus an alias like the following becomes possible:
TODAY echo t%>oday is the $r5th day of the $r6th month in <<
the year 19$r7.
Note that both REG.COM and the RCP-resident REG display the decimal
equivalent of the hex values held in the ZCPR3 registers. Therefore,
using these commands will NOT display what you might have hoped.
ARUNZ's '$Rn' symbol, however, displays the ZCPR3 registers in their
native hex form, which is exactly how we want it to appear since it
is only in the hex format that the date reads accurately.
I recommend including DATEREG in your startup alias so that the
system date is always available to you via the ZCPR3 registers. It is
important to note in this regard that an ARUNZ alias will expand its
symbols such as $Rn or $Mnnnn to the value(s) in effect AT THE TIME THE
ALIAS IS INVOKED. No change made to the ZCPR3 registers or memory in
the course of the execution of the alias will be reflected in the
expansion of these symbols.
In other words, if DATEREG is not in your startup alias or run
previously elsewhere, then the TODAY alias above, even if DATEREG is
included in it:
TODAY datereg;echo t%>oday is the $r5th day of the $r6th month in <<
the year 19$r7.
will NOT produce the desired effect of displaying the system date.
Rather, the $R parameters will expand to whatever was in those registers
before the alias was invoked, most probably 00's.
DATEREG would of course not be possible without Carson Wilson's
superb Z80DOS. This program in particular uses DATEHL.REL written by
Carson and supplied in Z80DOS10.LBR.
Further notes
-------------
DATEREG is my first attempt at assembly language programming where I
did more than 50% of the work. It's so satisfying! I've spent a year
writing aliases and ZEX files that were very fulfilling to me, but at a
certain point your repertoire begs to expand...
My ultimate purpose in writing DATEREG, ironically though, was for
use in an alias inspired by the absolutely brilliant one developed by
Carson Wilson. Carson's logs the beginning and ending times a COM file
was in use, then writes this information to a file. It of course needs
a real time clock. Being without a clock, however, I wanted something
that would keep track of the date of every editing of any specific word-
processed file. As far as I know such a utility has never before been
available for Z80 machines. Why? I don't know. It seems like a fairly
obvious and wonderful thing to have and it seems that there must be a
way to do it in CP/M 3.0 or with DateStamper and 2.2. I'm quite pleased
at having done it for Z80DOS. It's really quite simple.
Both my and Carson's alias use a program ECHO.COM (not the ZCPR3
ECHO.COM) written by one Eugene H. Mallory in 1983. It's one of a
fairly large number of unix-style CP/M utilities Mr. Mallory wrote way
back in the good old days of CP/M. It appends any parameters entered on
its command line to the file specified after the traditional 'piping'
symbol '>' (here actually two are used, as in '>>' entered after the
parameters. I've included both ECHO.COM, which should be renamed to
LOGECHO.COM, and its help file, ECHO.HLP, in this library. Thanks go to
Mr. Mallory for writing such a useful tool, and Carson Wilson for re-
discovering it, that allowed us 4 years later to do such a nice thing
with Z80DOS.
The logging alias is:
LOG e l%>ogging use of %<$2...;echolog $r5/$r6/$r7 >>$2.dat;$*
Syntax to log date of use of text file SMITH.LTR would be:
'log vde smith'
The alias will write the date in the format '10/25/87' to the end of the
file SMITH.DAT. Finally the command line 'vde smith' is actually run.
Each time this file is accessed through the LOG alias the system date at
that time will be appended to SMITH.DAT. I've been using it myself for
several days and it's very exciting to have this record of editings.
But there I go again -- using aliases to do stuff that can and
should be done in a real assembly (or other, I suppose) language
utility. Well, I'm learning -- slowly but surely. This alias is fairly
slow as ECHO.COM seems to take its time in opening and writing to our
*.DAT file. My next project therefore is what should actually be a
fairly simple utility to do -- one that will do exactly what this alias
does. Using Carson's DATEHL.REL again it will simply write/append the
contents of the chip registers H, L and A to our output file. Please no
one else write this; I'd like to do it myself within the next week or so.
I would welcome comments, which can be sent to me through either of
the Lillipute Z-Nodes in Chicago, Z-Node Central in California, or
Newton Centre outside of Boston, or by voice at (415) 826-9448.
lipute Z-Nodes in Chicago, Z-Node Central in Californi