	   Oberon-07/11  i386
		Windows/Linux/KolibriOS.
------------------------------------------------------------------------------

	 

1.	Compiler.kex (KolibriOS) -   .
	 -      ".ob07",  ANSI
	 UTF-8  BOM-.
	 -    PE, ELF  MENUET01/MS COFF.
	:
	1)   
	2)    
		"con" - Windows console
		"gui" - Windows GUI
		"dll" - Windows DLL
		"elf" - Linux
		"kos" - KolibriOS
		"obj" - KolibriOS DLL
	3)    ,  ,   -
	1 ,  ELF .  2-  = "obj" (KolibriOS DLL),
	 3-    
	(0x00000001 .. 0xffffffff)    ,
	  - 0x00010000 (v1.0).
	:
		"C:\oberon-07\example.ob07" con 1
		"C:\oberon-07\example.ob07" obj 0x00020005 (* v2.5 *)
	   ,     0,
	 1.     KolibriOS,   
	.      (Windows,
	KolibriOS),   (Linux).
2.	 Lib -  

------------------------------------------------------------------------------
	  

1.	  SYSTEM
2.	  "_"  
3.	  
4.	 CASE       
	    Oberon (Revision 1.10.90)
5.	   
6.	 /     
7.	 DIV  MOD    
8.	   (    "//")
9.	    ARRAY  RECORD (  )
10.	   -
11.	   (TYPE A = B)

------------------------------------------------------------------------------
	 

1.	 

	  		    		   , 

	INTEGER       -2147483648 .. 2147483647 		4
	REAL	      1.40E-45 .. 3.34E+38			4
	LONGREAL      4.94E-324 .. 1.70E+308			8
	CHAR	       ASCII (0X .. 0FFX) 		1
	BOOLEAN       FALSE, TRUE				1
	SET	          {0 .. 31}	4

2.	   - 255 
3.	    - 255 
4.	     - 511 
5.	    - 5
6.	   - - 2047
7.	 NEW     
8.	     
9.	    Oberon-,    
	 

------------------------------------------------------------------------------
	 SYSTEM

   SYSTEM     ,
     SYSTEM   
       .

	PROCEDURE ADR(v:  ): INTEGER
		v - ,    ;
		  v

	PROCEDURE SIZE(T): INTEGER
		   T

	PROCEDURE TYPEID(T): INTEGER
		T - -  -,
		     -

	PROCEDURE INF(T): T
		T - REAL  LONGREAL,
		    ""

	PROCEDURE GET(a: INTEGER;
		VAR v:   , PROCEDURE, POINTER)
		v := [a]

	PROCEDURE PUT(a: INTEGER; x:   , PROCEDURE, POINTER)
		[a] := x

	PROCEDURE MOVE(Source, Dest, n: INTEGER)
		 n    Source  Dest,
		 Source  Dest   

	PROCEDURE COPY(VAR Source:  ; VAR Dest:  ; n: INTEGER)
		 n    Source  Dest.
		
		SYSTEM.MOVE(SYSTEM.ADR(Source), SYSTEM.ADR(Dest), n)

	PROCEDURE CODE(s: ARRAY OF CHAR)
		  
		s -    
		    
		: SYSTEM.CODE("B801000000") (* mov eax, 1 *)

     SYSTEM   CARD16 (2 ).   CARD16 
   ,   .
 CARD16 -> INTEGER  INTEGER -> CARD16   
:

	PROCEDURE Card16ToInt(w: SYSTEM.CARD16): INTEGER;
	VAR i: INTEGER;
	BEGIN
	  SYSTEM.PUT(SYSTEM.ADR(i), w)
	  RETURN i
	END Card16ToInt;

	PROCEDURE IntToCard16(i: INTEGER): SYSTEM.CARD16;
	VAR w: SYSTEM.CARD16;
	BEGIN
	  SYSTEM.GET(SYSTEM.ADR(i), w)
	  RETURN w
	END IntToCard16;

    SYSTEM     .

------------------------------------------------------------------------------
	 

        ,  
 PROCEDURE      : [stdcall], [cdecl]
 [winapi]. :

	PROCEDURE [cdecl] MyProc(x, y, z: INTEGER): INTEGER;

     [winapi],    stdcall 
-     ,  .
 [winapi]     Windows.
    -,    RECORD  
  [noalign]  [union].  [noalign]  
  ,   [union] ,    
  ,        .
 RECORD [union] ... END   (union)   C.
            
    .
     ,   SYSTEM.

------------------------------------------------------------------------------
	 CASE

    CASE:

	CaseStatement =
		CASE Expression OF ase {"|" ase}
			[ELSE StatementSequence] END.
	Case = [CaseLabelList ":" StatementSequence].
	CaseLabelList = CaseLabels {"," CaseLabels}.
	CaseLabels = ConstExpression [".." ConstExpression].

  :

	CASE x OF
	|-1:	DoSomething1
	| 1:	DoSomething2
	| 0:	DoSomething3
	ELSE
		DoSomething4
	END

        ,  ELSE
.        ELSE , 
     .

------------------------------------------------------------------------------
	     

          
  p(T)    p IS T  p = NIL.  
Oberon-       
.          
,      FALSE.     
     .

------------------------------------------------------------------------------
	  

	DISPOSE(VAR v: _)
		 ,   NEW 
		  v^,    v
		 NIL.

	LSR(x, n: INTEGER): INTEGER
		  x  n  .

	MIN(a, b: INTEGER): INTEGER
		   .

	MAX(a, b: INTEGER): INTEGER
		   .

	BITS(x: INTEGER): SET
		 x    SET.
		   .

	LENGTH(s: ARRAY OF CHAR): INTEGER
		 0X-  s,    0X.
		  0X ,   
		 s.

------------------------------------------------------------------------------
	DIV  MOD

	 x	   y	  x DIV y   x MOD y

	 5	   3	     1	       2
	-5	   3	    -2	       1
	 5	  -3	    -2	      -1
	-5	  -3	     1	      -2

------------------------------------------------------------------------------
	  

       ,    
 ,      .
    :

1.	     :
		PROCEDURE Proc(x: ARRAY OF ARRAY OF LONGREAL);
	  :
		Proc(SYSTEM.ADR(x), LEN(x), LEN(x[0])
2.	   -  RECORD:
		PROCEDURE Proc(VAR x: Rec);
	  :
		Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
3.	  ,   k,
	   k = 0:
		PROCEDURE Proc(p1, ..., pn);
	  :
		Proc(base(k - 1), base(k - 2), ..., base(0), p1, ..., pn),
	 base(m) -       
	 m (     
	 )

------------------------------------------------------------------------------
	 RTL

       RTL.  
  (   ,  ,  
    .)     . 
    ,    SetClose:

	PROCEDURE SetClose(proc: PROC),  TYPE PROC = PROCEDURE

SetClose   proc ( )   
dll- (Windows),     Windows DLL. 
       SetClose   
 .
          
(Windows),   (Linux),    (KolibriOS).

------------------------------------------------------------------------------
	 API

      API:  Windows, Linux  KolibriOS.  
 RTL,  API     . 
  .

------------------------------------------------------------------------------
	   DLL

     .  ,  
    ,       
 ("*"). KolibriOS DLL    "version"
( )  "lib_init" -    DLL:

	PROCEDURE [stdcall] lib_init(): INTEGER

       DLL.
   1.
      DLL  Linux  .

==============================================================================
==============================================================================

	 (KolibriOS)

------------------------------------------------------------------------------
MODULE Out -  

	PROCEDURE Open
		   

	PROCEDURE Int(x, width: INTEGER)
		   x;
		width -  ,   

	PROCEDURE Real(x: LONGREAL; width: INTEGER)
		   x   ;
		width -  ,   

	PROCEDURE Char(x: CHAR)
		  x

	PROCEDURE FixReal(x: LONGREAL; width, p: INTEGER)
		   x   ;
		width -  ,   ;
		p -     

	PROCEDURE Ln
		   

	PROCEDURE String(s: ARRAY OF CHAR)
		  s

------------------------------------------------------------------------------
MODULE In -  

	VAR Done: BOOLEAN
		  TRUE    
		 ,  FALSE

	PROCEDURE Open
		   ,
		   Done  TRUE

	PROCEDURE Int(VAR x: INTEGER)
		   INTEGER

	PROCEDURE Char(VAR x: CHAR)
		 

	PROCEDURE Real(VAR x: REAL)
		   REAL

	PROCEDURE LongReal(VAR x: LONGREAL)
		   LONGREAL

	PROCEDURE String(VAR s: ARRAY OF CHAR)
		 

	PROCEDURE Ln
		  ENTER

------------------------------------------------------------------------------
MODULE Console -    

	CONST

	     

		Black = 0      Blue = 1 	  Green = 2
		Cyan = 3       Red = 4		  Magenta = 5
		Brown = 6      LightGray = 7	  DarkGray = 8
		LightBlue = 9  LightGreen = 10	  LightCyan = 11
		LightRed = 12  LightMagenta = 13  Yellow = 14
		White = 15

	PROCEDURE Cls
		  

	PROCEDURE SetColor(FColor, BColor: INTEGER)
		   : FColor -  ,
		BColor -  ,   - 
		

	PROCEDURE SetCursor(x, y: INTEGER)
		     (x, y)

	PROCEDURE GetCursor(VAR x, y: INTEGER)
		      

	PROCEDURE GetCursorX(): INTEGER
		  x-  

	PROCEDURE GetCursorY(): INTEGER
		  y-  

------------------------------------------------------------------------------
MODULE ConsoleLib -   console.obj

------------------------------------------------------------------------------
MODULE Math -  

	CONST

		pi = 3.141592653589793D+00
		e  = 2.718281828459045D+00

	VAR

		Inf, nInf: LONGREAL
			   

	PROCEDURE IsNan(x: LONGREAL): BOOLEAN
		 TRUE,  x -  

	PROCEDURE IsInf(x: LONGREAL): BOOLEAN
		 TRUE,  x - 

	PROCEDURE sqrt(x: LONGREAL): LONGREAL
		  x

	PROCEDURE exp(x: LONGREAL): LONGREAL
		 x

	PROCEDURE ln(x: LONGREAL): LONGREAL
		  x

	PROCEDURE sin(x: LONGREAL): LONGREAL
		 x

	PROCEDURE cos(x: LONGREAL): LONGREAL
		 x

	PROCEDURE tan(x: LONGREAL): LONGREAL
		 x

	PROCEDURE arcsin(x: LONGREAL): LONGREAL
		 x

	PROCEDURE arccos(x: LONGREAL): LONGREAL
		 x

	PROCEDURE arctan(x: LONGREAL): LONGREAL
		 x

	PROCEDURE arctan2(y, x: LONGREAL): LONGREAL
		 y/x

	PROCEDURE power(base, exponent: LONGREAL): LONGREAL
		  base   exponent

	PROCEDURE log(base, x: LONGREAL): LONGREAL
		 x   base

	PROCEDURE sinh(x: LONGREAL): LONGREAL
		  x

	PROCEDURE cosh(x: LONGREAL): LONGREAL
		  x

	PROCEDURE tanh(x: LONGREAL): LONGREAL
		  x

	PROCEDURE arcsinh(x: LONGREAL): LONGREAL
		   x

	PROCEDURE arccosh(x: LONGREAL): LONGREAL
		   x

	PROCEDURE arctanh(x: LONGREAL): LONGREAL
		   x

	PROCEDURE round(x: LONGREAL): LONGREAL
		 x   

	PROCEDURE frac(x: LONGREAL): LONGREAL;
		   x

	PROCEDURE floor(x: LONGREAL): LONGREAL
		   (  LONGREAL),
		  x: floor(1.2) = 1.0

	PROCEDURE ceil(x: LONGREAL): LONGREAL
		   (  LONGREAL),
		  x: ceil(1.2) = 2.0

	PROCEDURE sgn(x: LONGREAL): INTEGER
		 x > 0  1
		 x < 0  -1
		 x = 0  0

------------------------------------------------------------------------------
MODULE Debug -    
	   Out

	PROCEDURE Open
		  

------------------------------------------------------------------------------
MODULE File -    

	TYPE

		FNAME = ARRAY 520 OF CHAR

		FS = POINTER TO rFS

		rFS = RECORD (*    *)
			subfunc, pos, hpos, bytes, buffer: INTEGER;
			name: FNAME
		END

		FD = POINTER TO rFD

		rFD = RECORD (*      *)
			attr: INTEGER;
			ntyp: CHAR;
			reserved: ARRAY 3 OF CHAR;
			time_create, date_create,
			time_access, date_access,
			time_modif,  date_modif,
			size, hsize: INTEGER;
			name: FNAME
		END

	CONST

		SEEK_BEG = 0
		SEEK_CUR = 1
		SEEK_END = 2

	PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
		      FName,   
		size  ,    
		 0 ().  , 
		 (kunpack).

	PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN
		       
		    FName   Info.
		   FALSE.

	PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
		 TRUE,     FName 

	PROCEDURE Close(VAR F: FS)
		 ,    
		 F   F  NIL

	PROCEDURE Open(FName: ARRAY OF CHAR): FS
		      
		 FName,    NIL

	PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
		    FName,    FALSE

	PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER
		  -  F  Offset,
		 Origin = (SEEK_BEG -  ,
		SEEK_CUR -  , SEEK_END -  ),
		    , :
			Seek(F, 0, SEEK_END)
		       
		;    -1

	PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER
		     . F -  
		  , Buffer -  
		, Count -  ,   
		 ;   ,   
		     / 
		  F.

	PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER
		     . F -  
		  , Buffer -  
		, Count -  ,   
		 ;   ,    
		    / 
		  F.

	PROCEDURE Create(FName: ARRAY OF CHAR): FS
		     FName ( ), 
		    ,
		   NIL

	PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
		    DirName,   
		 ,    FALSE

	PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN
		     DirName,
		   FALSE

	PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN
		 TRUE,     DirName 

------------------------------------------------------------------------------
MODULE Read -       F

	  TRUE      
	    / 
	  F

	PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN

	PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN

	PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN

	PROCEDURE LongReal(F: File.FS; VAR x: LONGREAL): BOOLEAN

	PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN

	PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN

	PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): BOOLEAN

------------------------------------------------------------------------------
MODULE Write -       F

	  TRUE      
	    / 
	  F

	PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN

	PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN

	PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN

	PROCEDURE LongReal(F: File.FS; x: LONGREAL): BOOLEAN

	PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN

	PROCEDURE Set(F: File.FS; x: SET): BOOLEAN

	PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN

------------------------------------------------------------------------------
MODULE DateTime - , 

	CONST ERR = -7.0D5

	PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
		       
		

	PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): LONGREAL
		 ,   
		Year, Month, Day, Hour, Min, Sec;
		    ERR = -7.0D5

	PROCEDURE Decode(Date: LONGREAL; VAR Year, Month, Day,
				Hour, Min, Sec: INTEGER): BOOLEAN
		 
		Year, Month, Day, Hour, Min, Sec   Date;
		   FALSE

------------------------------------------------------------------------------
MODULE Args -  

	VAR argc: INTEGER
		  ,  
		 

	PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
		   s n-  ,
		   0  argc - 1,
		  --   

------------------------------------------------------------------------------
MODULE KOSAPI

	PROCEDURE sysfunc1(arg1: INTEGER): INTEGER
	PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER
	...
	PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER
		   API  KolibriOS.
		arg1 .. arg7  
			eax, ebx, ecx, edx, esi, edi, ebp;
		   eax   .

	PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER
		   API  KolibriOS.
		arg1 -  eax, arg2 -  ebx,
		res2 -   ebx   ;
		   eax   .

	PROCEDURE malloc(size: INTEGER): INTEGER
		  .
		size -    ,
		   

	PROCEDURE free(ptr: INTEGER): INTEGER
		       ptr,
		 0

	PROCEDURE realloc(ptr, size: INTEGER): INTEGER
		  ,
		ptr -    ,
		size -  ,
		    ,
		0  

	PROCEDURE GetCommandLine(): INTEGER
		   

	PROCEDURE GetName(): INTEGER
		     

	PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER
		 DLL    name.   
		.    0.

	PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER
		name -  
		lib -    DLL
		  .    0.

------------------------------------------------------------------------------
MODULE ColorDlg -    "Color Dialog"

	TYPE

		Dialog = POINTER TO RECORD (*   *)
		    status: INTEGER   (*  :
					 0 -   Cancel
					 1 -   OK
					 2 -  	     *)

		    color:  INTEGER   (*   *)
		END

	PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog
		 
		draw_window -    
		(TYPE DRAW_WINDOW = PROCEDURE);
		     

	PROCEDURE Show(cd: Dialog)
		 
		cd -    ,    
		 Create

	PROCEDURE Destroy(VAR cd: Dialog)
		 
		cd -    

------------------------------------------------------------------------------
MODULE OpenDlg -    "Open Dialog"

	TYPE

		Dialog = POINTER TO RECORD (*   *)
		    status:   INTEGER  (*  :
					  0 -   Cancel
					  1 -   OK
					  2 -  	      *)

		    FileName: ARRAY 4096 OF CHAR (*    *)
		    FilePath: ARRAY 4096 OF CHAR (*   
						    		 *)
		END

	PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path,
			filter: ARRAY OF CHAR): Dialog
		 
		draw_window -    
			(TYPE DRAW_WINDOW = PROCEDURE)
		type -	 
			0 - 
			1 - 
			2 -  
		def_path -   ,  def_path  
			   
		filter -      ,
			     , 
			  "|", : "ASM|TXT|INI"
		     

	PROCEDURE Show(od: Dialog; Width, Height: INTEGER)
		 
		od -    ,    
		      Create
		Width  Height -     

	PROCEDURE Destroy(VAR od: Dialog)
		 
		od -    

------------------------------------------------------------------------------
MODULE kfonts -   kf-

	CONST

		bold		=   1
		italic		=   2
		underline	=   4
		strike_through	=   8
		smoothing	=  16
		bpp32		=  32

	TYPE

		TFont = POINTER TO TFont_desc (*    *)

	PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont
		   
		file_name    kf-
		-:	      /NIL ()

	PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN
		  
		Font	      
		font_size    
		-:	    TRUE/FALSE ()

	PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN
		,   ,  
		Font	      
		font_size    
		-:	    TRUE/FALSE ( )

	PROCEDURE Destroy(VAR Font: TFont)
		 ,   
		Font	      
		  Font  NIL

	PROCEDURE TextHeight(Font: TFont): INTEGER
		   
		Font	      
		-:	        

	PROCEDURE TextWidth(Font: TFont;
		    str, length, params: INTEGER): INTEGER
		   
		Font	      
		str	         Win-1251
		length	         -1,  
			     
		params	    - . 
		-:	        

	PROCEDURE TextOut(Font: TFont;
		    canvas, x, y, str, length, color, params: INTEGER)
		   
		    ,  .65 
		.7 (  24-)
		Font	      
		canvas	      
			     :
			      Xsize	  dd
			      Ysize	  dd
			      picture	  rb  Xsize * Ysize * 4 (32 )
					       Xsize * Ysize * 3 (24 )
		x, y	        
			     
		str	         Win-1251
		length	         -1,  
			     
		color	      0x00RRGGBB
		params	    -:
			       1   
			       2   
			       4   
			       8   
			      16    
			      32     32- 
			         
------------------------------------------------------------------------------
MODULE RasterWorks -   Rasterworks.obj
------------------------------------------------------------------------------
MODULE libimg -   libimg.obj
------------------------------------------------------------------------------
MODULE NetDevices -   .74 (   )
------------------------------------------------------------------------------