Subversion Repositories Kolibri OS

Rev

Rev 7696 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7696 Rev 7983
Line 1... Line 1...
1
(*
1
(*
2
    BSD 2-Clause License
2
    BSD 2-Clause License
Line 3... Line 3...
3
 
3
 
4
    Copyright (c) 2019, Anton Krotov
4
    Copyright (c) 2019-2020, Anton Krotov
5
    All rights reserved.
5
    All rights reserved.
Line 6... Line 6...
6
*)
6
*)
Line 24... Line 24...
24
 
24
 
Line 25... Line 25...
25
    argc: INTEGER;
25
    argc: INTEGER;
Line -... Line 26...
-
 
26
 
-
 
27
    eol*: ARRAY 2 OF CHAR;
Line 26... Line 28...
26
 
28
 
27
    eol*: ARRAY 2 OF CHAR;
29
    maxreal*: REAL;
28
 
30
 
29
 
31
 
Line 146... Line 148...
146
PROCEDURE UnixTime* (): INTEGER;
148
PROCEDURE UnixTime* (): INTEGER;
147
    RETURN API.time(0)
149
    RETURN API.time(0)
148
END UnixTime;
150
END UnixTime;
Line -... Line 151...
-
 
151
 
-
 
152
 
-
 
153
PROCEDURE d2s* (x: REAL): INTEGER;
-
 
154
VAR
-
 
155
    h, l, s, e: INTEGER;
-
 
156
 
-
 
157
BEGIN
-
 
158
    SYSTEM.GET(SYSTEM.ADR(x), l);
-
 
159
    SYSTEM.GET(SYSTEM.ADR(x) + 4, h);
-
 
160
 
-
 
161
    s := ASR(h, 31) MOD 2;
-
 
162
    e := (h DIV 100000H) MOD 2048;
-
 
163
    IF e <= 896 THEN
-
 
164
        h := (h MOD 100000H) * 8 + (l DIV 20000000H) MOD 8 + 800000H;
-
 
165
        REPEAT
-
 
166
            h := h DIV 2;
-
 
167
            INC(e)
-
 
168
        UNTIL e = 897;
-
 
169
        e := 896;
-
 
170
        l := (h MOD 8) * 20000000H;
-
 
171
        h := h DIV 8
-
 
172
    ELSIF (1151 <= e) & (e < 2047) THEN
-
 
173
        e := 1151;
-
 
174
        h := 0;
-
 
175
        l := 0
-
 
176
    ELSIF e = 2047 THEN
-
 
177
        e := 1151;
-
 
178
        IF (h MOD 100000H # 0) OR (l # 0) THEN
-
 
179
            h := 80000H;
-
 
180
            l := 0
-
 
181
        END
-
 
182
    END;
-
 
183
    DEC(e, 896)
-
 
184
 
-
 
185
    RETURN LSL(s, 31) + LSL(e, 23) + (h MOD 100000H) * 8 + (l DIV 20000000H) MOD 8
-
 
186
END d2s;
149
 
187
 
150
 
188
 
151
PROCEDURE splitf* (x: REAL; VAR a, b: INTEGER): INTEGER;
189
PROCEDURE splitf* (x: REAL; VAR a, b: INTEGER): INTEGER;
Line 152... Line 190...
152
VAR
190
VAR
Line 162... Line 200...
162
END splitf;
200
END splitf;
Line 163... Line 201...
163
 
201
 
164
 
202
 
-
 
203
BEGIN
-
 
204
    eol := 0AX;
165
BEGIN
205
    maxreal := 1.9;
166
    eol := 0AX;
206
    PACK(maxreal, 1023);