Subversion Repositories Kolibri OS

Rev

Rev 7209 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7209 Rev 7597
1
Êîìïèëÿòîð ÿçûêà ïðîãðàììèðîâàíèÿ Oberon-07/11 äëÿ i386
1
Êîìïèëÿòîð ÿçûêà ïðîãðàììèðîâàíèÿ Oberon-07/16 äëÿ i486
2
		Windows/Linux/KolibriOS.
2
                Windows/Linux/KolibriOS.
3
------------------------------------------------------------------------------
3
------------------------------------------------------------------------------
4
 
4
 
5
	Ñîñòàâ ïðîãðàììû
-
 
6
 
5
        Ïàðàìåòðû êîìàíäíîé ñòðîêè
7
1.	Compiler.kex (KolibriOS) - èñïîëíÿåìûé ôàéë êîìïèëÿòîðà.
6
 
8
	Âõîä - òåêñòîâûå ôàéëû ìîäóëåé ñ ðàñøèðåíèåì ".ob07", êîäèðîâêà ANSI
7
  Âõîä - òåêñòîâûå ôàéëû ìîäóëåé ñ ðàñøèðåíèåì ".ob07", êîäèðîâêà ANSI èëè
9
	èëè UTF-8 ñ BOM-ñèãíàòóðîé.
8
UTF-8 ñ BOM-ñèãíàòóðîé.
10
	Âûõîä - èñïîëíÿåìûé ôàéë ôîðìàòà PE, ELF èëè MENUET01/MS COFF.
9
  Âûõîä - èñïîíÿåìûé ôàéë ôîðìàòà PE32, ELF èëè MENUET01/MSCOFF.
-
 
10
  Ïàðàìåòðû:
11
	Ïàðàìåòðû:
11
  1) èìÿ ãëàâíîãî ìîäóëÿ
12
	1) èìÿ ãëàâíîãî ìîäóëÿ
12
  2) èìÿ ðåçóëüòèðóþùåãî ôàéëà
13
	2) òèï ïðèëîæåíèÿ è ïëàòôîðìà
13
  3) òèï ïðèëîæåíèÿ è ïëàòôîðìà
14
		"con" - Windows console
14
      "console" - Windows console
15
		"gui" - Windows GUI
-
 
16
		"dll" - Windows DLL
15
      "gui" - Windows GUI
17
		"elf" - Linux
16
      "dll" - Windows DLL
-
 
17
      "kos" - KolibriOS
18
		"kos" - KolibriOS
18
      "obj" - KolibriOS DLL
19
		"obj" - KolibriOS DLL
19
      "elfexe" - Linux ELF-EXEC
20
		"kem" - KolibriOS ñ àäðåñîì çàãðóçêè 0x10000 äëÿ âîçìîæíîãî
20
  4) íåîáÿçàòåëüíûå ïàðàìåòðû-êëþ÷è
-
 
21
      -stk  ðàçìåð ñòýêà â ìåãàáàéòàõ (ïî óìîë÷àíèþ 2 Ìá)
21
			èñïîëíåíèÿ â ýìóëÿòîðå
22
      -base 
àäðåñ çàãðóçêè èñïîëíÿåìîãî ôàéëà â êèëîáàéòàõ
-
 
23
      -ver  âåðñèÿ ïðîãðàììû (òîëüêî äëÿ obj)
22
	3) ðàçìåð ñòýêà â ìåãàáàéòàõ, íåîáÿçàòåëüíûé ïàðàìåòð, ïî óìîë÷àíèþ -
24
      -nochk <"ptibcwra"> îòêëþ÷èòü ïðîâåðêè ïðè âûïîëíåíèè (ñì. íèæå)
-
 
25
 
-
 
26
      ïàðàìåòð -nochk çàäàåòñÿ â âèäå ñòðîêè èç ñèìâîëîâ:
-
 
27
      "p" - óêàçàòåëè
-
 
28
      "t" - òèïû
-
 
29
      "i" - èíäåêñû
23
	1 Ìá, äëÿ ELF èãíîðèðóåòñÿ. Åñëè 2-é ïàðàìåòð = "obj" (KolibriOS DLL),
30
      "b" - íåÿâíîå ïðèâåäåíèå INTEGER ê BYTE
24
	òî 3-é ïàðàìåòð çàäàåòñÿ øåñòíàäöàòèðè÷íûì ÷èñëîì
31
      "c" - äèàïàçîí àðãóìåíòà ôóíêöèè CHR
-
 
32
      "w" - äèàïàçîí àðãóìåíòà ôóíêöèè WCHR
-
 
33
      "r" - ýêâèâàëåíòíî "bcw"
-
 
34
      "a" - âñå ïðîâåðêè
-
 
35
 
-
 
36
      Ïîðÿäîê ñèìâîëîâ ìîæåò áûòü ëþáûì. Íàëè÷èå â ñòðîêå òîãî èëè èíîãî
-
 
37
      ñèìâîëà îòêëþ÷àåò ñîîòâåòñòâóþùóþ ïðîâåðêó.
-
 
38
 
-
 
39
      Íàïðèìåð: -nochk it - îòêëþ÷èòü ïðîâåðêó èíäåêñîâ è îõðàíó òèïà.
25
	(0x00000001 .. 0xffffffff) è îïðåäåëÿåò âåðñèþ ïðîãðàììû,
40
      -nochk a - îòêëþ÷èòü âñå îòêëþ÷àåìûå ïðîâåðêè.
-
 
41
 
-
 
42
  Íàïðèìåð:
26
	ïî óìîë÷àíèþ - 0x00010000 (v1.0).
43
 
27
	Íàïðèìåð:
44
  Compiler.exe "C:\example.ob07" "C:\example.exe" console -stk 1
-
 
45
  Compiler.exe "C:\example.ob07" "C:\example.dll" dll
-
 
46
  Compiler.exe "C:\example.ob07" "C:\example.exe" gui -stk 4
-
 
47
  Compiler.exe "C:\example.ob07" "C:\example.exe" console -nochk pti
-
 
48
  Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.kex" kos -stk 2
-
 
49
  Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.obj" obj -ver 2.7
28
		"C:\oberon-07\example.ob07" con 1
50
  Compiler.exe "C:\example.ob07" "C:\example" elfexe
29
		"C:\oberon-07\example.ob07" obj 0x00020005 (* v2.5 *)
51
 
30
	 ñëó÷àå óñïåøíîé êîìïèëÿöèè, êîìïèëÿòîð ïåðåäàåò êîä çàâåðøåíèÿ 0,
-
 
31
	èíà÷å 1. Ïðè ðàáîòå êîìïèëÿòîðà â KolibriOS, êîä çàâåðøåíèÿ íå
-
 
32
	ïåðåäàåòñÿ. Ñîîáùåíèÿ êîìïèëÿòîðà âûâîäÿòñÿ íà êîíñîëü (Windows,
-
 
33
	KolibriOS), â òåðìèíàë (Linux).
52
   ñëó÷àå óñïåøíîé êîìïèëÿöèè, êîìïèëÿòîð ïåðåäàåò êîä çàâåðøåíèÿ 0, èíà÷å 1.
34
2.	Ïàïêà Lib - áèáëèîòåêà ìîäóëåé
53
Ïðè ðàáîòå êîìïèëÿòîðà â KolibriOS, êîä çàâåðøåíèÿ íå ïåðåäàåòñÿ.
35
 
54
 
36
------------------------------------------------------------------------------
55
------------------------------------------------------------------------------
37
	Îòëè÷èÿ îò îðèãèíàëà
56
        Îòëè÷èÿ îò îðèãèíàëà
38
 
57
 
39
1.	Ðàñøèðåí ïñåâäîìîäóëü SYSTEM
58
1.      Ðàñøèðåí ïñåâäîìîäóëü SYSTEM
40
2.	Ðàçðåøåí ñèìâîë "_" â èäåíòèôèêàòîðàõ
59
2.      Â èäåíòèôèêàòîðàõ äîïóñêàåòñÿ ñèìâîë "_"
41
3.	Äîáàâëåíû ñèñòåìíûå ôëàãè
60
3.      Äîáàâëåíû ñèñòåìíûå ôëàãè
42
4.	Îïåðàòîð CASE ðåàëèçîâàí â ñîîòâåòñòâèè ñ ñèíòàêñèñîì è ñåìàíòèêîé
61
4.      Óñîâåðøåíñòâîâàí îïåðàòîð CASE (äîáàâëåíû êîíñòàíòíûå âûðàæåíèÿ â
43
	äàííîãî îïåðàòîðà â ÿçûêå Oberon (Revision 1.10.90)
62
        ìåòêàõ âàðèàíòîâ è íåîáÿçàòåëüíàÿ âåòêà ELSE)
44
5.	Ðàñøèðåí íàáîð ñòàíäàðòíûõ ïðîöåäóð
63
5.      Ðàñøèðåí íàáîð ñòàíäàðòíûõ ïðîöåäóð
45
6.	Ñåìàíòèêà îõðàíû/ïðîâåðêè òèïà óòî÷íåíà äëÿ íóëåâîãî óêàçàòåëÿ
64
6.      Ñåìàíòèêà îõðàíû/ïðîâåðêè òèïà óòî÷íåíà äëÿ íóëåâîãî óêàçàòåëÿ
46
7.	Ñåìàíòèêà DIV è MOD óòî÷íåíà äëÿ îòðèöàòåëüíûõ ÷èñåë
65
7.      Ñåìàíòèêà DIV è MOD óòî÷íåíà äëÿ îòðèöàòåëüíûõ ÷èñåë
47
8.	Äîáàâëåíû îäíîñòðî÷íûå êîììåíòàðèè (íà÷èíàþòñÿ ñ ïàðû ñèìâîëîâ "//")
66
8.      Äîáàâëåíû îäíîñòðî÷íûå êîììåíòàðèè (íà÷èíàþòñÿ ñ ïàðû ñèìâîëîâ "//")
-
 
67
9.      Ðàçðåøåíî íàñëåäîâàíèå îò òèïà-óêàçàòåëÿ
48
9.	Ðàçðåøåí ýêñïîðò ïåðåìåííûõ òèïîâ ARRAY è RECORD (òîëüêî äëÿ ÷òåíèÿ)
68
10.     Äîáàâëåí ñèíòàêñèñ äëÿ èìïîðòà ïðîöåäóð èç âíåøíèõ áèáëèîòåê
49
10.	Ðàçðåøåíî íàñëåäîâàíèå îò òèïà-óêàçàòåëÿ
69
11.     "Ñòðîêè" ìîæíî çàêëþ÷àòü òàêæå â îäèíî÷íûå êàâû÷êè: 'ñòðîêà'
50
11.	Äîáàâëåíû ïñåâäîíèìû òèïîâ (TYPE A = B)
70
12.     Äîáàâëåí òèï WCHAR
51
 
71
 
52
------------------------------------------------------------------------------
72
------------------------------------------------------------------------------
53
	Îñîáåííîñòè ðåàëèçàöèè
73
        Îñîáåííîñòè ðåàëèçàöèè
54
 
74
 
55
1.	Îñíîâíûå òèïû
75
1.      Îñíîâíûå òèïû
56
 
76
 
57
	  Òèï		   Äèàïàçîí çíà÷åíèé		   Ðàçìåð, áàéò
77
          Òèï              Äèàïàçîí çíà÷åíèé               Ðàçìåð, áàéò
58
 
78
 
59
	INTEGER       -2147483648 .. 2147483647 		4
79
        INTEGER       -2147483648 .. 2147483647                 4
60
	REAL	      1.40E-45 .. 3.34E+38			4
-
 
61
	LONGREAL      4.94E-324 .. 1.70E+308			8
80
        REAL          4.94E-324 .. 1.70E+308                    8
62
	CHAR	      ñèìâîë ASCII (0X .. 0FFX) 		1
81
        CHAR          ñèìâîë ASCII (0X .. 0FFX)                 1
63
	BOOLEAN       FALSE, TRUE				1
82
        BOOLEAN       FALSE, TRUE                               1
64
	SET	      ìíîæåñòâî èç öåëûõ ÷èñåë {0 .. 31}	4
83
        SET           ìíîæåñòâî èç öåëûõ ÷èñåë {0 .. 31}        4
-
 
84
        BYTE          0 .. 255                                  1
-
 
85
        WCHAR         ñèìâîë þíèêîäà (0X .. 0FFFFX)             2
65
 
86
 
66
2.	Ìàêñèìàëüíàÿ äëèíà èäåíòèôèêàòîðîâ - 255 ñèìâîëîâ
87
2.      Ìàêñèìàëüíàÿ äëèíà èäåíòèôèêàòîðîâ - 1024 ñèìâîëîâ
67
3.	Ìàêñèìàëüíàÿ äëèíà ñòðîêîâûõ êîíñòàíò - 255 ñèìâîëîâ
-
 
68
4.	Ìàêñèìàëüíàÿ äëèíà ñòðîê èñõîäíîãî êîäà - 511 ñèìâîëîâ
88
3.      Ìàêñèìàëüíàÿ äëèíà ñòðîêîâûõ êîíñòàíò - 1024 ñèìâîëîâ (UTF-8)
69
5.	Ìàêñèìàëüíàÿ ðàçìåðíîñòü îòêðûòûõ ìàññèâîâ - 5
-
 
70
6.	Ìàêñèìàëüíîå êîëè÷åñòâî îáúÿâëåííûõ òèïîâ-çàïèñåé - 2047
89
4.      Ìàêñèìàëüíàÿ ðàçìåðíîñòü îòêðûòûõ ìàññèâîâ - 5
71
7.	Ïðîöåäóðà NEW çàïîëíÿåò íóëÿìè âûäåëåííûé áëîê ïàìÿòè
90
5.      Ïðîöåäóðà NEW çàïîëíÿåò íóëÿìè âûäåëåííûé áëîê ïàìÿòè
72
8.	Ãëîáàëüíûå è ëîêàëüíûå ïåðåìåííûå èíèöèàëèçèðóþòñÿ íóëÿìè
91
6.      Ãëîáàëüíûå è ëîêàëüíûå ïåðåìåííûå èíèöèàëèçèðóþòñÿ íóëÿìè
73
9.	 îòëè÷èå îò ìíîãèõ Oberon-ðåàëèçàöèé, ñáîðùèê ìóñîðà è äèíàìè÷åñêàÿ
92
7.       îòëè÷èå îò ìíîãèõ Oberon-ðåàëèçàöèé, ñáîðùèê ìóñîðà è äèíàìè÷åñêàÿ
-
 
93
        ìîäóëüíîñòü îòñóòñòâóþò
-
 
94
8.      Òèï BYTE â âûðàæåíèÿõ âñåãäà ïðèâîäèòñÿ ê INTEGER
-
 
95
9.      Êîíòðîëü ïåðåïîëíåíèÿ çíà÷åíèé âûðàæåíèé íå ïðîèçâîäèòñÿ
-
 
96
10.     Îøèáêè âðåìåíè âûïîëíåíèÿ:
-
 
97
 
-
 
98
        - ASSERT(x), ïðè x = FALSE
-
 
99
        - ðàçûìåíîâàíèå íóëåâîãî óêàçàòåëÿ
-
 
100
        - öåëî÷èñëåííîå äåëåíèå íà 0
-
 
101
        - âûçîâ ïðîöåäóðû ÷åðåç ïðîöåäóðíóþ ïåðåìåííóþ ñ íóëåâûì çíà÷åíèåì
-
 
102
        - îøèáêà îõðàíû òèïà
-
 
103
        - íàðóøåíèå ãðàíèö ìàññèâà
-
 
104
        - íåïðåäóñìîòðåííîå çíà÷åíèå âûðàæåíèÿ â îïåðàòîðå CASE
-
 
105
        - îøèáêà êîïèðîâàíèÿ ìàññèâîâ v := x, åñëè LEN(v) < LEN(x)
-
 
106
        - íåÿâíîå ïðèâåäåíèå x:INTEGER ê v:BYTE, åñëè (x < 0) OR (x > 255)
-
 
107
        - CHR(x), åñëè (x < 0) OR (x > 255)
74
	ìîäóëüíîñòü îòñóòñòâóþò
108
        - WCHR(x), åñëè (x < 0) OR (x > 65535)
75
 
109
 
76
------------------------------------------------------------------------------
110
------------------------------------------------------------------------------
77
	Ïñåâäîìîäóëü SYSTEM
111
        Ïñåâäîìîäóëü SYSTEM
78
 
112
 
79
  Ïñåâäîìîäóëü SYSTEM ñîäåðæèò íèçêîóðîâíåâûå è íåáåçîïàñíûå ïðîöåäóðû,
113
  Ïñåâäîìîäóëü SYSTEM ñîäåðæèò íèçêîóðîâíåâûå è íåáåçîïàñíûå ïðîöåäóðû,
80
îøèáêè ïðè èñïîëüçîâàíèè ïðîöåäóð ïñåâäîìîäóëÿ SYSTEM ìîãóò ïðèâåñòè ê
114
îøèáêè ïðè èñïîëüçîâàíèè ïðîöåäóð ïñåâäîìîäóëÿ SYSTEM ìîãóò ïðèâåñòè ê
81
ïîâðåæäåíèþ äàííûõ âðåìåíè âûïîëíåíèÿ è àâàðèéíîìó çàâåðøåíèþ ïðîãðàììû.
115
ïîâðåæäåíèþ äàííûõ âðåìåíè âûïîëíåíèÿ è àâàðèéíîìó çàâåðøåíèþ ïðîãðàììû.
82
 
116
 
83
	PROCEDURE ADR(v: ëþáîé òèï): INTEGER
117
        PROCEDURE ADR(v: ëþáîé òèï): INTEGER
84
		v - ïåðåìåííàÿ, ïðîöåäóðà èëè ñòðîêîâàÿ êîíñòàíòà;
118
                v - ïåðåìåííàÿ èëè ïðîöåäóðà;
85
		âîçâðàùàåò àäðåñ v
119
                âîçâðàùàåò àäðåñ v
-
 
120
 
-
 
121
        PROCEDURE SADR(x: ñòðîêîâàÿ êîíñòàíòà (CHAR UTF-8)): INTEGER
-
 
122
                âîçâðàùàåò àäðåñ x
-
 
123
 
-
 
124
        PROCEDURE WSADR(x: ñòðîêîâàÿ êîíñòàíòà (WCHAR)): INTEGER
-
 
125
                âîçâðàùàåò àäðåñ x
86
 
126
 
87
	PROCEDURE SIZE(T): INTEGER
127
        PROCEDURE SIZE(T): INTEGER
88
		âîçâðàùàåò ðàçìåð òèïà T
128
                âîçâðàùàåò ðàçìåð òèïà T
89
 
129
 
90
	PROCEDURE TYPEID(T): INTEGER
130
        PROCEDURE TYPEID(T): INTEGER
91
		T - òèï-çàïèñü èëè òèï-óêàçàòåëü,
131
                T - òèï-çàïèñü èëè òèï-óêàçàòåëü,
92
		âîçâðàùàåò íîìåð òèïà â òàáëèöå òèïîâ-çàïèñåé
132
                âîçâðàùàåò íîìåð òèïà â òàáëèöå òèïîâ-çàïèñåé
93
 
133
 
94
	PROCEDURE INF(T): T
-
 
95
		T - REAL èëè LONGREAL,
134
        PROCEDURE INF(): REAL
96
		âîçâðàùàåò ñïåöèàëüíîå âåùåñòâåííîå çíà÷åíèå "áåñêîíå÷íîñòü"
135
                âîçâðàùàåò ñïåöèàëüíîå âåùåñòâåííîå çíà÷åíèå "áåñêîíå÷íîñòü"
97
 
136
 
98
	PROCEDURE GET(a: INTEGER;
137
        PROCEDURE GET(a: INTEGER;
99
		VAR v: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
138
                VAR v: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
100
		v := Ïàìÿòü[a]
139
                v := Ïàìÿòü[a]
101
 
140
 
102
	PROCEDURE PUT(a: INTEGER; x: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
141
        PROCEDURE PUT(a: INTEGER; x: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
103
		Ïàìÿòü[a] := x
142
                Ïàìÿòü[a] := x;
-
 
143
                Åñëè x: BYTE èëè x: WCHAR, òî çíà÷åíèå x áóäåò ðàñøèðåíî
-
 
144
                äî 32 áèò, äëÿ çàïèñè áàéòîâ èñïîëüçîâàòü SYSTEM.PUT8,
-
 
145
                äëÿ WCHAR -- SYSTEM.PUT16
-
 
146
 
-
 
147
        PROCEDURE PUT8(a: INTEGER; x: INTEGER, BYTE, CHAR, WCHAR)
-
 
148
                Ïàìÿòü[a] := ìëàäøèå 8 áèò (x)
-
 
149
 
-
 
150
        PROCEDURE PUT16(a: INTEGER; x: INTEGER, BYTE, CHAR, WCHAR)
-
 
151
                Ïàìÿòü[a] := ìëàäøèå 16 áèò (x)
104
 
152
 
105
	PROCEDURE MOVE(Source, Dest, n: INTEGER)
153
        PROCEDURE MOVE(Source, Dest, n: INTEGER)
106
		Êîïèðóåò n áàéò ïàìÿòè èç Source â Dest,
154
                Êîïèðóåò n áàéò ïàìÿòè èç Source â Dest,
107
		îáëàñòè Source è Dest íå äîëæíû ïåðåêðûâàòüñÿ
155
                îáëàñòè Source è Dest íå ìîãóò ïåðåêðûâàòüñÿ
108
 
156
 
109
	PROCEDURE COPY(VAR Source: ëþáîé òèï; VAR Dest: ëþáîé òèï; n: INTEGER)
157
        PROCEDURE COPY(VAR Source: ëþáîé òèï; VAR Dest: ëþáîé òèï; n: INTEGER)
110
		Êîïèðóåò n áàéò ïàìÿòè èç Source â Dest.
158
                Êîïèðóåò n áàéò ïàìÿòè èç Source â Dest.
111
		Ýêâèâàëåíòíî
159
                Ýêâèâàëåíòíî
112
		SYSTEM.MOVE(SYSTEM.ADR(Source), SYSTEM.ADR(Dest), n)
160
                SYSTEM.MOVE(SYSTEM.ADR(Source), SYSTEM.ADR(Dest), n)
113
 
161
 
114
	PROCEDURE CODE(s: ARRAY OF CHAR)
162
        PROCEDURE CODE(byte1, byte2,... : INTEGER)
115
		Âñòàâêà ìàøèííîãî êîäà
163
                Âñòàâêà ìàøèííîãî êîäà,
116
		s - ñòðîêîâàÿ êîíñòàíòà øåñòíàäöàòèðè÷íûõ öèôð
164
                byte1, byte2 ... - êîíñòàíòû â äèàïàçîíå 0..255,
117
		êîëè÷åñòâî öèôð äîëæíî áûòü ÷åòíûì
165
                íàïðèìåð:
118
		íàïðèìåð: SYSTEM.CODE("B801000000") (* mov eax, 1 *)
166
                SYSTEM.CODE(08BH, 045H, 008H) (* mov eax, dword [ebp + 08h] *)
119
 
167
 
120
  Òàêæå â ìîäóëå SYSTEM îïðåäåëåí òèï CARD16 (2 áàéòà). Äëÿ òèïà CARD16 íå
168
  Òàêæå â ìîäóëå SYSTEM îïðåäåëåí òèï CARD16 (2 áàéòà). Äëÿ òèïà CARD16 íå
121
äîïóñêàþòñÿ íèêàêèå ÿâíûå îïåðàöèè, çà èñêëþ÷åíèåì ïðèñâàèâàíèÿ.
169
äîïóñêàþòñÿ íèêàêèå ÿâíûå îïåðàöèè, çà èñêëþ÷åíèåì ïðèñâàèâàíèÿ.
122
Ïðåîáðàçîâàíèÿ CARD16 -> INTEGER è INTEGER -> CARD16 ìîãóò áûòü ðåàëèçîâàíû
170
Ïðåîáðàçîâàíèÿ CARD16 -> INTEGER è INTEGER -> CARD16 ìîãóò áûòü ðåàëèçîâàíû
123
òàê:
171
òàê:
124
 
172
 
125
	PROCEDURE Card16ToInt(w: SYSTEM.CARD16): INTEGER;
173
        PROCEDURE Card16ToInt (w: SYSTEM.CARD16): INTEGER;
126
	VAR i: INTEGER;
174
        VAR i: INTEGER;
127
	BEGIN
175
        BEGIN
128
	  SYSTEM.PUT(SYSTEM.ADR(i), w)
176
            SYSTEM.PUT(SYSTEM.ADR(i), w)
129
	  RETURN i
177
            RETURN i
130
	END Card16ToInt;
178
        END Card16ToInt;
131
 
179
 
132
	PROCEDURE IntToCard16(i: INTEGER): SYSTEM.CARD16;
180
        PROCEDURE IntToCard16 (i: INTEGER): SYSTEM.CARD16;
133
	VAR w: SYSTEM.CARD16;
181
        VAR w: SYSTEM.CARD16;
134
	BEGIN
182
        BEGIN
135
	  SYSTEM.GET(SYSTEM.ADR(i), w)
183
            SYSTEM.GET(SYSTEM.ADR(i), w)
136
	  RETURN w
184
            RETURN w
137
	END IntToCard16;
185
        END IntToCard16;
138
 
186
 
139
  Ôóíêöèè ïñåâäîìîäóëÿ SYSTEM íåëüçÿ èñïîëüçîâàòü â êîíñòàíòíûõ âûðàæåíèÿõ.
187
  Ôóíêöèè ïñåâäîìîäóëÿ SYSTEM íåëüçÿ èñïîëüçîâàòü â êîíñòàíòíûõ âûðàæåíèÿõ.
140
 
188
 
141
------------------------------------------------------------------------------
189
------------------------------------------------------------------------------
142
	Ñèñòåìíûå ôëàãè
190
        Ñèñòåìíûå ôëàãè
143
 
191
 
144
  Ïðè îáúÿâëåíèè ïðîöåäóðíûõ òèïîâ è ãëîáàëüíûõ ïðîöåäóð, ïîñëå êëþ÷åâîãî
192
  Ïðè îáúÿâëåíèè ïðîöåäóðíûõ òèïîâ è ãëîáàëüíûõ ïðîöåäóð, ïîñëå êëþ÷åâîãî
145
ñëîâà PROCEDURE ìîæåò áûòü óêàçàí ôëàã ñîãëàøåíèÿ âûçîâà: [stdcall], [cdecl]
193
ñëîâà PROCEDURE ìîæåò áûòü óêàçàí ôëàã ñîãëàøåíèÿ î âûçîâå: [stdcall],
146
èëè [winapi]. Íàïðèìåð:
194
[ccall], [ccall16], [windows], [linux]. Íàïðèìåð:
147
 
195
 
-
 
196
        PROCEDURE [ccall] MyProc (x, y, z: INTEGER): INTEGER;
-
 
197
 
-
 
198
  Åñëè óêàçàí ôëàã [ccall16], òî ïðèíèìàåòñÿ ñîãëàøåíèå ccall, íî ïåðåä
-
 
199
âûçîâîì óêàçàòåëü ñòýêà áóäåò âûðàâíåí ïî ãðàíèöå 16 áàéò.
-
 
200
  Ôëàã [windows] - ñèíîíèì äëÿ [stdcall], [linux] - ñèíîíèì äëÿ [ccall16].
-
 
201
  Çíàê "-" ïîñëå èìåíè ôëàãà ([stdcall-], [linux-], ...) îçíà÷àåò, ÷òî
148
	PROCEDURE [cdecl] MyProc(x, y, z: INTEGER): INTEGER;
-
 
149
 
-
 
150
  Åñëè óêàçàí ôëàã [winapi], òî ïðèíèìàåòñÿ ñîãëàøåíèå stdcall è
-
 
151
ïðîöåäóðó-ôóíêöèþ ìîæíî âûçâàòü êàê ñîáñòâåííî ïðîöåäóðó, âíå âûðàæåíèÿ.
202
ðåçóëüòàò ïðîöåäóðû ìîæíî èãíîðèðîâàòü (íå äîïóñêàåòñÿ äëÿ òèïà REAL).
152
Ôëàã [winapi] äîñòóïåí òîëüêî äëÿ ïëàòôîðìû Windows.
203
 
153
  Ïðè îáúÿâëåíèè òèïîâ-çàïèñåé, ïîñëå êëþ÷åâîãî ñëîâà RECORD ìîæåò áûòü
-
 
154
óêàçàí ôëàã [noalign] èëè [union]. Ôëàã [noalign] îçíà÷àåò îòñóòñòâèå
-
 
155
âûðàâíèâàíèÿ ïîëåé çàïèñè, à ôëàã [union] îçíà÷àåò, ÷òî ñìåùåíèÿ âñåõ ïîëåé
-
 
156
çàïèñè ðàâíû íóëþ, ïðè ýòîì ðàçìåð çàïèñè ðàâåí ðàçìåðó íàèáîëüøåãî ïîëÿ.
204
  Ïðè îáúÿâëåíèè òèïîâ-çàïèñåé, ïîñëå êëþ÷åâîãî ñëîâà RECORD ìîæåò áûòü
157
Çàïèñè RECORD [union] ... END ñîîòâåòñòâóþò îáúåäèíåíèÿì (union) â ÿçûêå C.
205
óêàçàí ôëàã [noalign]. Ôëàã [noalign] îçíà÷àåò îòñóòñòâèå âûðàâíèâàíèÿ ïîëåé
158
Çàïèñè ñ ñèñòåìíûìè ôëàãàìè íå ìîãóò èìåòü áàçîâîãî òèïà è íå ìîãóò áûòü
206
çàïèñè. Çàïèñè ñ ñèñòåìíûì ôëàãîì íå ìîãóò èìåòü áàçîâûé òèï è íå ìîãóò áûòü
159
áàçîâûìè òèïàìè äëÿ äðóãèõ çàïèñåé.
207
áàçîâûìè òèïàìè äëÿ äðóãèõ çàïèñåé.
160
  Äëÿ èñïîëüçîâàíèÿ ñèñòåìíûõ ôëàãîâ, òðåáóåòñÿ èìïîðòèðîâàòü SYSTEM.
208
  Äëÿ èñïîëüçîâàíèÿ ñèñòåìíûõ ôëàãîâ, òðåáóåòñÿ èìïîðòèðîâàòü SYSTEM.
161
 
209
 
162
------------------------------------------------------------------------------
210
------------------------------------------------------------------------------
163
	Îïåðàòîð CASE
211
        Îïåðàòîð CASE
164
 
212
 
165
  Ñèíòàêñèñ îïåðàòîðà CASE:
213
  Ñèíòàêñèñ îïåðàòîðà CASE:
166
 
214
 
167
	CaseStatement =
215
        CaseStatement =
168
		CASE Expression OF Ñase {"|" Ñase}
216
                CASE Expression OF Ñase {"|" Ñase}
169
			[ELSE StatementSequence] END.
217
                        [ELSE StatementSequence] END.
170
	Case = [CaseLabelList ":" StatementSequence].
218
        Case = [CaseLabelList ":" StatementSequence].
171
	CaseLabelList = CaseLabels {"," CaseLabels}.
219
        CaseLabelList = CaseLabels {"," CaseLabels}.
172
	CaseLabels = ConstExpression [".." ConstExpression].
220
        CaseLabels = ConstExpression [".." ConstExpression].
173
 
221
 
174
  Íàïðèìåð:
222
  Íàïðèìåð:
175
 
223
 
176
	CASE x OF
224
        CASE x OF
177
	|-1:	DoSomething1
225
        |-1:    DoSomething1
178
	| 1:	DoSomething2
226
        | 1:    DoSomething2
179
	| 0:	DoSomething3
227
        | 0:    DoSomething3
180
	ELSE
228
        ELSE
181
		DoSomething4
229
                DoSomething4
182
	END
230
        END
183
 
231
 
184
  Â ìåòêàõ âàðèàíòîâ ìîæíî èñïîëüçîâàòü êîíñòàíòíûå âûðàæåíèÿ, âåòêà ELSE
232
  Â ìåòêàõ âàðèàíòîâ ìîæíî èñïîëüçîâàòü êîíñòàíòíûå âûðàæåíèÿ, âåòêà ELSE
185
íåîáÿçàòåëüíà. Åñëè íå âûïîëíåí íè îäèí âàðèàíò è ELSE îòñóòñòâóåò, òî
233
íåîáÿçàòåëüíà. Åñëè çíà÷åíèå x íå ñîîòâåòñòâóåò íè îäíîìó âàðèàíòó è ELSE
186
ïðîãðàììà ïðåðûâàåòñÿ ñ îøèáêîé âðåìåíè âûïîëíåíèÿ.
234
îòñóòñòâóåò, òî ïðîãðàììà ïðåðûâàåòñÿ ñ îøèáêîé âðåìåíè âûïîëíåíèÿ.
-
 
235
 
-
 
236
------------------------------------------------------------------------------
-
 
237
        Òèï WCHAR
-
 
238
 
-
 
239
  Òèï WCHAR äîáàâëåí â ÿçûê äëÿ óäîáíîé ïîääåæêè þíèêîäà. Äëÿ òèïîâ WCHAR è
-
 
240
ARRAY OF WCHAR äîïóñêàþòñÿ âñå òå æå îïåðàöèè, êàê äëÿ òèïîâ CHAR è
-
 
241
ARRAY OF CHAR, çà èñêëþ÷åíèåì âñòðîåííîé ïðîöåäóðû CHR, êîòîðàÿ âîçâðàùàåò
-
 
242
òîëüêî òèï CHAR. Äëÿ ïîëó÷åíèÿ çíà÷åíèÿ òèïà WCHAR, ñëåäóåò èñïîëüçîâàòü
-
 
243
ïðîöåäóðó WCHR âìåñòî CHR. Äëÿ ïðàâèëüíîé ðàáîòû ñ òèïîì, íåîáõîäèìî ñîõðàíÿòü
-
 
244
èñõîäíûé êîä â êîäèðîâêå UTF-8 c BOM.
187
 
245
 
188
------------------------------------------------------------------------------
246
------------------------------------------------------------------------------
189
	Ïðîâåðêà è îõðàíà òèïà íóëåâîãî óêàçàòåëÿ
247
        Ïðîâåðêà è îõðàíà òèïà íóëåâîãî óêàçàòåëÿ
190
 
248
 
191
  Îðèãèíàëüíîå ñîîáùåíèå î ÿçûêå íå îïðåäåëÿåò ïîâåäåíèå ïðîãðàììû ïðè
249
  Îðèãèíàëüíîå ñîîáùåíèå î ÿçûêå íå îïðåäåëÿåò ïîâåäåíèå ïðîãðàììû ïðè
192
âûïîëíåíèè îõðàíû p(T) è ïðîâåðêè òèïà p IS T ïðè p = NIL. Âî ìíîãèõ
250
âûïîëíåíèè îõðàíû p(T) è ïðîâåðêè òèïà p IS T ïðè p = NIL. Âî ìíîãèõ
193
Oberon-ðåàëèçàöèÿõ âûïîëíåíèå òàêîé îïåðàöèè ïðèâîäèò ê îøèáêå âðåìåíè
251
Oberon-ðåàëèçàöèÿõ âûïîëíåíèå òàêîé îïåðàöèè ïðèâîäèò ê îøèáêå âðåìåíè
194
âûïîëíåíèÿ. Â äàííîé ðåàëèçàöèè îõðàíà òèïà íóëåâîãî óêàçàòåëÿ íå ïðèâîäèò ê
252
âûïîëíåíèÿ. Â äàííîé ðåàëèçàöèè îõðàíà òèïà íóëåâîãî óêàçàòåëÿ íå ïðèâîäèò ê
195
îøèáêå, à ïðîâåðêà òèïà äàåò ðåçóëüòàò FALSE.  ðÿäå ñëó÷àåâ ýòî ïîçâîëÿåò
253
îøèáêå, à ïðîâåðêà òèïà äàåò ðåçóëüòàò FALSE.  ðÿäå ñëó÷àåâ ýòî ïîçâîëÿåò
196
çíà÷èòåëüíî ñîêðàòèòü ÷àñòîòó ïðèìåíåíèÿ îõðàíû òèïà.
254
çíà÷èòåëüíî ñîêðàòèòü ÷àñòîòó ïðèìåíåíèÿ îõðàíû òèïà.
197
 
255
 
198
------------------------------------------------------------------------------
256
------------------------------------------------------------------------------
199
	Äîïîëíèòåëüíûå ñòàíäàðòíûå ïðîöåäóðû
257
        Äîïîëíèòåëüíûå ñòàíäàðòíûå ïðîöåäóðû
200
 
258
 
201
	DISPOSE(VAR v: ëþáîé_óêàçàòåëü)
259
        DISPOSE (VAR v: ëþáîé_óêàçàòåëü)
202
		Îñâîáîæäàåò ïàìÿòü, âûäåëåííóþ ïðîöåäóðîé NEW äëÿ
260
                Îñâîáîæäàåò ïàìÿòü, âûäåëåííóþ ïðîöåäóðîé NEW äëÿ
203
		äèíàìè÷åñêîé ïåðåìåííîé v^, è ïðèñâàèâàåò ïåðåìåííîé v
261
                äèíàìè÷åñêîé ïåðåìåííîé v^, è ïðèñâàèâàåò ïåðåìåííîé v
204
		çíà÷åíèå NIL.
262
                çíà÷åíèå NIL.
-
 
263
 
-
 
264
        COPY (x: ARRAY OF CHAR/WCHAR; VAR v: ARRAY OF CHAR/WCHAR);
-
 
265
                v := x;
-
 
266
                Åñëè LEN(v) < LEN(x), òî ñòðîêà x áóäåò ñêîïèðîâàíà
-
 
267
                íå ïîëíîñòüþ
205
 
268
 
206
	LSR(x, n: INTEGER): INTEGER
269
        LSR (x, n: INTEGER): INTEGER
207
		Ëîãè÷åñêèé ñäâèã x íà n áèò âïðàâî.
270
                Ëîãè÷åñêèé ñäâèã x íà n áèò âïðàâî.
208
 
271
 
209
	MIN(a, b: INTEGER): INTEGER
272
        MIN (a, b: INTEGER): INTEGER
210
		Ìèíèìóì èç äâóõ çíà÷åíèé.
273
                Ìèíèìóì èç äâóõ çíà÷åíèé.
211
 
274
 
212
	MAX(a, b: INTEGER): INTEGER
275
        MAX (a, b: INTEGER): INTEGER
213
		Ìàêñèìóì èç äâóõ çíà÷åíèé.
276
                Ìàêñèìóì èç äâóõ çíà÷åíèé.
214
 
277
 
215
	BITS(x: INTEGER): SET
278
        BITS (x: INTEGER): SET
216
		Èíòåðïðåòèðóåò x êàê çíà÷åíèå òèïà SET.
279
                Èíòåðïðåòèðóåò x êàê çíà÷åíèå òèïà SET.
217
		Âûïîëíÿåòñÿ íà ýòàïå êîìïèëÿöèè.
280
                Âûïîëíÿåòñÿ íà ýòàïå êîìïèëÿöèè.
218
 
281
 
219
	LENGTH(s: ARRAY OF CHAR): INTEGER
282
        LENGTH (s: ARRAY OF CHAR/WCHAR): INTEGER
220
		Äëèíà 0X-çàâåðøåííîé ñòðîêè s, áåç ó÷åòà ñèìâîëà 0X.
283
                Äëèíà 0X-çàâåðøåííîé ñòðîêè s, áåç ó÷åòà ñèìâîëà 0X.
-
 
284
                Åñëè ñèìâîë 0X îòñóòñòâóåò, ôóíêöèÿ âîçâðàùàåò äëèíó
-
 
285
                ìàññèâà s. s íå ìîæåò áûòü êîíñòàíòîé.
221
		Åñëè ñèìâîë 0X îòñóòñòâóåò, ôóíêöèÿ âîçâðàùàåò äëèíó
286
 
-
 
287
        WCHR (n: INTEGER): WCHAR
222
		ìàññèâà s.
288
                Ïðåîáðàçîâàíèå òèïà, àíàëîãè÷íî CHR(n: INTEGER): CHAR
223
 
289
 
224
------------------------------------------------------------------------------
290
------------------------------------------------------------------------------
225
	DIV è MOD
291
        DIV è MOD
226
 
292
 
227
	 x	   y	  x DIV y   x MOD y
293
         x         y      x DIV y   x MOD y
228
 
294
 
229
	 5	   3	     1	       2
295
         5         3         1         2
230
	-5	   3	    -2	       1
296
        -5         3        -2         1
231
	 5	  -3	    -2	      -1
297
         5        -3        -2        -1
232
	-5	  -3	     1	      -2
298
        -5        -3         1        -2
233
 
299
 
234
------------------------------------------------------------------------------
300
------------------------------------------------------------------------------
-
 
301
        Èìïîðòèðîâàííûå ïðîöåäóðû
-
 
302
 
-
 
303
  Ñèíòàêñèñ èìïîðòà:
-
 
304
 
-
 
305
  PROCEDURE [callconv, "library", "function"] proc_name (FormalParam): Type;
-
 
306
 
-
 
307
  - callconv -- ñîãëàøåíèå î âûçîâå
-
 
308
  - "library" -- èìÿ ôàéëà äèíàìè÷åñêîé áèáëèîòåêè
-
 
309
  - "function" -- èìÿ èìïîðòèðóåìîé ïðîöåäóðû
-
 
310
 
-
 
311
  íàïðèìåð:
-
 
312
 
-
 
313
  PROCEDURE [windows, "kernel32.dll", "ExitProcess"] exit (code: INTEGER);
-
 
314
 
-
 
315
  PROCEDURE [stdcall, "Console.obj", "con_exit"] exit (bCloseWindow: BOOLEAN);
-
 
316
 
-
 
317
  Â êîíöå îáúÿâëåíèÿ ìîæåò áûòü äîáàâëåíî (íåîáÿçàòåëüíî) "END proc_name;"
-
 
318
 
-
 
319
  Îáúÿâëåíèÿ èìïîðòèðîâàííûõ ïðîöåäóð äîëæíû ðàñïîëàãàòüñÿ â ãëîáàëüíîé
-
 
320
  îáëàñòè âèäèìîñòè ìîäóëÿ ïîñëå îáúÿâëåíèÿ ïåðåìåííûõ, âìåñòå ñ îáúÿâëåíèåì
-
 
321
  "îáû÷íûõ" ïðîöåäóð, îò êîòîðûõ èìïîðòèðîâàííûå îòëè÷àþòñÿ òîëüêî îòñóòñòâèåì
-
 
322
  òåëà ïðîöåäóðû. Â îñòàëüíîì, ê òàêèì ïðîöåäóðàì ïðèìåíèìû òå æå ïðàâèëà:
-
 
323
  èõ ìîæíî âûçâàòü, ïðèñâîèòü ïðîöåäóðíîé ïåðåìåííîé èëè ïîëó÷èòü àäðåñ.
-
 
324
 
-
 
325
  Òàê êàê èìïîðòèðîâàííàÿ ïðîöåäóðà âñåãäà èìååò ÿâíîå óêàçàíèå ñîãëàøåíèÿ î
-
 
326
  âûçîâå, òî ñîâìåñòèìûé ïðîöåäóðíûé òèï òîæå äîëæåí áûòü îáúÿâëåí ñ óêàçàíèåì
-
 
327
  ñîãëàøåíèÿ î âûçîâå:
-
 
328
 
-
 
329
  VAR
-
 
330
      ExitProcess: PROCEDURE [windows] (code: INTEGER);
-
 
331
      con_exit:    PROCEDURE [stdcall] (bCloseWindow: BOOLEAN);
-
 
332
 
-
 
333
  Â KolibriOS èìïîðòèðîâàòü ïðîöåäóðû ìîæíî òîëüêî èç áèáëèîòåê, ðàçìåùåííûõ
-
 
334
  â /rd/1/lib. Èìïîðòèðîâàòü è âûçûâàòü ôóíêöèè èíèöèàëèçàöèè áèáëèîòåê
-
 
335
  (lib_init, START) ïðè ýòîì íå íóæíî.
-
 
336
 
-
 
337
  Äëÿ Linux, èìïîðòèðîâàííûå ïðîöåäóðû íå ðåàëèçîâàíû.
-
 
338
 
-
 
339
------------------------------------------------------------------------------
235
	Ñêðûòûå ïàðàìåòðû ïðîöåäóð
340
        Ñêðûòûå ïàðàìåòðû ïðîöåäóð
236
 
341
 
237
  Íåêîòîðûå ïðîöåäóðû ìîãóò èìåòü ñêðûòûå ïàðàìåòðû, îíè îòñóòñòâóþò â ñïèñêå
342
  Íåêîòîðûå ïðîöåäóðû ìîãóò èìåòü ñêðûòûå ïàðàìåòðû, îíè îòñóòñòâóþò â ñïèñêå
238
ôîðìàëüíûõ ïàðàìåòðîâ, íî ó÷èòûâàþòñÿ êîìïèëÿòîðîì ïðè òðàíñëÿöèè âûçîâîâ.
343
ôîðìàëüíûõ ïàðàìåòðîâ, íî ó÷èòûâàþòñÿ êîìïèëÿòîðîì ïðè òðàíñëÿöèè âûçîâîâ.
239
Ýòî âîçìîæíî â ñëåäóþùèõ ñëó÷àÿõ:
344
Ýòî âîçìîæíî â ñëåäóþùèõ ñëó÷àÿõ:
240
 
345
 
241
1.	Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð îòêðûòûé ìàññèâ:
346
1.      Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð îòêðûòûé ìàññèâ:
242
		PROCEDURE Proc(x: ARRAY OF ARRAY OF LONGREAL);
347
                PROCEDURE Proc (x: ARRAY OF ARRAY OF REAL);
243
	Âûçîâ òðàíñëèðóåòñÿ òàê:
348
        Âûçîâ òðàíñëèðóåòñÿ òàê:
244
		Proc(SYSTEM.ADR(x), LEN(x), LEN(x[0])
349
                Proc(LEN(x), LEN(x[0]), SYSTEM.ADR(x))
245
2.	Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð-ïåðåìåííóþ òèïà RECORD:
350
2.      Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð-ïåðåìåííóþ òèïà RECORD:
246
		PROCEDURE Proc(VAR x: Rec);
351
                PROCEDURE Proc (VAR x: Rec);
247
	Âûçîâ òðàíñëèðóåòñÿ òàê:
352
        Âûçîâ òðàíñëèðóåòñÿ òàê:
248
		Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
353
                Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
249
3.	Ïðîöåäóðà ÿâëÿåòñÿ âëîæåííîé, ãëóáèíà âëîæåíèÿ k,
-
 
250
	äëÿ ãëîáàëüíûõ ïðîöåäóð k = 0:
-
 
251
		PROCEDURE Proc(p1, ..., pn);
-
 
252
	Âûçîâ òðàíñëèðóåòñÿ òàê:
-
 
253
		Proc(base(k - 1), base(k - 2), ..., base(0), p1, ..., pn),
-
 
254
	ãäå base(m) - àäðåñ áàçû êàäðà ñòýêà îõâàòûâàþùåé ïðîöåäóðû ãëóáèíû
-
 
255
	âëîæåíèÿ m (èñïîëüçóåòñÿ äëÿ äîñòóïà ê ëîêàëüíûì ïåðåìåííûì
-
 
256
	îõâàòûâàþùåé ïðîöåäóðû)
-
 
257
 
354
 
258
------------------------------------------------------------------------------
355
------------------------------------------------------------------------------
259
	Ìîäóëü RTL
356
        Ìîäóëü RTL
260
 
357
 
261
  Âñå ïðîãðàììû íåÿâíî èñïîëüçóþò ìîäóëü RTL. Êîìïèëÿòîð òðàíñëèðóåò
358
  Âñå ïðîãðàììû íåÿâíî èñïîëüçóþò ìîäóëü RTL. Êîìïèëÿòîð òðàíñëèðóåò
262
íåêîòîðûå îïåðàöèè (ïðîâåðêà è îõðàíà òèïà, ñðàâíåíèå ñòðîê, ñîîáùåíèÿ îá
359
íåêîòîðûå îïåðàöèè (ïðîâåðêà è îõðàíà òèïà, ñðàâíåíèå ñòðîê, ñîîáùåíèÿ îá
263
îøèáêàõ âðåìåíè âûïîëíåíèÿ è äð.) êàê âûçîâû ïðîöåäóð ýòîãî ìîäóëÿ. Íå
360
îøèáêàõ âðåìåíè âûïîëíåíèÿ è äð.) êàê âûçîâû ïðîöåäóð ýòîãî ìîäóëÿ. Íå
264
ñëåäóåò ÿâíî âûçûâàòü ýòè ïðîöåäóðû, çà èñêëþ÷åíèåì ïðîöåäóðû SetClose:
361
ñëåäóåò ÿâíî âûçûâàòü ýòè ïðîöåäóðû, çà èñêëþ÷åíèåì ïðîöåäóðû SetDll,
-
 
362
åñëè ïðèëîæåíèå êîìïèëèðóåòñÿ êàê Windows DLL:
-
 
363
 
-
 
364
        PROCEDURE SetDll
-
 
365
            (process_detach, thread_detach, thread_attach: DLL_ENTRY);
265
 
366
        ãäå TYPE DLL_ENTRY =
-
 
367
            PROCEDURE (hinstDLL, fdwReason, lpvReserved: INTEGER);
-
 
368
 
-
 
369
SetDll íàçíà÷àåò ïðîöåäóðû process_detach, thread_detach, thread_attach
-
 
370
âûçûâàåìûìè ïðè
-
 
371
- âûãðóçêå dll-áèáëèîòåêè (process_detach)
-
 
372
- ñîçäàíèè íîâîãî ïîòîêà (thread_attach)
266
	PROCEDURE SetClose(proc: PROC), ãäå TYPE PROC = PROCEDURE
-
 
267
 
-
 
268
SetClose íàçíà÷àåò ïðîöåäóðó proc (áåç ïàðàìåòðîâ) âûçûâàåìîé ïðè âûãðóçêå
373
- óíè÷òîæåíèè ïîòîêà (thread_detach)
269
dll-áèáëèîòåêè (Windows), åñëè ïðèëîæåíèå êîìïèëèðóåòñÿ êàê Windows DLL. Äëÿ
374
 
270
ïðî÷èõ òèïîâ ïðèëîæåíèé è ïëàòôîðì âûçîâ ïðîöåäóðû SetClose íå âëèÿåò íà
375
Äëÿ ïðî÷èõ òèïîâ ïðèëîæåíèé, âûçîâ ïðîöåäóðû SetDll íå âëèÿåò íà
271
ïîâåäåíèå ïðîãðàììû.
376
ïîâåäåíèå ïðîãðàììû.
272
  Ñîîáùåíèÿ îá îøèáêàõ âðåìåíè âûïîëíåíèÿ âûâîäÿòñÿ â äèàëîãîâûõ îêíàõ
377
  Ñîîáùåíèÿ îá îøèáêàõ âðåìåíè âûïîëíåíèÿ âûâîäÿòñÿ â äèàëîãîâûõ îêíàõ
273
(Windows), â òåðìèíàë (Linux), íà äîñêó îòëàäêè (KolibriOS).
378
(Windows), â òåðìèíàë (Linux), íà äîñêó îòëàäêè (KolibriOS).
274
 
379
 
275
------------------------------------------------------------------------------
380
------------------------------------------------------------------------------
276
	Ìîäóëü API
381
        Ìîäóëü API
277
 
382
 
278
  Ñóùåñòâóþò òðè ðåàëèçàöèè ìîäóëÿ API: äëÿ Windows, Linux è KolibriOS. Êàê è
383
  Ñóùåñòâóþò íåñêîëüêî ðåàëèçàöèé ìîäóëÿ API (äëÿ ðàçëè÷íûõ ÎÑ).
279
ìîäóëü RTL, ìîäóëü API íå ïðåäíàçíà÷åí äëÿ ïðÿìîãî èñïîëüçîâàíèÿ. Îí
384
  Êàê è ìîäóëü RTL, ìîäóëü API íå ïðåäíàçíà÷åí äëÿ ïðÿìîãî èñïîëüçîâàíèÿ.
280
îáåñïå÷èâàåò êðîññïëàòôîðìåííîñòü êîìïèëÿòîðà.
385
Îí îáåñïå÷èâàåò ñâÿçü RTL ñ ÎÑ.
281
 
386
 
282
------------------------------------------------------------------------------
387
------------------------------------------------------------------------------
283
	Ãåíåðàöèÿ èñïîëíÿåìûõ ôàéëîâ DLL
388
        Ãåíåðàöèÿ èñïîëíÿåìûõ ôàéëîâ DLL
284
 
389
 
285
  Ðàçðåøàåòñÿ ýêñïîðòèðîâàòü òîëüêî ïðîöåäóðû. Äëÿ ýòîãî, ïðîöåäóðà äîëæíà
390
  Ðàçðåøàåòñÿ ýêñïîðòèðîâàòü òîëüêî ïðîöåäóðû. Äëÿ ýòîãî, ïðîöåäóðà äîëæíà
286
íàõîäèòüñÿ â ãëàâíîì ìîäóëå ïðîãðàììû, è åå èìÿ äîëæíî áûòü îòìå÷åíî ñèìâîëîì
391
íàõîäèòüñÿ â ãëàâíîì ìîäóëå ïðîãðàììû, è åå èìÿ äîëæíî áûòü îòìå÷åíî ñèìâîëîì
287
ýêñïîðòà ("*"). KolibriOS DLL âñåãäà ýêñïîðòèðóþò èäåíòèôèêàòîðû "version"
392
ýêñïîðòà ("*"). KolibriOS DLL âñåãäà ýêñïîðòèðóþò èäåíòèôèêàòîðû "version"
288
(âåðñèÿ ïðîãðàììû) è "lib_init" - àäðåñ ïðîöåäóðû èíèöèàëèçàöèè DLL:
393
(âåðñèÿ ïðîãðàììû) è "lib_init" - àäðåñ ïðîöåäóðû èíèöèàëèçàöèè DLL:
289
 
394
 
290
	PROCEDURE [stdcall] lib_init(): INTEGER
395
        PROCEDURE [stdcall] lib_init (): INTEGER
291
 
396
 
292
Ýòà ïðîöåäóðà äîëæíà áûòü âûçâàíà ïåðåä èñïîëüçîâàíèåì DLL.
397
Ýòà ïðîöåäóðà äîëæíà áûòü âûçâàíà ïåðåä èñïîëüçîâàíèåì DLL.
293
Ïðîöåäóðà âñåãäà âîçâðàùàåò 1.
398
Ïðîöåäóðà âñåãäà âîçâðàùàåò 1.
294
  Â íàñòîÿùåå âðåìÿ ãåíåðàöèÿ DLL äëÿ Linux íå ðåàëèçîâàíà.
-
 
295
 
-
 
296
==============================================================================
-
 
297
==============================================================================
-
 
298
 
-
 
299
	Áèáëèîòåêà (KolibriOS)
-
 
300
 
-
 
301
------------------------------------------------------------------------------
-
 
302
MODULE Out - êîíñîëüíûé âûâîä
-
 
303
 
-
 
304
	PROCEDURE Open
-
 
305
		ôîðìàëüíî îòêðûâàåò êîíñîëüíûé âûâîä
-
 
306
 
-
 
307
	PROCEDURE Int(x, width: INTEGER)
-
 
308
		âûâîä öåëîãî ÷èñëà x;
-
 
309
		width - êîëè÷åñòâî çíàêîìåñò, èñïîëüçóåìûõ äëÿ âûâîäà
-
 
310
 
-
 
311
	PROCEDURE Real(x: LONGREAL; width: INTEGER)
-
 
312
		âûâîä âåùåñòâåííîãî ÷èñëà x â ïëàâàþùåì ôîðìàòå;
-
 
313
		width - êîëè÷åñòâî çíàêîìåñò, èñïîëüçóåìûõ äëÿ âûâîäà
-
 
314
 
-
 
315
	PROCEDURE Char(x: CHAR)
-
 
316
		âûâîä ñèìâîëà x
-
 
317
 
-
 
318
	PROCEDURE FixReal(x: LONGREAL; width, p: INTEGER)
-
 
319
		âûâîä âåùåñòâåííîãî ÷èñëà x â ôèêñèðîâàííîì ôîðìàòå;
-
 
320
		width - êîëè÷åñòâî çíàêîìåñò, èñïîëüçóåìûõ äëÿ âûâîäà;
-
 
321
		p - êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè
-
 
322
 
-
 
323
	PROCEDURE Ln
-
 
324
		ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-
 
325
 
-
 
326
	PROCEDURE String(s: ARRAY OF CHAR)
-
 
327
		âûâîä ñòðîêè s
-
 
328
 
-
 
329
------------------------------------------------------------------------------
-
 
330
MODULE In - êîíñîëüíûé ââîä
-
 
331
 
-
 
332
	VAR Done: BOOLEAN
-
 
333
		ïðèíèìàåò çíà÷åíèå TRUE â ñëó÷àå óñïåøíîãî âûïîëíåíèÿ
-
 
334
		îïåðàöèè ââîäà, èíà÷å FALSE
-
 
335
 
-
 
336
	PROCEDURE Open
-
 
337
		ôîðìàëüíî îòêðûâàåò êîíñîëüíûé ââîä,
-
 
338
		òàêæå ïðèñâàèâàåò ïåðåìåííîé Done çíà÷åíèå TRUE
-
 
339
 
-
 
340
	PROCEDURE Int(VAR x: INTEGER)
-
 
341
		ââîä ÷èñëà òèïà INTEGER
-
 
342
 
-
 
343
	PROCEDURE Char(VAR x: CHAR)
-
 
344
		ââîä ñèìâîëà
-
 
345
 
-
 
346
	PROCEDURE Real(VAR x: REAL)
-
 
347
		ââîä ÷èñëà òèïà REAL
-
 
348
 
-
 
349
	PROCEDURE LongReal(VAR x: LONGREAL)
-
 
350
		ââîä ÷èñëà òèïà LONGREAL
-
 
351
 
-
 
352
	PROCEDURE String(VAR s: ARRAY OF CHAR)
-
 
353
		ââîä ñòðîêè
-
 
354
 
-
 
355
	PROCEDURE Ln
-
 
356
		îæèäàíèå íàæàòèÿ ENTER
-
 
357
 
-
 
358
------------------------------------------------------------------------------
-
 
359
MODULE Console - äîïîëíèòåëüíûå ïðîöåäóðû êîíñîëüíîãî âûâîäà
-
 
360
 
-
 
361
	CONST
-
 
362
 
-
 
363
	Ñëåäóþùèå êîíñòàíòû îïðåäåëÿþò öâåò êîíñîëüíîãî âûâîäà
-
 
364
 
-
 
365
		Black = 0      Blue = 1 	  Green = 2
-
 
366
		Cyan = 3       Red = 4		  Magenta = 5
-
 
367
		Brown = 6      LightGray = 7	  DarkGray = 8
-
 
368
		LightBlue = 9  LightGreen = 10	  LightCyan = 11
-
 
369
		LightRed = 12  LightMagenta = 13  Yellow = 14
-
 
370
		White = 15
-
 
371
 
-
 
372
	PROCEDURE Cls
-
 
373
		î÷èñòêà îêíà êîíñîëè
-
 
374
 
-
 
375
	PROCEDURE SetColor(FColor, BColor: INTEGER)
-
 
376
		óñòàíîâêà öâåòà êîíñîëüíîãî âûâîäà: FColor - öâåò òåêñòà,
-
 
377
		BColor - öâåò ôîíà, âîçìîæíûå çíà÷åíèÿ - âûøåïåðå÷èñëåííûå
-
 
378
		êîíñòàíòû
-
 
379
 
-
 
380
	PROCEDURE SetCursor(x, y: INTEGER)
-
 
381
		óñòàíîâêà êóðñîðà êîíñîëè â ïîçèöèþ (x, y)
-
 
382
 
-
 
383
	PROCEDURE GetCursor(VAR x, y: INTEGER)
-
 
384
		çàïèñûâàåò â ïàðàìåòðû òåêóùèå êîîðäèíàòû êóðñîðà êîíñîëè
-
 
385
 
-
 
386
	PROCEDURE GetCursorX(): INTEGER
-
 
387
		âîçâðàùàåò òåêóùóþ x-êîîðäèíàòó êóðñîðà êîíñîëè
-
 
388
 
-
 
389
	PROCEDURE GetCursorY(): INTEGER
-
 
390
		âîçâðàùàåò òåêóùóþ y-êîîðäèíàòó êóðñîðà êîíñîëè
-
 
391
 
-
 
392
------------------------------------------------------------------------------
-
 
393
MODULE ConsoleLib - îáåðòêà áèáëèîòåêè console.obj
-
 
394
 
-
 
395
------------------------------------------------------------------------------
-
 
396
MODULE Math - ìàòåìàòè÷åñêèå ôóíêöèè
-
 
397
 
-
 
398
	CONST
-
 
399
 
-
 
400
		pi = 3.141592653589793D+00
-
 
401
		e  = 2.718281828459045D+00
-
 
402
 
-
 
403
	VAR
-
 
404
 
-
 
405
		Inf, nInf: LONGREAL
-
 
406
			ïîëîæèòåëüíàÿ è îòðèöàòåëüíàÿ áåñêîíå÷íîñòü
-
 
407
 
-
 
408
	PROCEDURE IsNan(x: LONGREAL): BOOLEAN
-
 
409
		âîçâðàùàåò TRUE, åñëè x - íå ÷èñëî
-
 
410
 
-
 
411
	PROCEDURE IsInf(x: LONGREAL): BOOLEAN
-
 
412
		âîçâðàùàåò TRUE, åñëè x - áåñêîíå÷íîñòü
-
 
413
 
-
 
414
	PROCEDURE sqrt(x: LONGREAL): LONGREAL
-
 
415
		êâàäðàòíûé êîðåíü x
-
 
416
 
-
 
417
	PROCEDURE exp(x: LONGREAL): LONGREAL
-
 
418
		ýêñïîíåíòà x
-
 
419
 
-
 
420
	PROCEDURE ln(x: LONGREAL): LONGREAL
-
 
421
		íàòóðàëüíûé ëîãàðèôì x
-
 
422
 
-
 
423
	PROCEDURE sin(x: LONGREAL): LONGREAL
-
 
424
		ñèíóñ x
-
 
425
 
-
 
426
	PROCEDURE cos(x: LONGREAL): LONGREAL
-
 
427
		êîñèíóñ x
-
 
428
 
-
 
429
	PROCEDURE tan(x: LONGREAL): LONGREAL
-
 
430
		òàíãåíñ x
-
 
431
 
-
 
432
	PROCEDURE arcsin(x: LONGREAL): LONGREAL
-
 
433
		àðêñèíóñ x
-
 
434
 
-
 
435
	PROCEDURE arccos(x: LONGREAL): LONGREAL
-
 
436
		àðêêîñèíóñ x
-
 
437
 
-
 
438
	PROCEDURE arctan(x: LONGREAL): LONGREAL
-
 
439
		àðêòàíãåíñ x
-
 
440
 
-
 
441
	PROCEDURE arctan2(y, x: LONGREAL): LONGREAL
-
 
442
		àðêòàíãåíñ y/x
-
 
443
 
-
 
444
	PROCEDURE power(base, exponent: LONGREAL): LONGREAL
-
 
445
		âîçâåäåíèå ÷èñëà base â ñòåïåíü exponent
-
 
446
 
-
 
447
	PROCEDURE log(base, x: LONGREAL): LONGREAL
-
 
448
		ëîãàðèôì x ïî îñíîâàíèþ base
-
 
449
 
-
 
450
	PROCEDURE sinh(x: LONGREAL): LONGREAL
-
 
451
		ãèïåðáîëè÷åñêèé ñèíóñ x
-
 
452
 
-
 
453
	PROCEDURE cosh(x: LONGREAL): LONGREAL
-
 
454
		ãèïåðáîëè÷åñêèé êîñèíóñ x
-
 
455
 
-
 
456
	PROCEDURE tanh(x: LONGREAL): LONGREAL
-
 
457
		ãèïåðáîëè÷åñêèé òàíãåíñ x
-
 
458
 
-
 
459
	PROCEDURE arcsinh(x: LONGREAL): LONGREAL
-
 
460
		îáðàòíûé ãèïåðáîëè÷åñêèé ñèíóñ x
-
 
461
 
-
 
462
	PROCEDURE arccosh(x: LONGREAL): LONGREAL
-
 
463
		îáðàòíûé ãèïåðáîëè÷åñêèé êîñèíóñ x
-
 
464
 
-
 
465
	PROCEDURE arctanh(x: LONGREAL): LONGREAL
-
 
466
		îáðàòíûé ãèïåðáîëè÷åñêèé òàíãåíñ x
-
 
467
 
-
 
468
	PROCEDURE round(x: LONGREAL): LONGREAL
-
 
469
		îêðóãëåíèå x äî áëèæàéøåãî öåëîãî
-
 
470
 
-
 
471
	PROCEDURE frac(x: LONGREAL): LONGREAL;
-
 
472
		äðîáíàÿ ÷àñòü ÷èñëà x
-
 
473
 
-
 
474
	PROCEDURE floor(x: LONGREAL): LONGREAL
-
 
475
		íàèáîëüøåå öåëîå ÷èñëî (ïðåäñòàâëåíèå êàê LONGREAL),
-
 
476
		íå áîëüøå x: floor(1.2) = 1.0
-
 
477
 
-
 
478
	PROCEDURE ceil(x: LONGREAL): LONGREAL
-
 
479
		íàèìåíüøåå öåëîå ÷èñëî (ïðåäñòàâëåíèå êàê LONGREAL),
-
 
480
		íå ìåíüøå x: ceil(1.2) = 2.0
-
 
481
 
-
 
482
	PROCEDURE sgn(x: LONGREAL): INTEGER
-
 
483
		åñëè x > 0 âîçâðàùàåò 1
-
 
484
		åñëè x < 0 âîçâðàùàåò -1
-
 
485
		åñëè x = 0 âîçâðàùàåò 0
-
 
486
 
-
 
487
------------------------------------------------------------------------------
-
 
488
MODULE Debug - âûâîä íà äîñêó îòëàäêè
-
 
489
	Èíòåðôåéñ êàê ìîäóëü Out
-
 
490
 
-
 
491
	PROCEDURE Open
-
 
492
		îòêðûâàåò äîñêó îòëàäêè
-
 
493
 
-
 
494
------------------------------------------------------------------------------
-
 
495
MODULE File - ðàáîòà ñ ôàéëîâîé ñèñòåìîé
-
 
496
 
-
 
497
	TYPE
-
 
498
 
-
 
499
		FNAME = ARRAY 520 OF CHAR
-
 
500
 
-
 
501
		FS = POINTER TO rFS
-
 
502
 
-
 
503
		rFS = RECORD (* èíôîðìàöèîííàÿ ñòðóêòóðà ôàéëà *)
-
 
504
			subfunc, pos, hpos, bytes, buffer: INTEGER;
-
 
505
			name: FNAME
-
 
506
		END
-
 
507
 
-
 
508
		FD = POINTER TO rFD
-
 
509
 
-
 
510
		rFD = RECORD (* ñòðóêòóðà áëîêà äàííûõ âõîäà êàòàëîãà *)
-
 
511
			attr: INTEGER;
-
 
512
			ntyp: CHAR;
-
 
513
			reserved: ARRAY 3 OF CHAR;
-
 
514
			time_create, date_create,
-
 
515
			time_access, date_access,
-
 
516
			time_modif,  date_modif,
-
 
517
			size, hsize: INTEGER;
-
 
518
			name: FNAME
-
 
519
		END
-
 
520
 
-
 
521
	CONST
-
 
522
 
-
 
523
		SEEK_BEG = 0
-
 
524
		SEEK_CUR = 1
-
 
525
		SEEK_END = 2
-
 
526
 
-
 
527
	PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
-
 
528
		Çàãðóæàåò â ïàìÿòü ôàéë ñ èìåíåì FName, çàïèñûâàåò â ïàðàìåòð
-
 
529
		size ðàçìåð ôàéëà, âîçâðàùàåò àäðåñ çàãðóæåííîãî ôàéëà
-
 
530
		èëè 0 (îøèáêà). Ïðè íåîáõîäèìîñòè, ðàñïàêîâûâàåò
-
 
531
		ôàéë (kunpack).
-
 
532
 
-
 
533
	PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN
-
 
534
		Çàïèñûâàåò ñòðóêòóðó áëîêà äàííûõ âõîäà êàòàëîãà äëÿ ôàéëà
-
 
535
		èëè ïàïêè ñ èìåíåì FName â ïàðàìåòð Info.
-
 
536
		Ïðè îøèáêå âîçâðàùàåò FALSE.
-
 
537
 
-
 
538
	PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
-
 
539
		âîçâðàùàåò TRUE, åñëè ôàéë ñ èìåíåì FName ñóùåñòâóåò
-
 
540
 
-
 
541
	PROCEDURE Close(VAR F: FS)
-
 
542
		îñâîáîæäàåò ïàìÿòü, âûäåëåííóþ äëÿ èíôîðìàöèîííîé ñòðóêòóðû
-
 
543
		ôàéëà F è ïðèñâàèâàåò F çíà÷åíèå NIL
-
 
544
 
-
 
545
	PROCEDURE Open(FName: ARRAY OF CHAR): FS
-
 
546
		âîçâðàùàåò óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà ñ
-
 
547
		èìåíåì FName, ïðè îøèáêå âîçâðàùàåò NIL
-
 
548
 
-
 
549
	PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
-
 
550
		óäàëÿåò ôàéë ñ èìåíåì FName, ïðè îøèáêå âîçâðàùàåò FALSE
-
 
551
 
-
 
552
	PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER
-
 
553
		óñòàíàâëèâàåò ïîçèöèþ ÷òåíèÿ-çàïèñè ôàéëà F íà Offset,
-
 
554
		îòíîñèòåëüíî Origin = (SEEK_BEG - íà÷àëî ôàéëà,
-
 
555
		SEEK_CUR - òåêóùàÿ ïîçèöèÿ, SEEK_END - êîíåö ôàéëà),
-
 
556
		âîçâðàùàåò ïîçèöèþ îòíîñèòåëüíî íà÷àëà ôàéëà, íàïðèìåð:
-
 
557
			Seek(F, 0, SEEK_END)
-
 
558
		óñòàíàâëèâàåò ïîçèöèþ íà êîíåö ôàéëà è âîçâðàùàåò äëèíó
-
 
559
		ôàéëà; ïðè îøèáêå âîçâðàùàåò -1
-
 
560
 
-
 
561
	PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER
-
 
562
		×èòàåò äàííûå èç ôàéëà â ïàìÿòü. F - óêàçàòåëü íà
-
 
563
		èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà, Buffer - àäðåñ îáëàñòè
-
 
564
		ïàìÿòè, Count - êîëè÷åñòâî áàéò, êîòîðîå òðåáóåòñÿ ïðî÷èòàòü
-
 
565
		èç ôàéëà; âîçâðàùàåò êîëè÷åñòâî áàéò, êîòîðîå áûëî ïðî÷èòàíî
-
 
566
		è ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿåò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
567
		èíôîðìàöèîííîé ñòðóêòóðå F.
-
 
568
 
-
 
569
	PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER
-
 
570
		Çàïèñûâàåò äàííûå èç ïàìÿòè â ôàéë. F - óêàçàòåëü íà
-
 
571
		èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà, Buffer - àäðåñ îáëàñòè
-
 
572
		ïàìÿòè, Count - êîëè÷åñòâî áàéò, êîòîðîå òðåáóåòñÿ çàïèñàòü
-
 
573
		â ôàéë; âîçâðàùàåò êîëè÷åñòâî áàéò, êîòîðîå áûëî çàïèñàíî è
-
 
574
		ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿåò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
575
		èíôîðìàöèîííîé ñòðóêòóðå F.
-
 
576
 
-
 
577
	PROCEDURE Create(FName: ARRAY OF CHAR): FS
-
 
578
		ñîçäàåò íîâûé ôàéë ñ èìåíåì FName (ïîëíîå èìÿ), âîçâðàùàåò
-
 
579
		óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà,
-
 
580
		ïðè îøèáêå âîçâðàùàåò NIL
-
 
581
 
-
 
582
	PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
-
 
583
		ñîçäàåò ïàïêó ñ èìåíåì DirName, âñå ïðîìåæóòî÷íûå ïàïêè
-
 
584
		äîëæíû ñóùåñòâîâàòü, ïðè îøèáêå âîçâðàùàåò FALSE
-
 
585
 
-
 
586
	PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN
-
 
587
		óäàëÿåò ïóñòóþ ïàïêó ñ èìåíåì DirName,
-
 
588
		ïðè îøèáêå âîçâðàùàåò FALSE
-
 
589
 
-
 
590
	PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN
-
 
591
		âîçâðàùàåò TRUE, åñëè ïàïêà ñ èìåíåì DirName ñóùåñòâóåò
-
 
592
 
-
 
593
------------------------------------------------------------------------------
-
 
594
MODULE Read - ÷òåíèå îñíîâíûõ òèïîâ äàííûõ èç ôàéëà F
-
 
595
 
-
 
596
	Ïðîöåäóðû âîçâðàùàþò TRUE â ñëó÷àå óñïåøíîé îïåðàöèè ÷òåíèÿ è
-
 
597
	ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿþò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
598
	èíôîðìàöèîííîé ñòðóêòóðå F
-
 
599
 
-
 
600
	PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN
-
 
601
 
-
 
602
	PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN
-
 
603
 
-
 
604
	PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN
-
 
605
 
-
 
606
	PROCEDURE LongReal(F: File.FS; VAR x: LONGREAL): BOOLEAN
-
 
607
 
-
 
608
	PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN
-
 
609
 
-
 
610
	PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN
-
 
611
 
-
 
612
	PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): BOOLEAN
-
 
613
 
-
 
614
------------------------------------------------------------------------------
-
 
615
MODULE Write - çàïèñü îñíîâíûõ òèïîâ äàííûõ â ôàéë F
-
 
616
 
-
 
617
	Ïðîöåäóðû âîçâðàùàþò TRUE â ñëó÷àå óñïåøíîé îïåðàöèè çàïèñè è
-
 
618
	ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿþò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
619
	èíôîðìàöèîííîé ñòðóêòóðå F
-
 
620
 
-
 
621
	PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN
-
 
622
 
-
 
623
	PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN
-
 
624
 
-
 
625
	PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN
-
 
626
 
-
 
627
	PROCEDURE LongReal(F: File.FS; x: LONGREAL): BOOLEAN
-
 
628
 
-
 
629
	PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN
-
 
630
 
-
 
631
	PROCEDURE Set(F: File.FS; x: SET): BOOLEAN
-
 
632
 
-
 
633
	PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN
-
 
634
 
-
 
635
------------------------------------------------------------------------------
-
 
636
MODULE DateTime - äàòà, âðåìÿ
-
 
637
 
-
 
638
	CONST ERR = -7.0D5
-
 
639
 
-
 
640
	PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
-
 
641
		çàïèñûâàåò â ïàðàìåòðû êîìïîíåíòû òåêóùåé ñèñòåìíîé äàòû è
-
 
642
		âðåìåíè
-
 
643
 
-
 
644
	PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): LONGREAL
-
 
645
		âîçâðàùàåò äàòó, ïîëó÷åííóþ èç êîìïîíåíòîâ
-
 
646
		Year, Month, Day, Hour, Min, Sec;
-
 
647
		ïðè îøèáêå âîçâðàùàåò êîíñòàíòó ERR = -7.0D5
-
 
648
 
-
 
649
	PROCEDURE Decode(Date: LONGREAL; VAR Year, Month, Day,
-
 
650
				Hour, Min, Sec: INTEGER): BOOLEAN
-
 
651
		èçâëåêàåò êîìïîíåíòû
-
 
652
		Year, Month, Day, Hour, Min, Sec èç äàòû Date;
-
 
653
		ïðè îøèáêå âîçâðàùàåò FALSE
-
 
654
 
-
 
655
------------------------------------------------------------------------------
-
 
656
MODULE Args - ïàðàìåòðû ïðîãðàììû
-
 
657
 
-
 
658
	VAR argc: INTEGER
-
 
659
		êîëè÷åñòâî ïàðàìåòðîâ ïðîãðàììû, âêëþ÷àÿ èìÿ
-
 
660
		èñïîëíÿåìîãî ôàéëà
-
 
661
 
-
 
662
	PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
-
 
663
		çàïèñûâàåò â ñòðîêó s n-é ïàðàìåòð ïðîãðàììû,
-
 
664
		íóìåðàöèÿ ïàðàìåòðîâ îò 0 äî argc - 1,
-
 
665
		íóëåâîé ïàðàìåòð -- èìÿ èñïîëíÿåìîãî ôàéëà
-
 
666
 
-
 
667
------------------------------------------------------------------------------
-
 
668
MODULE KOSAPI
-
 
669
 
-
 
670
	PROCEDURE sysfunc1(arg1: INTEGER): INTEGER
-
 
671
	PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER
-
 
672
	...
-
 
673
	PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER
-
 
674
		Îáåðòêè äëÿ ôóíêöèé API ÿäðà KolibriOS.
-
 
675
		arg1 .. arg7 ñîîòâåòñòâóþò ðåãèñòðàì
-
 
676
			eax, ebx, ecx, edx, esi, edi, ebp;
-
 
677
		âîçâðàùàþò çíà÷åíèå ðåãèñòðà eax ïîñëå ñèñòåìíîãî âûçîâà.
-
 
678
 
-
 
679
	PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER
-
 
680
		Îáåðòêà äëÿ ôóíêöèé API ÿäðà KolibriOS.
-
 
681
		arg1 - ðåãèñòð eax, arg2 - ðåãèñòð ebx,
-
 
682
		res2 - çíà÷åíèå ðåãèñòðà ebx ïîñëå ñèñòåìíîãî âûçîâà;
-
 
683
		âîçâðàùàåò çíà÷åíèå ðåãèñòðà eax ïîñëå ñèñòåìíîãî âûçîâà.
-
 
684
 
-
 
685
	PROCEDURE malloc(size: INTEGER): INTEGER
-
 
686
		Âûäåëÿåò áëîê ïàìÿòè.
-
 
687
		size - ðàçìåð áëîêà â áàéòàõ,
-
 
688
		âîçâðàùàåò àäðåñ âûäåëåííîãî áëîêà
-
 
689
 
-
 
690
	PROCEDURE free(ptr: INTEGER): INTEGER
-
 
691
		Îñâîáîæäàåò ðàíåå âûäåëåííûé áëîê ïàìÿòè ñ àäðåñîì ptr,
-
 
692
		âîçâðàùàåò 0
-
 
693
 
-
 
694
	PROCEDURE realloc(ptr, size: INTEGER): INTEGER
-
 
695
		Ïåðåðàñïðåäåëÿåò áëîê ïàìÿòè,
-
 
696
		ptr - àäðåñ ðàíåå âûäåëåííîãî áëîêà,
-
 
697
		size - íîâûé ðàçìåð,
-
 
698
		âîçâðàùàåò óêàçàòåëü íà ïåðåðàñïðåäåëåííûé áëîê,
-
 
699
		0 ïðè îøèáêå
-
 
700
 
-
 
701
	PROCEDURE GetCommandLine(): INTEGER
-
 
702
		Âîçâðàùàåò àäðåñ ñòðîêè ïàðàìåòðîâ
-
 
703
 
-
 
704
	PROCEDURE GetName(): INTEGER
-
 
705
		Âîçâðàùàåò àäðåñ ñòðîêè ñ èìåíåì ïðîãðàììû
-
 
706
 
-
 
707
	PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER
-
 
708
		Çàãðóæàåò DLL ñ ïîëíûì èìåíåì name. Âîçâðàùàåò àäðåñ òàáëèöû
-
 
709
		ýêñïîðòà. Ïðè îøèáêå âîçâðàùàåò 0.
-
 
710
 
-
 
711
	PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER
-
 
712
		name - èìÿ ïðîöåäóðû
-
 
713
		lib - àäðåñ òàáëèöû ýêñïîðòà DLL
-
 
714
		Âîçâðàùàåò àäðåñ ïðîöåäóðû. Ïðè îøèáêå âîçâðàùàåò 0.
-
 
715
 
-
 
716
------------------------------------------------------------------------------
-
 
717
MODULE ColorDlg - ðàáîòà ñ äèàëîãîì "Color Dialog"
-
 
718
 
-
 
719
	TYPE
-
 
720
 
-
 
721
		Dialog = POINTER TO RECORD (* ñòðóêòóðà äèàëîãà *)
-
 
722
		    status: INTEGER   (* ñîñòîÿíèå äèàëîãà:
-
 
723
					 0 - ïîëüçîâàòåëü íàæàë Cancel
-
 
724
					 1 - ïîëüçîâàòåëü íàæàë OK
-
 
725
					 2 - äèàëîã îòêðûò	     *)
-
 
726
 
-
 
727
		    color:  INTEGER   (* âûáðàííûé öâåò *)
-
 
728
		END
-
 
729
 
-
 
730
	PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog
-
 
731
		ñîçäàòü äèàëîã
-
 
732
		draw_window - ïðîöåäóðà ïåðåðèñîâêè îñíîâíîãî îêíà
-
 
733
		(TYPE DRAW_WINDOW = PROCEDURE);
-
 
734
		ïðîöåäóðà âîçâðàùàåò óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
735
 
-
 
736
	PROCEDURE Show(cd: Dialog)
-
 
737
		ïîêàçàòü äèàëîã
-
 
738
		cd - óêàçàòåëü íà ñòðóêòóðó äèàëîãà, êîòîðûé áûë ñîçäàí ðàíåå
-
 
739
		ïðîöåäóðîé Create
-
 
740
 
-
 
741
	PROCEDURE Destroy(VAR cd: Dialog)
-
 
742
		óíè÷òîæèòü äèàëîã
-
 
743
		cd - óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
744
 
-
 
745
------------------------------------------------------------------------------
-
 
746
MODULE OpenDlg - ðàáîòà ñ äèàëîãîì "Open Dialog"
-
 
747
 
-
 
748
	TYPE
-
 
749
 
-
 
750
		Dialog = POINTER TO RECORD (* ñòðóêòóðà äèàëîãà *)
-
 
751
		    status:   INTEGER  (* ñîñòîÿíèå äèàëîãà:
-
 
752
					  0 - ïîëüçîâàòåëü íàæàë Cancel
-
 
753
					  1 - ïîëüçîâàòåëü íàæàë OK
-
 
754
					  2 - äèàëîã îòêðûò	      *)
-
 
755
 
-
 
756
		    FileName: ARRAY 4096 OF CHAR (* èìÿ âûáðàííîãî ôàéëà *)
-
 
757
		    FilePath: ARRAY 4096 OF CHAR (* ïîëíîå èìÿ âûáðàííîãî
-
 
758
						    ôàéëà		 *)
-
 
759
		END
-
 
760
 
-
 
761
	PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path,
-
 
762
			filter: ARRAY OF CHAR): Dialog
-
 
763
		ñîçäàòü äèàëîã
-
 
764
		draw_window - ïðîöåäóðà ïåðåðèñîâêè îñíîâíîãî îêíà
-
 
765
			(TYPE DRAW_WINDOW = PROCEDURE)
-
 
766
		type -	òèï äèàëîãà
-
 
767
			0 - îòêðûòü
-
 
768
			1 - ñîõðàíèòü
-
 
769
			2 - âûáðàòü ïàïêó
-
 
770
		def_path - ïóòü ïî óìîë÷àíèþ, ïàïêà def_path áóäåò îòêðûòà
-
 
771
			ïðè ïåðâîì çàïóñêå äèàëîãà
-
 
772
		filter - â ñòðîêå çàïèñàíî ïåðå÷èñëåíèå ðàñøèðåíèé ôàéëîâ,
-
 
773
			êîòîðûå áóäóò ïîêàçàíû â äèàëîãîâîì îêíå, ðàñøèðåíèÿ
-
 
774
			ðàçäåëÿþòñÿ ñèìâîëîì "|", íàïðèìåð: "ASM|TXT|INI"
-
 
775
		ïðîöåäóðà âîçâðàùàåò óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
776
 
-
 
777
	PROCEDURE Show(od: Dialog; Width, Height: INTEGER)
-
 
778
		ïîêàçàòü äèàëîã
-
 
779
		od - óêàçàòåëü íà ñòðóêòóðó äèàëîãà, êîòîðûé áûë ñîçäàí ðàíåå
-
 
780
		     ïðîöåäóðîé Create
-
 
781
		Width è Height - øèðèíà è âûñîòà äèàëîãîâîãî îêíà
-
 
782
 
-
 
783
	PROCEDURE Destroy(VAR od: Dialog)
-
 
784
		óíè÷òîæèòü äèàëîã
-
 
785
		od - óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
786
 
-
 
787
------------------------------------------------------------------------------
-
 
788
MODULE kfonts - ðàáîòà ñ kf-øðèôòàìè
-
 
789
 
-
 
790
	CONST
-
 
791
 
-
 
792
		bold		=   1
-
 
793
		italic		=   2
-
 
794
		underline	=   4
-
 
795
		strike_through	=   8
-
 
796
		smoothing	=  16
-
 
797
		bpp32		=  32
-
 
798
 
-
 
799
	TYPE
-
 
800
 
-
 
801
		TFont = POINTER TO TFont_desc (* óêàçàòåëü íà øðèôò *)
-
 
802
 
-
 
803
	PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont
-
 
804
		çàãðóçèòü øðèôò èç ôàéëà
-
 
805
		file_name   èìÿ kf-ôàéëà
-
 
806
		ðåç-ò:	    óêàçàòåëü íà øðèôò/NIL (îøèáêà)
-
 
807
 
-
 
808
	PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN
-
 
809
		óñòàíîâèòü ðàçìåð øðèôòà
-
 
810
		Font	    óêàçàòåëü íà øðèôò
-
 
811
		font_size   ðàçìåð øðèôòà
-
 
812
		ðåç-ò:	    TRUE/FALSE (îøèáêà)
-
 
813
 
-
 
814
	PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN
-
 
815
		ïðîâåðèòü, åñòü ëè øðèôò, çàäàííîãî ðàçìåðà
-
 
816
		Font	    óêàçàòåëü íà øðèôò
-
 
817
		font_size   ðàçìåð øðèôòà
-
 
818
		ðåç-ò:	    TRUE/FALSE (øðèôòà íåò)
-
 
819
 
-
 
820
	PROCEDURE Destroy(VAR Font: TFont)
-
 
821
		âûãðóçèòü øðèôò, îñâîáîäèòü äèíàìè÷åñêóþ ïàìÿòü
-
 
822
		Font	    óêàçàòåëü íà øðèôò
-
 
823
		Ïðèñâàèâàåò ïåðåìåííîé Font çíà÷åíèå NIL
-
 
824
 
-
 
825
	PROCEDURE TextHeight(Font: TFont): INTEGER
-
 
826
		ïîëó÷èòü âûñîòó ñòðîêè òåêñòà
-
 
827
		Font	    óêàçàòåëü íà øðèôò
-
 
828
		ðåç-ò:	    âûñîòà ñòðîêè òåêñòà â ïèêñåëÿõ
-
 
829
 
-
 
830
	PROCEDURE TextWidth(Font: TFont;
-
 
831
		    str, length, params: INTEGER): INTEGER
-
 
832
		ïîëó÷èòü øèðèíó ñòðîêè òåêñòà
-
 
833
		Font	    óêàçàòåëü íà øðèôò
-
 
834
		str	    àäðåñ ñòðîêè òåêñòà â êîäèðîâêå Win-1251
-
 
835
		length	    êîëè÷åñòâî ñèìâîëîâ â ñòðîêå èëè -1, åñëè ñòðîêà
-
 
836
			    çàâåðøàåòñÿ íóëåì
-
 
837
		params	    ïàðàìåòðû-ôëàãè ñì. íèæå
-
 
838
		ðåç-ò:	    øèðèíà ñòðîêè òåêñòà â ïèêñåëÿõ
-
 
839
 
-
 
840
	PROCEDURE TextOut(Font: TFont;
-
 
841
		    canvas, x, y, str, length, color, params: INTEGER)
-
 
842
		âûâåñòè òåêñò â áóôåð
-
 
843
		äëÿ âûâîäà áóôåðà â îêíî, èñïîëüçîâàòü ô.65 èëè
-
 
844
		ô.7 (åñëè áóôåð 24-áèòíûé)
-
 
845
		Font	    óêàçàòåëü íà øðèôò
-
 
846
		canvas	    àäðåñ ãðàôè÷åñêîãî áóôåðà
-
 
847
			    ñòðóêòóðà áóôåðà:
-
 
848
			      Xsize	  dd
-
 
849
			      Ysize	  dd
-
 
850
			      picture	  rb  Xsize * Ysize * 4 (32 áèòà)
-
 
851
					      èëè Xsize * Ysize * 3 (24 áèòà)
-
 
852
		x, y	    êîîðäèíàòû òåêñòà îòíîñèòåëüíî ëåâîãî âåðõíåãî
-
 
853
			    óãëà áóôåðà
-
 
854
		str	    àäðåñ ñòðîêè òåêñòà â êîäèðîâêå Win-1251
-
 
855
		length	    êîëè÷åñòâî ñèìâîëîâ â ñòðîêå èëè -1, åñëè ñòðîêà
-
 
856
			    çàâåðøàåòñÿ íóëåì
-
 
857
		color	    öâåò òåêñòà 0x00RRGGBB
-
 
858
		params	    ïàðàìåòðû-ôëàãè:
-
 
859
			       1   æèðíûé
-
 
860
			       2   êóðñèâ
-
 
861
			       4   ïîä÷åðêíóòûé
-
 
862
			       8   ïåðå÷åðêíóòûé
-
 
863
			      16   ïðèìåíèòü ñãëàæèâàíèå
-
 
864
			      32   âûâîä â 32-áèòíûé áóôåð
-
 
865
			    âîçìîæíî èñïîëüçîâàíèå ôëàãîâ â ëþáûõ ñî÷åòàíèÿõ
-
 
866
------------------------------------------------------------------------------
-
 
867
MODULE RasterWorks - îáåðòêà áèáëèîòåêè Rasterworks.obj
-
 
868
------------------------------------------------------------------------------
-
 
869
MODULE libimg - îáåðòêà áèáëèîòåêè libimg.obj
-
 
870
------------------------------------------------------------------------------
-
 
871
MODULE NetDevices - îáåðòêà äëÿ ô.74 (ðàáîòà ñ ñåòåâûìè óñòðîéñòâàìè)
-
 
872
------------------------------------------------------------------------------
399
 
-
 
400
  Äëÿ Linux, ãåíåðàöèÿ äèíàìè÷åñêèõ áèáëèîòåê íå ðåàëèçîâàíà.
873
401