date.c for Apple-II/AZTEC
John E. Duncan III
jed at mb2c.UUCP
Wed Mar 28 11:49:05 AEST 1984
/* date.c
*
* Simulate the UNIX 'date' command (sort of) using the
* AZTEC 'C' system on an Apple-II with a
* Mountain Computer CPS Multi-Function card clock in slot 5.
*
* Author: John E. Duncan
*/
static char datestr[30]; /* D mm/dd/yy hh;mm;ss */
static char *month[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static char *day[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
static char output[] = "www MMM dd, 19yy hh:mm:ss xm\n";
char ch; /* this is where the characters come in */
main()
{
register int i;
static int MM, dd, hh, mm, ss;
static char *ampm;
for(i=0; i<30; i++) {
/* The following assembler code retrieves an input character from
* the clock and turns off the high bit should it have been on.
* The card must be in slot 5, however, by changing the 5 in the
* 'jsr' to the a different slot number, any slot can be handled.
*/
#asm
jsr $c503
and #$7f
sta ch_
#endasm
if( ch == '\r' ) break;
datestr[i] = ch;
}
/* Get the day */
strncpy( output, day[ datestr[0] - '0'], 3 );
/* Get the month */
MM = (datestr[2] - '0')*10 + (datestr[3] - '0');
strncpy( output+4, month[MM-1], 3 );
/* Get the day */
output[8] = datestr[5];
if( datestr[5] == '0' ) output[8] = ' ';
output[9] = datestr[6];
/* Put out the year */
output[14] = datestr[8];
output[15] = datestr[9];
/* Put out the time */
hh = (datestr[11] - '0')*10 + (datestr[12] -'0');
if( hh > 11 ) {
ampm = "pm";
}
else ampm = "am";
if( hh > 12 ) {
hh -= 12;
}
if( hh > 9 ) {
output[17] = '1';
hh -= 10;
}
else output[17] = ' ';
output[18] = hh + '0';
output[20] = datestr[14];
output[21] = datestr[15];
output[23] = datestr[17];
output[24] = datestr[18];
output[26] = *ampm;
output[27] = *++ampm;
write( 1, output, 29 );
}
More information about the Comp.sources.unix
mailing list