Subversion Repositories Kolibri OS

Rev

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

Rev 7983 Rev 8097
Line 11... Line 11...
11
 
11
 
Line 12... Line 12...
12
 
12
 
13
CONST
13
CONST
Line 14... Line 14...
14
 
14
 
15
    slash* = "/";
15
    slash* = "/";
16
    OS* = "KOS";
16
    eol* = 0DX + 0AX;
Line 17... Line 17...
17
 
17
 
Line 18... Line 18...
18
    bit_depth* = RTL.bit_depth;
18
    bit_depth* = RTL.bit_depth;
Line -... Line 19...
-
 
19
    maxint* = RTL.maxint;
-
 
20
    minint* = RTL.minint;
19
    maxint* = RTL.maxint;
21
 
Line 20... Line 22...
20
    minint* = RTL.minint;
22
    MAX_PARAM = 1024;
Line 21... Line 23...
21
 
23
 
Line 50... Line 52...
50
VAR
52
VAR
Line 51... Line 53...
51
 
53
 
Line -... Line 54...
-
 
54
 
-
 
55
    Console: BOOLEAN;
52
 
56
 
53
    Console: BOOLEAN;
57
    days: DAYS;
Line 54... Line -...
54
 
-
 
55
    Params: ARRAY MAX_PARAM, 2 OF INTEGER;
-
 
56
    argc*: INTEGER;
58
 
Line 57... Line 59...
57
 
59
    Params: ARRAY MAX_PARAM, 2 OF INTEGER;
Line 271... Line 273...
271
    SYSTEM.GET(SYSTEM.ADR(fs), res)
273
    SYSTEM.GET(SYSTEM.ADR(fs), res)
272
    RETURN res
274
    RETURN res
273
END FileOpen;
275
END FileOpen;
Line -... Line 276...
-
 
276
 
-
 
277
 
-
 
278
PROCEDURE chmod* (FName: ARRAY OF CHAR);
-
 
279
END chmod;
274
 
280
 
275
 
281
 
276
PROCEDURE GetTickCount* (): INTEGER;
282
PROCEDURE GetTickCount* (): INTEGER;
Line 380... Line 386...
380
            c := GetChar(i);
386
            c := GetChar(i);
381
            IF c # 22X THEN
387
            IF c # 22X THEN
382
                s[j] := c;
388
                s[j] := c;
383
                INC(j)
389
                INC(j)
384
            END;
390
            END;
385
            INC(i);
391
            INC(i)
386
        END;
392
        END
387
    END;
393
    END;
388
    s[j] := 0X
394
    s[j] := 0X
389
END GetArg;
395
END GetArg;
Line 406... Line 412...
406
PROCEDURE isRelative* (path: ARRAY OF CHAR): BOOLEAN;
412
PROCEDURE isRelative* (path: ARRAY OF CHAR): BOOLEAN;
407
    RETURN path[0] # slash
413
    RETURN path[0] # slash
408
END isRelative;
414
END isRelative;
Line 409... Line 415...
409
 
415
 
410
 
416
 
411
PROCEDURE now* (VAR year, month, day, hour, min, sec: INTEGER);
417
PROCEDURE UnixTime* (): INTEGER;
Line 412... Line 418...
412
VAR
418
VAR
413
    date, time: INTEGER;
419
    date, time, year, month, day, hour, min, sec: INTEGER;
414
 
420
 
Line 444... Line 450...
444
    sec   := time MOD 16;
450
    sec   := time MOD 16;
445
    time  := time DIV 16;
451
    time  := time DIV 16;
446
    sec   := (time MOD 16) * 10 + sec;
452
    sec   := (time MOD 16) * 10 + sec;
447
    time  := time DIV 16;
453
    time  := time DIV 16;
Line 448... Line 454...
448
 
454
 
449
    year := year + 2000
-
 
450
END now;
-
 
Line 451... Line 455...
451
 
455
    INC(year, 2000)
452
 
-
 
453
PROCEDURE UnixTime* (): INTEGER;
456
 
Line -... Line 457...
-
 
457
    RETURN ((year - 1970) * 365 + days[month - 1, day - 1, ORD(year DIV 4 = 0)] + (year - 1969) DIV 4) * 86400 + hour * 3600 + min * 60 + sec
-
 
458
END UnixTime;
-
 
459
 
-
 
460
 
-
 
461
PROCEDURE splitf* (x: REAL; VAR a, b: INTEGER): INTEGER;
-
 
462
BEGIN
-
 
463
    SYSTEM.GET32(SYSTEM.ADR(x), a);
-
 
464
    SYSTEM.GET32(SYSTEM.ADR(x) + 4, b)
454
    RETURN 0
465
    RETURN a
455
END UnixTime;
466
END splitf;
456
 
467
 
Line 457... Line 468...
457
 
468
 
458
PROCEDURE d2s* (x: REAL): INTEGER;
-
 
459
VAR
469
PROCEDURE d2s* (x: REAL): INTEGER;
Line 460... Line 470...
460
    h, l, s, e: INTEGER;
470
VAR
461
 
471
    h, l, s, e: INTEGER;
462
BEGIN
472
 
463
    SYSTEM.GET(SYSTEM.ADR(x), l);
473
BEGIN
Line 478... Line 488...
478
        e := 1151;
488
        e := 1151;
479
        h := 0;
489
        h := 0;
480
        l := 0
490
        l := 0
481
    ELSIF e = 2047 THEN
491
    ELSIF e = 2047 THEN
482
        e := 1151;
492
        e := 1151;
483
        IF (h MOD 100000H # 0) OR (l # 0) THEN
493
        IF (h MOD 100000H # 0) OR (BITS(l) * {0..31} # {}) THEN
484
            h := 80000H;
494
            h := 80000H;
485
            l := 0
495
            l := 0
486
        END
496
        END
487
    END;
497
    END;
488
    DEC(e, 896)
498
    DEC(e, 896)
Line 489... Line 499...
489
 
499
 
490
    RETURN LSL(s, 31) + LSL(e, 23) + (h MOD 100000H) * 8 + (l DIV 20000000H) MOD 8
500
    RETURN LSL(s, 31) + LSL(e, 23) + (h MOD 100000H) * 8 + (l DIV 20000000H) MOD 8
Line 491... Line 501...
491
END d2s;
501
END d2s;
-
 
502
 
-
 
503
 
-
 
504
PROCEDURE init (VAR days: DAYS);
492
 
505
VAR
493
 
-
 
494
PROCEDURE splitf* (x: REAL; VAR a, b: INTEGER): INTEGER;
-
 
495
BEGIN
-
 
496
    SYSTEM.GET(SYSTEM.ADR(x),     a);
-
 
Line -... Line 506...
-
 
506
    i, j, n0, n1: INTEGER;
-
 
507
 
-
 
508
BEGIN
-
 
509
 
-
 
510
    FOR i := 0 TO 11 DO
-
 
511
        FOR j := 0 TO 30 DO
-
 
512
            days[i, j, 0] := 0;
-
 
513
            days[i, j, 1] := 0;
-
 
514
        END
-
 
515
    END;
-
 
516
 
-
 
517
    days[ 1, 28, 0] := -1;
-
 
518
 
-
 
519
    FOR i := 0 TO 1 DO
-
 
520
        days[ 1, 29, i] := -1;
-
 
521
        days[ 1, 30, i] := -1;
-
 
522
        days[ 3, 30, i] := -1;
-
 
523
        days[ 5, 30, i] := -1;
-
 
524
        days[ 8, 30, i] := -1;
-
 
525
        days[10, 30, i] := -1;
-
 
526
    END;
-
 
527
 
-
 
528
    n0 := 0;
-
 
529
    n1 := 0;
-
 
530
    FOR i := 0 TO 11 DO
-
 
531
        FOR j := 0 TO 30 DO
-
 
532
            IF days[i, j, 0] = 0 THEN
-
 
533
                days[i, j, 0] := n0;
-
 
534
                INC(n0)
-
 
535
            END;
-
 
536
            IF days[i, j, 1] = 0 THEN
-
 
537
                days[i, j, 1] := n1;
Line 497... Line -...
497
    SYSTEM.GET(SYSTEM.ADR(x) + 4, b)
-
 
498
    RETURN a
-
 
499
END splitf;
538
                INC(n1)
500
 
539
            END
501
 
540
        END
502
BEGIN
541
    END;
503
    eol[0] := 0DX; eol[1] := 0AX; eol[2] := 0X;
542
 
504
    maxreal := 1.9;
543
    maxreal := 1.9;
505
    PACK(maxreal, 1023);
544
    PACK(maxreal, 1023);
-
 
545
    Console := API._import;
-
 
546
    IF Console THEN
-
 
547
        con_init(-1, -1, -1, -1, SYSTEM.SADR("Oberon-07 for KolibriOS"))
-
 
548
    END;
-
 
549
    ParamParse
506
    Console := API.import;
550
END init;
507
    IF Console THEN
551