Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6613 leency 1
(*
2
    Copyright 2016 Anton Krotov
3
 
4
    This program is free software: you can redistribute it and/or modify
5
    it under the terms of the GNU Lesser General Public License as published by
6
    the Free Software Foundation, either version 3 of the License, or
7
    (at your option) any later version.
8
 
9
    This program is distributed in the hope that it will be useful,
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
    GNU Lesser General Public License for more details.
13
 
14
    You should have received a copy of the GNU Lesser General Public License
15
    along with this program.  If not, see .
16
*)
17
 
18
MODULE HOST;
19
 
20
IMPORT sys := SYSTEM, API;
21
 
22
CONST
23
 
24
  OS* = "LNX";
25
  Slash* = "/";
26
 
27
VAR
28
 
29
  fsize  : INTEGER;
30
 
31
  sec*	 : INTEGER;
32
  dsec*  : INTEGER;
33
 
34
PROCEDURE GetCommandLine* (): INTEGER;
35
  RETURN API.Param
36
END GetCommandLine;
37
 
38
PROCEDURE CloseFile* (File: INTEGER);
39
BEGIN
40
  File := API.fclose(File)
41
END CloseFile;
42
 
43
PROCEDURE FileRW* (hFile, Buffer, nNumberOfBytes: INTEGER; write: BOOLEAN): INTEGER;
44
VAR res: INTEGER;
45
BEGIN
46
  IF write THEN
47
    res := API.fwrite(Buffer, nNumberOfBytes, 1, hFile) * nNumberOfBytes
48
  ELSE
49
    res := API.fread(Buffer, nNumberOfBytes, 1, hFile) * nNumberOfBytes
50
  END
51
  RETURN res
52
END FileRW;
53
 
54
PROCEDURE OutString* (str: ARRAY OF CHAR);
55
VAR res: INTEGER;
56
BEGIN
57
  res := FileRW(API.stdout, sys.ADR(str), LENGTH(str), TRUE)
58
END OutString;
59
 
60
PROCEDURE CreateFile* (FName: ARRAY OF CHAR): INTEGER;
61
  RETURN API.fopen(sys.ADR(FName), sys.ADR("wb"))
62
END CreateFile;
63
 
64
PROCEDURE OpenFile* (FName: ARRAY OF CHAR): INTEGER;
65
VAR F, res: INTEGER;
66
BEGIN
67
  F := API.fopen(sys.ADR(FName), sys.ADR("rb"));
68
  IF F # 0 THEN
69
    res   := API.fseek(F, 0, 2);
70
    fsize := API.ftell(F);
71
    res   := API.fseek(F, 0, 0)
72
  END
73
  RETURN F
74
END OpenFile;
75
 
76
PROCEDURE FileSize* (F: INTEGER): INTEGER;
77
  RETURN fsize
78
END FileSize;
79
 
80
PROCEDURE Align(n, m: INTEGER): INTEGER;
81
  RETURN n + (m - n MOD m) MOD m
82
END Align;
83
 
84
PROCEDURE malloc* (Bytes: INTEGER): INTEGER;
85
VAR res: INTEGER;
86
BEGIN
87
  Bytes := Align(Bytes, 4);
88
  res := API.malloc(Bytes);
89
  IF res # 0 THEN
90
    API.zeromem(ASR(Bytes, 2), res)
91
  END
92
  RETURN res
93
END malloc;
94
 
95
PROCEDURE ExitProcess* (code: INTEGER);
96
BEGIN
97
  API.exit(code)
98
END ExitProcess;
99
 
100
PROCEDURE Time* (VAR sec, dsec: INTEGER);
101
VAR tp: API.TP;
102
BEGIN
103
  IF API.clock_gettime(0, tp) = 0 THEN
104
    sec := tp[0];
105
    dsec := tp[1] DIV 10000000
106
  ELSE
107
    sec := 0;
108
    dsec := 0
109
  END
110
END Time;
111
 
112
PROCEDURE init*;
113
BEGIN
114
  Time(sec, dsec)
115
END init;
116
 
117
PROCEDURE GetName*(): INTEGER;
118
  RETURN 0
119
END GetName;
120
 
121
END HOST.