2 ; Oliver Schmidt, 14.08.2018
3 ; Christian Groessler, 25.09.2018
5 ; int __fastcall__ clock_gettime (clockid_t clk_id, struct timespec *tp);
8 .import pushax, steaxspidx, incsp1, incsp3, return0
13 .include "zeropage.inc"
25 ldy #.sizeof(timespec)-1
30 ; only supported on SpartaDOS-X >= 4.40
39 ; get date/time from system (SD-X call)
40 ; see settime.s for reasons of using sdxtry
42 lda #0 ; init loop count (256)
45 try_get:lda #SDX_CLK_DEV ; CLK device
47 ldy #SDX_KD_GETTD ; GETTD function
48 jsr SDX_KERNEL ; do the call
60 done: lda SDX_DATE ; mday
62 ldx SDX_DATE+1 ; month
66 cmp #79 ; 1979: the Atari 800 came out
68 adc #100 ; adjust century
69 : sta TM + tm::tm_year
85 ; store tv_sec into output tp struct
104 errexit:jsr incsp3 ; Preserves A