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); |