38 lines
1002 B
C
38 lines
1002 B
C
#include <time.h>
|
|
|
|
#include "../uxn.h"
|
|
#include "datetime.h"
|
|
|
|
/*
|
|
Copyright (c) 2021-2023 Devine Lu Linvega, Andrew Alderwick
|
|
|
|
Permission to use, copy, modify, and distribute this software for any
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
WITH REGARD TO THIS SOFTWARE.
|
|
*/
|
|
|
|
Uint8
|
|
datetime_dei(Uxn *u, Uint8 addr)
|
|
{
|
|
time_t seconds = time(NULL);
|
|
struct tm zt = {0}, *t = localtime(&seconds);
|
|
if(t == NULL) t = &zt;
|
|
switch(addr) {
|
|
case 0xc0: return (t->tm_year + 1900) >> 8;
|
|
case 0xc1: return (t->tm_year + 1900);
|
|
case 0xc2: return t->tm_mon;
|
|
case 0xc3: return t->tm_mday;
|
|
case 0xc4: return t->tm_hour;
|
|
case 0xc5: return t->tm_min;
|
|
case 0xc6: return t->tm_sec;
|
|
case 0xc7: return t->tm_wday;
|
|
case 0xc8: return t->tm_yday >> 8;
|
|
case 0xc9: return t->tm_yday;
|
|
case 0xca: return t->tm_isdst;
|
|
default: return u->dev[addr];
|
|
}
|
|
}
|