Subversion Repositories Kolibri OS

Rev

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

Rev 6613 Rev 7107
Line 1... Line 1...
1
(*
1
(*
2
    Copyright 2016 Anton Krotov
2
    Copyright 2016, 2017 Anton Krotov
Line 3... Line 3...
3
 
3
 
4
    This program is free software: you can redistribute it and/or modify
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
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
6
    the Free Software Foundation, either version 3 of the License, or
Line 39... Line 39...
39
  con_exit		 : PROCEDURE [stdcall] (bCloseWindow: BOOLEAN);
39
  con_exit               : PROCEDURE [stdcall] (bCloseWindow: BOOLEAN);
40
  con_write_asciiz	 : PROCEDURE [stdcall] (string: INTEGER);
40
  con_write_asciiz       : PROCEDURE [stdcall] (string: INTEGER);
Line 41... Line 41...
41
 
41
 
Line 42... Line -...
42
  fsize, sec*, dsec*: INTEGER;
-
 
43
 
-
 
44
PROCEDURE [stdcall] sysfunc1(arg1: INTEGER): INTEGER;
-
 
45
BEGIN
-
 
46
  sys.CODE("8B4508");           (* mov     eax, [ebp + 08h] *)
-
 
47
  sys.CODE("CD40");             (* int     40h              *)
-
 
48
  sys.CODE("C9");               (* leave                    *)
-
 
49
  sys.CODE("C20400");           (* ret     04h              *)
-
 
50
  RETURN 0
-
 
51
END sysfunc1;
-
 
52
 
-
 
53
PROCEDURE [stdcall] sysfunc2(arg1, arg2: INTEGER): INTEGER;
-
 
54
BEGIN
-
 
55
  sys.CODE("53");               (* push    ebx              *)
-
 
56
  sys.CODE("8B4508");           (* mov     eax, [ebp + 08h] *)
-
 
57
  sys.CODE("8B5D0C");           (* mov     ebx, [ebp + 0Ch] *)
-
 
58
  sys.CODE("CD40");             (* int     40h              *)
-
 
59
  sys.CODE("5B");               (* pop     ebx              *)
-
 
60
  sys.CODE("C9");               (* leave                    *)
-
 
61
  sys.CODE("C20800");           (* ret     08h              *)
-
 
62
  RETURN 0
-
 
63
END sysfunc2;
-
 
64
 
-
 
65
PROCEDURE [stdcall] sysfunc3(arg1, arg2, arg3: INTEGER): INTEGER;
-
 
66
BEGIN
-
 
67
  sys.CODE("53");               (* push    ebx              *)
-
 
68
  sys.CODE("8B4508");           (* mov     eax, [ebp + 08h] *)
-
 
69
  sys.CODE("8B5D0C");           (* mov     ebx, [ebp + 0Ch] *)
-
 
70
  sys.CODE("8B4D10");           (* mov     ecx, [ebp + 10h] *)
-
 
71
  sys.CODE("CD40");             (* int     40h              *)
-
 
72
  sys.CODE("5B");               (* pop     ebx              *)
-
 
73
  sys.CODE("C9");               (* leave                    *)
-
 
74
  sys.CODE("C20C00");           (* ret     0Ch              *)
-
 
75
  RETURN 0
-
 
76
END sysfunc3;
42
  fsize, sec*, dsec*: INTEGER;
77
 
43
 
78
PROCEDURE [stdcall] sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER;
44
PROCEDURE [stdcall] sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER;
79
BEGIN
45
BEGIN
80
  sys.CODE("53");               (* push    ebx              *)
46
  sys.CODE("53");               (* push    ebx              *)
Line 120... Line 86...
120
END GetProcAdr;
86
END GetProcAdr;
Line 121... Line 87...
121
 
87
 
122
PROCEDURE Time*(VAR sec, dsec: INTEGER);
88
PROCEDURE Time*(VAR sec, dsec: INTEGER);
123
VAR t: INTEGER;
89
VAR t: INTEGER;
124
BEGIN
90
BEGIN
125
  t := sysfunc2(26, 9);
91
  t := API.sysfunc2(26, 9);
126
  sec := t DIV 100;
92
  sec := t DIV 100;
127
  dsec := t MOD 100
93
  dsec := t MOD 100
Line 128... Line 94...
128
END Time;
94
END Time;
Line 137... Line 103...
137
    sys.PUT(v, a)
103
    sys.PUT(v, a)
138
  END GetProc;
104
  END GetProc;
Line 139... Line 105...
139
 
105
 
140
BEGIN
106
BEGIN
141
  Time(sec, dsec);
107
  Time(sec, dsec);
142
  Lib := sysfunc3(68, 19, sys.ADR("/rd/1/lib/console.obj"));
108
  Lib := API.sysfunc3(68, 19, sys.ADR("/rd/1/lib/console.obj"));
143
  IF Lib # 0 THEN
109
  IF Lib # 0 THEN
144
    GetProc(sys.ADR(con_init),	       "con_init");
110
    GetProc(sys.ADR(con_init),         "con_init");
145
    GetProc(sys.ADR(con_exit),	       "con_exit");
111
    GetProc(sys.ADR(con_exit),         "con_exit");
146
    GetProc(sys.ADR(con_write_asciiz), "con_write_asciiz");
112
    GetProc(sys.ADR(con_write_asciiz), "con_write_asciiz");
Line 153... Line 119...
153
PROCEDURE ExitProcess* (n: INTEGER);
119
PROCEDURE ExitProcess* (n: INTEGER);
154
BEGIN
120
BEGIN
155
  IF con_exit # NIL THEN
121
  IF con_exit # NIL THEN
156
    con_exit(FALSE)
122
    con_exit(FALSE)
157
  END;
123
  END;
158
  n := sysfunc1(-1)
124
  API.ExitProcess(0)
159
END ExitProcess;
125
END ExitProcess;
Line 160... Line 126...
160
 
126
 
161
PROCEDURE GetCommandLine*(): INTEGER;
127
PROCEDURE GetCommandLine*(): INTEGER;
162
VAR param: INTEGER;
128
VAR param: INTEGER;
Line 171... Line 137...
171
  sys.GET(32, name)
137
  sys.GET(32, name)
172
  RETURN name
138
  RETURN name
173
END GetName;
139
END GetName;
Line 174... Line 140...
174
 
140
 
175
PROCEDURE malloc*(size: INTEGER): INTEGER;
141
PROCEDURE malloc*(size: INTEGER): INTEGER;
176
  RETURN sysfunc3(68, 12, size)
142
  RETURN API.sysfunc3(68, 12, size)
Line 177... Line 143...
177
END malloc;
143
END malloc;
178
 
144
 
179
PROCEDURE CloseFile*(hObject: INTEGER);
145
PROCEDURE CloseFile*(hObject: INTEGER);