Browse Source

* split the win16 wintypes and winprocs units into include files, so they can
also be included in the implementation part of the system unit

git-svn-id: trunk@31564 -

nickysn 10 years ago
parent
commit
55a8158c51
8 changed files with 501 additions and 493 deletions
  1. 3 0
      .gitattributes
  2. 2 2
      rtl/win16/Makefile
  3. 2 2
      rtl/win16/Makefile.fpc
  4. 70 0
      rtl/win16/winprocs.inc
  5. 2 269
      rtl/win16/winprocs.pp
  6. 201 0
      rtl/win16/winprocsh.inc
  7. 220 0
      rtl/win16/wintypes.inc
  8. 1 220
      rtl/win16/wintypes.pp

+ 3 - 0
.gitattributes

@@ -9713,7 +9713,10 @@ rtl/win16/sysos.inc svneol=native#text/plain
 rtl/win16/sysosh.inc svneol=native#text/plain
 rtl/win16/sysosh.inc svneol=native#text/plain
 rtl/win16/system.pp svneol=native#text/plain
 rtl/win16/system.pp svneol=native#text/plain
 rtl/win16/win31.pp svneol=native#text/plain
 rtl/win16/win31.pp svneol=native#text/plain
+rtl/win16/winprocs.inc svneol=native#text/plain
 rtl/win16/winprocs.pp svneol=native#text/plain
 rtl/win16/winprocs.pp svneol=native#text/plain
+rtl/win16/winprocsh.inc svneol=native#text/plain
+rtl/win16/wintypes.inc svneol=native#text/plain
 rtl/win16/wintypes.pp svneol=native#text/plain
 rtl/win16/wintypes.pp svneol=native#text/plain
 rtl/win32/Makefile svneol=native#text/plain
 rtl/win32/Makefile svneol=native#text/plain
 rtl/win32/Makefile.fpc svneol=native#text/plain
 rtl/win32/Makefile.fpc svneol=native#text/plain

+ 2 - 2
rtl/win16/Makefile

@@ -2582,10 +2582,10 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
 		   system$(PPUEXT)
 		   system$(PPUEXT)
 	$(COMPILER) $(INC)/strings.pp
 	$(COMPILER) $(INC)/strings.pp
 	$(EXECPPAS)
 	$(EXECPPAS)
-wintypes$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) wintypes.pp
+wintypes$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) wintypes.pp wintypes.inc
 	$(COMPILER) wintypes.pp
 	$(COMPILER) wintypes.pp
 	$(EXECPPAS)
 	$(EXECPPAS)
-winprocs$(PPUEXT) : wintypes$(PPUEXT) winprocs.pp
+winprocs$(PPUEXT) : wintypes$(PPUEXT) winprocs.pp winprocsh.inc winprocs.inc
 	$(COMPILER) winprocs.pp
 	$(COMPILER) winprocs.pp
 	$(EXECPPAS)
 	$(EXECPPAS)
 win31$(PPUEXT) : wintypes$(PPUEXT) win31.pp
 win31$(PPUEXT) : wintypes$(PPUEXT) win31.pp

+ 2 - 2
rtl/win16/Makefile.fpc

@@ -92,11 +92,11 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
 # WinAPI Units
 # WinAPI Units
 #
 #
 
 
-wintypes$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) wintypes.pp
+wintypes$(PPUEXT) : $(SYSTEMUNIT)$(PPUEXT) wintypes.pp wintypes.inc
 	$(COMPILER) wintypes.pp
 	$(COMPILER) wintypes.pp
 	$(EXECPPAS)
 	$(EXECPPAS)
 
 
-winprocs$(PPUEXT) : wintypes$(PPUEXT) winprocs.pp
+winprocs$(PPUEXT) : wintypes$(PPUEXT) winprocs.pp winprocsh.inc winprocs.inc
 	$(COMPILER) winprocs.pp
 	$(COMPILER) winprocs.pp
 	$(EXECPPAS)
 	$(EXECPPAS)
 
 

+ 70 - 0
rtl/win16/winprocs.inc

@@ -0,0 +1,70 @@
+
+function LOBYTE(w: Word): Byte;
+begin
+  LOBYTE := Byte(w);
+end;
+
+function HIBYTE(w: Word): Byte;
+begin
+  HIBYTE := Byte(w shr 8);
+end;
+
+function LOWORD(l: LongInt): Word;
+begin
+  LOWORD := Word(l);
+end;
+
+function HIWORD(l: LongInt): Word;
+begin
+  HIWORD := Word(l shr 16);
+end;
+
+function MAKELONG(low, high: Word): LONG;
+begin
+  MAKELONG := low or (LongInt(high) shl 16);
+end;
+
+function MAKELPARAM(low, high: Word): LPARAM;
+begin
+  MAKELPARAM := MAKELONG(low, high);
+end;
+
+function MAKELRESULT(low, high: Word): LRESULT;
+begin
+  MAKELRESULT := MAKELONG(low, high);
+end;
+
+function MAKELP(sel, off: Word): FarPointer;
+begin
+  MAKELP := Ptr(sel, off);
+end;
+
+function SELECTOROF(lp: FarPointer): Word;
+begin
+  SELECTOROF:=HIWORD(LongInt(lp));
+end;
+
+function OFFSETOF(lp: FarPointer): Word;
+begin
+  OFFSETOF:=LOWORD(LongInt(lp));
+end;
+
+function GlobalDiscard(h: HGLOBAL): HGLOBAL;
+begin
+  GlobalDiscard := GlobalReAlloc(h, 0, GMEM_MOVEABLE);
+end;
+
+function LockData(dummy: SmallInt): HGLOBAL;
+begin
+  LockData := LockSegment(UINT(-1));
+end;
+
+procedure UnlockData(dummy: SmallInt);
+begin
+  UnlockSegment(UINT(-1));
+end;
+
+function LocalDiscard(h: HLOCAL): HLOCAL;
+begin
+  LocalDiscard := LocalReAlloc(h, 0, LMEM_MOVEABLE);
+end;

+ 2 - 269
rtl/win16/winprocs.pp

@@ -9,277 +9,10 @@ interface
 uses
 uses
   wintypes;
   wintypes;
 
 
-function LOBYTE(w: Word): Byte; inline;
-function HIBYTE(w: Word): Byte; inline;
-
-function LOWORD(l: LongInt): Word; inline;
-function HIWORD(l: LongInt): Word; inline;
-
-function MAKELONG(low, high: Word): LONG; inline;
-
-function MAKELPARAM(low, high: Word): LPARAM; inline;
-function MAKELRESULT(low, high: Word): LRESULT; inline;
-
-function MAKELP(sel, off: Word): FarPointer; inline;
-function SELECTOROF(lp: FarPointer): Word; inline;
-function OFFSETOF(lp: FarPointer): Word; inline;
-
-// FIELDOFFSET
-
-{ System Information }
-function GetVersion: DWORD; external 'KERNEL';
-
-function GetFreeSpace(Flag: UINT): DWORD; external 'KERNEL';
-function GetCurrentPDB: UINT; external 'KERNEL';
-
-function GetWindowsDirectory(Buffer: LPSTR; Size: UINT): UINT; external 'KERNEL';
-function GetSystemDirectory(Buffer: LPSTR; Size: UINT): UINT; external 'KERNEL';
-
-function GetWinFlags: DWORD; external 'KERNEL';
-
-function GetDOSEnvironment: LPSTR; external 'KERNEL';
-
-function GetCurrentTime: DWORD; external 'USER';
-function GetTickCount: DWORD; external 'USER';
-function GetTimerResolution: DWORD; external 'USER';
-
-{ Error handling }
-procedure FatalExit(Code: SmallInt); external 'KERNEL';
-procedure FatalAppExit(Action: UINT; MessageText: LPCSTR); external 'KERNEL';
-
-function ExitWindows(dwReturnCode: DWORD; wReserved: UINT): BOOL; external 'USER';
-
-procedure DebugBreak; external 'KERNEL';
-procedure OutputDebugString(OutputString: LPCSTR); external 'KERNEL';
-
-function SetErrorMode(Mode: UINT): UINT; external 'KERNEL';
-
-{ Catch/Throw and stack management }
-
-function Catch(CatchBuf: LPCATCHBUF): SmallInt; external 'KERNEL';
-procedure Throw(CatchBuf: LPCATCHBUF; ThrowBack: SmallInt); external 'KERNEL';
-{$ifdef VAR_PARAMS_ARE_FAR}
-function Catch(var CatchBuf: TCatchBuf): SmallInt; external 'KERNEL';
-procedure Throw(var CatchBuf: TCatchBuf; ThrowBack: SmallInt); external 'KERNEL';
-{$endif}
-
-procedure SwitchStackBack; external 'KERNEL';
-procedure SwitchStackTo(StackSegment, StackPointer, StackTop: UINT); external 'KERNEL';
-
-{ Module Management }
-
-function LoadModule(ModuleName: LPCSTR; ParameterName: LPVOID): HINST; external 'KERNEL';
-function FreeModule(Module: HINST): BOOL; external 'KERNEL';
-
-function LoadLibrary(LibFileName: LPCSTR): HINST; external 'KERNEL';
-procedure FreeLibrary(LibModule: HINST); external 'KERNEL';
-
-function WinExec(CmdLine: LPCSTR; CmdShow: UINT): UINT; external 'KERNEL';
-
-function GetModuleHandle(ModuleName: LPCSTR): HMODULE; external 'KERNEL';
-
-function GetModuleUsage(Module: HINST): SmallInt; external 'KERNEL';
-function GetModuleFileName(Module: HINST; FileName: LPSTR; Size: SmallInt): SmallInt; external 'KERNEL';
-
-function GetProcAddress(Module: HINST; ProcName: LPCSTR): FARPROC; external 'KERNEL';
-
-function GetInstanceData(Instance: HINST; Data: PBYTE; Count: SmallInt): SmallInt; external 'KERNEL';
-
-function GetCodeHandle(Proc: FARPROC): HGLOBAL; external 'KERNEL';
-
-procedure GetCodeInfo(lpProc: FARPROC; lpSegInfo: LPSEGINFO); external 'KERNEL';
-
-function MakeProcInstance(Proc: FARPROC; Instance: HINST): FARPROC; external 'KERNEL';
-procedure FreeProcInstance(Proc: FARPROC); external 'KERNEL';
-
-{#ifdef _LAX
-#define MakeProcInstance(__F, __H) MakeProcInstance((FARPROC)__F, __H)
-#define FreeProcInstance(__F)      FreeProcInstance((FARPROC)__F)
-#endif /* _LAX */}
-
-function SetSwapAreaSize(Size: UINT): LONG; external 'KERNEL';
-procedure SwapRecording(Flag: UINT); external 'KERNEL';
-procedure ValidateCodeSegments; external 'KERNEL';
-
-{ Task Management }
-
-function GetNumTasks: UINT; external 'KERNEL';
-function GetCurrentTask: HTASK; external 'KERNEL';
-
-procedure Yield; external 'KERNEL';
-procedure DirectedYield(Task: HTASK); external 'KERNEL';
-
-{ Global memory management }
-
-function GlobalDiscard(h: HGLOBAL): HGLOBAL; inline;
-
-function GlobalAlloc(Flags: UINT; Bytes: DWORD): HGLOBAL; external 'KERNEL';
-function GlobalReAlloc(Mem: HGLOBAL; Bytes: DWORD; Flags: UINT): HGLOBAL; external 'KERNEL';
-function GlobalFree(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
-
-function GlobalDosAlloc(Bytes: DWORD): DWORD; external 'KERNEL';
-function GlobalDosFree(Selector: UINT): UINT; external 'KERNEL';
-
-function GlobalLock(Mem: HGLOBAL): FarPointer; external 'KERNEL';
-function GlobalUnlock(Mem: HGLOBAL): BOOL; external 'KERNEL';
-
-function GlobalSize(Mem: HGLOBAL): DWORD; external 'KERNEL';
-function GlobalHandle(Mem: UINT): DWORD; external 'KERNEL';
-
-function GlobalFlags(Mem: HGLOBAL): UINT; external 'KERNEL';
-
-function GlobalWire(Mem: HGLOBAL): FarPointer; external 'KERNEL';
-function GlobalUnWire(Mem: HGLOBAL): BOOL; external 'KERNEL';
-
-function GlobalPageLock(Selector: HGLOBAL): UINT; external 'KERNEL';
-function GlobalPageUnlock(Selector: HGLOBAL): UINT; external 'KERNEL';
-
-procedure GlobalFix(Mem: HGLOBAL); external 'KERNEL';
-procedure GlobalUnfix(Mem: HGLOBAL); external 'KERNEL';
-
-function GlobalLRUNewest(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
-function GlobalLRUOldest(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
-
-function GlobalCompact(MinFree: DWORD): DWORD; external 'KERNEL';
-
-procedure GlobalNotify(NotifyProc: GNOTIFYPROC); external 'KERNEL';
-
-function LockSegment(Segment: UINT): HGLOBAL; external 'KERNEL';
-procedure UnlockSegment(Segment: UINT); external 'KERNEL';
-
-function LockData(dummy: SmallInt): HGLOBAL; inline;
-procedure UnlockData(dummy: SmallInt); inline;
-
-function AllocSelector(Selector: UINT): UINT; external 'KERNEL';
-function FreeSelector(Selector: UINT): UINT; external 'KERNEL';
-function AllocDStoCSAlias(Selector: UINT): UINT; external 'KERNEL';
-function PrestoChangoSelector(sourceSel, destSel: UINT): UINT; external 'KERNEL';
-function GetSelectorBase(Selector: UINT): DWORD; external 'KERNEL';
-function SetSelectorBase(Selector: UINT; Base: DWORD): UINT; external 'KERNEL';
-function GetSelectorLimit(Selector: UINT): DWORD; external 'KERNEL';
-function SetSelectorLimit(Selector: UINT; Base: DWORD): UINT; external 'KERNEL';
-
-procedure LimitEmsPages(Kbytes: DWORD); external 'KERNEL';
-
-procedure ValidateFreeSpaces; external 'KERNEL';
-
-{ Local Memory Management }
-
-function LocalDiscard(h: HLOCAL): HLOCAL; inline;
-
-function LocalAlloc(Flags, Bytes: UINT): HLOCAL; external 'KERNEL';
-function LocalReAlloc(Mem: HLOCAL; Bytes, Flags: UINT): HLOCAL; external 'KERNEL';
-function LocalFree(Mem: HLOCAL): HLOCAL; external 'KERNEL';
-
-function LocalLock(Mem: HLOCAL): NearPointer; external 'KERNEL';
-function LocalUnlock(Mem: HLOCAL): BOOL; external 'KERNEL';
-
-function LocalSize(Mem: HLOCAL): UINT; external 'KERNEL';
-function LocalHandle(Mem: NearPointer): HLOCAL; external 'KERNEL';
-
-function LocalFlags(Mem: HLOCAL): UINT; external 'KERNEL';
-
-function LocalInit(Segment, Start, EndPos: UINT): BOOL; external 'KERNEL';
-function LocalCompact(MinFree: UINT): UINT; external 'KERNEL';
-function LocalShrink(Seg: HLOCAL; Size: UINT): UINT; external 'KERNEL';
-
-{ File I/O }
-
-function OpenFile(FileName: LPCSTR; ReOpenBuff: LPOFSTRUCT; Style: UINT): HFILE; external 'KERNEL';
-{$ifdef VAR_PARAMS_ARE_FAR}
-function OpenFile(FileName: LPCSTR; var ReOpenBuff: TOFStruct; Style: UINT): HFILE; external 'KERNEL';
-{$endif}
-
-function _lopen(PathName: LPCSTR; ReadWrite: SmallInt): HFILE; external 'KERNEL';
-function _lcreat(PathName: LPCSTR; Attribute: SmallInt): HFILE; external 'KERNEL';
-
-function _lclose(FileHandle: HFILE): HFILE; external 'KERNEL';
-
-function _llseek(FileHandle: HFILE; Offset: LONG; Origin: SmallInt): LONG; external 'KERNEL';
-
-function _lread(FileHandle: HFILE; Buffer: HugePointer; Bytes: UINT): UINT; external 'KERNEL';
-function _lread(FileHandle: HFILE; Buffer: FarPointer; Bytes: UINT): UINT; external 'KERNEL';
-function _lwrite(FileHandle: HFILE; Buffer: HugePointer; Bytes: UINT): UINT; external 'KERNEL';
-function _lwrite(FileHandle: HFILE; Buffer: FarPointer; Bytes: UINT): UINT; external 'KERNEL';
-
-function GetTempFileName(DriveLetter: BYTE; PrefixString: LPCSTR; Unique: UINT; TempFileName: LPSTR): SmallInt; external 'KERNEL';
-function GetTempFileName(DriveLetter: Char; PrefixString: LPCSTR; Unique: UINT; TempFileName: LPSTR): SmallInt; external 'KERNEL';
-function GetTempDrive(DriveLetter: Char): BYTE; external 'KERNEL';
-
-function GetDriveType(Drive: SmallInt): UINT; external 'KERNEL';
-
-function SetHandleCount(Number: UINT): UINT; external 'KERNEL';
+{$I winprocsh.inc}
 
 
 implementation
 implementation
 
 
-function LOBYTE(w: Word): Byte;
-begin
-  LOBYTE := Byte(w);
-end;
-
-function HIBYTE(w: Word): Byte;
-begin
-  HIBYTE := Byte(w shr 8);
-end;
-
-function LOWORD(l: LongInt): Word;
-begin
-  LOWORD := Word(l);
-end;
-
-function HIWORD(l: LongInt): Word;
-begin
-  HIWORD := Word(l shr 16);
-end;
-
-function MAKELONG(low, high: Word): LONG;
-begin
-  MAKELONG := low or (LongInt(high) shl 16);
-end;
-
-function MAKELPARAM(low, high: Word): LPARAM;
-begin
-  MAKELPARAM := MAKELONG(low, high);
-end;
-
-function MAKELRESULT(low, high: Word): LRESULT;
-begin
-  MAKELRESULT := MAKELONG(low, high);
-end;
-
-function MAKELP(sel, off: Word): FarPointer;
-begin
-  MAKELP := Ptr(sel, off);
-end;
-
-function SELECTOROF(lp: FarPointer): Word;
-begin
-  SELECTOROF:=HIWORD(LongInt(lp));
-end;
-
-function OFFSETOF(lp: FarPointer): Word;
-begin
-  OFFSETOF:=LOWORD(LongInt(lp));
-end;
-
-function GlobalDiscard(h: HGLOBAL): HGLOBAL;
-begin
-  GlobalDiscard := GlobalReAlloc(h, 0, GMEM_MOVEABLE);
-end;
-
-function LockData(dummy: SmallInt): HGLOBAL;
-begin
-  LockData := LockSegment(UINT(-1));
-end;
-
-procedure UnlockData(dummy: SmallInt);
-begin
-  UnlockSegment(UINT(-1));
-end;
-
-function LocalDiscard(h: HLOCAL): HLOCAL;
-begin
-  LocalDiscard := LocalReAlloc(h, 0, LMEM_MOVEABLE);
-end;
+{$I winprocs.inc}
 
 
 end.
 end.

+ 201 - 0
rtl/win16/winprocsh.inc

@@ -0,0 +1,201 @@
+
+function LOBYTE(w: Word): Byte; inline;
+function HIBYTE(w: Word): Byte; inline;
+
+function LOWORD(l: LongInt): Word; inline;
+function HIWORD(l: LongInt): Word; inline;
+
+function MAKELONG(low, high: Word): LONG; inline;
+
+function MAKELPARAM(low, high: Word): LPARAM; inline;
+function MAKELRESULT(low, high: Word): LRESULT; inline;
+
+function MAKELP(sel, off: Word): FarPointer; inline;
+function SELECTOROF(lp: FarPointer): Word; inline;
+function OFFSETOF(lp: FarPointer): Word; inline;
+
+// FIELDOFFSET
+
+{ System Information }
+function GetVersion: DWORD; external 'KERNEL';
+
+function GetFreeSpace(Flag: UINT): DWORD; external 'KERNEL';
+function GetCurrentPDB: UINT; external 'KERNEL';
+
+function GetWindowsDirectory(Buffer: LPSTR; Size: UINT): UINT; external 'KERNEL';
+function GetSystemDirectory(Buffer: LPSTR; Size: UINT): UINT; external 'KERNEL';
+
+function GetWinFlags: DWORD; external 'KERNEL';
+
+function GetDOSEnvironment: LPSTR; external 'KERNEL';
+
+function GetCurrentTime: DWORD; external 'USER';
+function GetTickCount: DWORD; external 'USER';
+function GetTimerResolution: DWORD; external 'USER';
+
+{ Error handling }
+procedure FatalExit(Code: SmallInt); external 'KERNEL';
+procedure FatalAppExit(Action: UINT; MessageText: LPCSTR); external 'KERNEL';
+
+function ExitWindows(dwReturnCode: DWORD; wReserved: UINT): BOOL; external 'USER';
+
+procedure DebugBreak; external 'KERNEL';
+procedure OutputDebugString(OutputString: LPCSTR); external 'KERNEL';
+
+function SetErrorMode(Mode: UINT): UINT; external 'KERNEL';
+
+{ Catch/Throw and stack management }
+
+function Catch(CatchBuf: LPCATCHBUF): SmallInt; external 'KERNEL';
+procedure Throw(CatchBuf: LPCATCHBUF; ThrowBack: SmallInt); external 'KERNEL';
+{$ifdef VAR_PARAMS_ARE_FAR}
+function Catch(var CatchBuf: TCatchBuf): SmallInt; external 'KERNEL';
+procedure Throw(var CatchBuf: TCatchBuf; ThrowBack: SmallInt); external 'KERNEL';
+{$endif}
+
+procedure SwitchStackBack; external 'KERNEL';
+procedure SwitchStackTo(StackSegment, StackPointer, StackTop: UINT); external 'KERNEL';
+
+{ Module Management }
+
+function LoadModule(ModuleName: LPCSTR; ParameterName: LPVOID): HINST; external 'KERNEL';
+function FreeModule(Module: HINST): BOOL; external 'KERNEL';
+
+function LoadLibrary(LibFileName: LPCSTR): HINST; external 'KERNEL';
+procedure FreeLibrary(LibModule: HINST); external 'KERNEL';
+
+function WinExec(CmdLine: LPCSTR; CmdShow: UINT): UINT; external 'KERNEL';
+
+function GetModuleHandle(ModuleName: LPCSTR): HMODULE; external 'KERNEL';
+
+function GetModuleUsage(Module: HINST): SmallInt; external 'KERNEL';
+function GetModuleFileName(Module: HINST; FileName: LPSTR; Size: SmallInt): SmallInt; external 'KERNEL';
+
+function GetProcAddress(Module: HINST; ProcName: LPCSTR): FARPROC; external 'KERNEL';
+
+function GetInstanceData(Instance: HINST; Data: PBYTE; Count: SmallInt): SmallInt; external 'KERNEL';
+
+function GetCodeHandle(Proc: FARPROC): HGLOBAL; external 'KERNEL';
+
+procedure GetCodeInfo(lpProc: FARPROC; lpSegInfo: LPSEGINFO); external 'KERNEL';
+
+function MakeProcInstance(Proc: FARPROC; Instance: HINST): FARPROC; external 'KERNEL';
+procedure FreeProcInstance(Proc: FARPROC); external 'KERNEL';
+
+{#ifdef _LAX
+#define MakeProcInstance(__F, __H) MakeProcInstance((FARPROC)__F, __H)
+#define FreeProcInstance(__F)      FreeProcInstance((FARPROC)__F)
+#endif /* _LAX */}
+
+function SetSwapAreaSize(Size: UINT): LONG; external 'KERNEL';
+procedure SwapRecording(Flag: UINT); external 'KERNEL';
+procedure ValidateCodeSegments; external 'KERNEL';
+
+{ Task Management }
+
+function GetNumTasks: UINT; external 'KERNEL';
+function GetCurrentTask: HTASK; external 'KERNEL';
+
+procedure Yield; external 'KERNEL';
+procedure DirectedYield(Task: HTASK); external 'KERNEL';
+
+{ Global memory management }
+
+function GlobalDiscard(h: HGLOBAL): HGLOBAL; inline;
+
+function GlobalAlloc(Flags: UINT; Bytes: DWORD): HGLOBAL; external 'KERNEL';
+function GlobalReAlloc(Mem: HGLOBAL; Bytes: DWORD; Flags: UINT): HGLOBAL; external 'KERNEL';
+function GlobalFree(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
+
+function GlobalDosAlloc(Bytes: DWORD): DWORD; external 'KERNEL';
+function GlobalDosFree(Selector: UINT): UINT; external 'KERNEL';
+
+function GlobalLock(Mem: HGLOBAL): FarPointer; external 'KERNEL';
+function GlobalUnlock(Mem: HGLOBAL): BOOL; external 'KERNEL';
+
+function GlobalSize(Mem: HGLOBAL): DWORD; external 'KERNEL';
+function GlobalHandle(Mem: UINT): DWORD; external 'KERNEL';
+
+function GlobalFlags(Mem: HGLOBAL): UINT; external 'KERNEL';
+
+function GlobalWire(Mem: HGLOBAL): FarPointer; external 'KERNEL';
+function GlobalUnWire(Mem: HGLOBAL): BOOL; external 'KERNEL';
+
+function GlobalPageLock(Selector: HGLOBAL): UINT; external 'KERNEL';
+function GlobalPageUnlock(Selector: HGLOBAL): UINT; external 'KERNEL';
+
+procedure GlobalFix(Mem: HGLOBAL); external 'KERNEL';
+procedure GlobalUnfix(Mem: HGLOBAL); external 'KERNEL';
+
+function GlobalLRUNewest(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
+function GlobalLRUOldest(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
+
+function GlobalCompact(MinFree: DWORD): DWORD; external 'KERNEL';
+
+procedure GlobalNotify(NotifyProc: GNOTIFYPROC); external 'KERNEL';
+
+function LockSegment(Segment: UINT): HGLOBAL; external 'KERNEL';
+procedure UnlockSegment(Segment: UINT); external 'KERNEL';
+
+function LockData(dummy: SmallInt): HGLOBAL; inline;
+procedure UnlockData(dummy: SmallInt); inline;
+
+function AllocSelector(Selector: UINT): UINT; external 'KERNEL';
+function FreeSelector(Selector: UINT): UINT; external 'KERNEL';
+function AllocDStoCSAlias(Selector: UINT): UINT; external 'KERNEL';
+function PrestoChangoSelector(sourceSel, destSel: UINT): UINT; external 'KERNEL';
+function GetSelectorBase(Selector: UINT): DWORD; external 'KERNEL';
+function SetSelectorBase(Selector: UINT; Base: DWORD): UINT; external 'KERNEL';
+function GetSelectorLimit(Selector: UINT): DWORD; external 'KERNEL';
+function SetSelectorLimit(Selector: UINT; Base: DWORD): UINT; external 'KERNEL';
+
+procedure LimitEmsPages(Kbytes: DWORD); external 'KERNEL';
+
+procedure ValidateFreeSpaces; external 'KERNEL';
+
+{ Local Memory Management }
+
+function LocalDiscard(h: HLOCAL): HLOCAL; inline;
+
+function LocalAlloc(Flags, Bytes: UINT): HLOCAL; external 'KERNEL';
+function LocalReAlloc(Mem: HLOCAL; Bytes, Flags: UINT): HLOCAL; external 'KERNEL';
+function LocalFree(Mem: HLOCAL): HLOCAL; external 'KERNEL';
+
+function LocalLock(Mem: HLOCAL): NearPointer; external 'KERNEL';
+function LocalUnlock(Mem: HLOCAL): BOOL; external 'KERNEL';
+
+function LocalSize(Mem: HLOCAL): UINT; external 'KERNEL';
+function LocalHandle(Mem: NearPointer): HLOCAL; external 'KERNEL';
+
+function LocalFlags(Mem: HLOCAL): UINT; external 'KERNEL';
+
+function LocalInit(Segment, Start, EndPos: UINT): BOOL; external 'KERNEL';
+function LocalCompact(MinFree: UINT): UINT; external 'KERNEL';
+function LocalShrink(Seg: HLOCAL; Size: UINT): UINT; external 'KERNEL';
+
+{ File I/O }
+
+function OpenFile(FileName: LPCSTR; ReOpenBuff: LPOFSTRUCT; Style: UINT): HFILE; external 'KERNEL';
+{$ifdef VAR_PARAMS_ARE_FAR}
+function OpenFile(FileName: LPCSTR; var ReOpenBuff: TOFStruct; Style: UINT): HFILE; external 'KERNEL';
+{$endif}
+
+function _lopen(PathName: LPCSTR; ReadWrite: SmallInt): HFILE; external 'KERNEL';
+function _lcreat(PathName: LPCSTR; Attribute: SmallInt): HFILE; external 'KERNEL';
+
+function _lclose(FileHandle: HFILE): HFILE; external 'KERNEL';
+
+function _llseek(FileHandle: HFILE; Offset: LONG; Origin: SmallInt): LONG; external 'KERNEL';
+
+function _lread(FileHandle: HFILE; Buffer: HugePointer; Bytes: UINT): UINT; external 'KERNEL';
+function _lread(FileHandle: HFILE; Buffer: FarPointer; Bytes: UINT): UINT; external 'KERNEL';
+function _lwrite(FileHandle: HFILE; Buffer: HugePointer; Bytes: UINT): UINT; external 'KERNEL';
+function _lwrite(FileHandle: HFILE; Buffer: FarPointer; Bytes: UINT): UINT; external 'KERNEL';
+
+function GetTempFileName(DriveLetter: BYTE; PrefixString: LPCSTR; Unique: UINT; TempFileName: LPSTR): SmallInt; external 'KERNEL';
+function GetTempFileName(DriveLetter: Char; PrefixString: LPCSTR; Unique: UINT; TempFileName: LPSTR): SmallInt; external 'KERNEL';
+function GetTempDrive(DriveLetter: Char): BYTE; external 'KERNEL';
+
+function GetDriveType(Drive: SmallInt): UINT; external 'KERNEL';
+
+function SetHandleCount(Number: UINT): UINT; external 'KERNEL';

+ 220 - 0
rtl/win16/wintypes.inc

@@ -0,0 +1,220 @@
+type
+  Bool = WordBool;
+  
+  UINT = Word;
+  LONG = LongInt;
+  
+  WPARAM = UINT;
+  LPARAM = LONG;
+  LRESULT = LONG;
+  
+  { The Win16 C headers define the P-prefixed types - PSTR, etc. as near pointers.
+    Borland Pascal 7 defines them as far pointers (in other words, the same as the
+    LP-prefixed type - LPSTR)  We define them as the default pointer type for the
+    current memory model. This means we'll be BP7 compatible in the large memory
+    model (which is the only memory model supported by BP7).
+
+    Also, using memory models other than 'large' under win16 is somewhat nasty and
+    is better to be avoided. }
+  PSTR = ^Char;
+  NPSTR = ^Char; near;
+  LPSTR = ^Char; far;
+  LPCSTR = ^Char; far;
+  
+  { PBYTE is already defined in system }
+  LPBYTE = ^Byte; far;
+  
+  PINT = ^SmallInt;
+  LPINT = ^SmallInt; far;
+  
+  { PWORD is already defined in system }
+  LPWORD = ^Word; far;
+  
+  PLONG = ^LONG;
+  LPLONG = ^LONG; far;
+  
+  { PDWORD is already defined in system }
+  LPDWORD = ^DWORD; far;
+  
+  LPVOID = FarPointer;
+  
+  FARPROC = FarPointer;
+  TFarProc = FARPROC;
+
+  PHANDLE = ^THandle;
+  SPHANDLE = ^THandle; near;
+  LPHANDLE = ^THandle; far;
+  
+  HGLOBAL = THandle;
+  HLOCAL = THandle;
+  
+  TGlobalHandle = THandle;
+  TLocalHandle = THandle;
+  
+  ATOM = UINT;
+  TAtom = ATOM;
+  
+  HINST = THandle; { instead of HINSTANCE, to avoid conflict with var hInstance }
+  HMODULE = HINST;
+  
+const
+  { GetWinFlags result mask values }
+  WF_PMODE      = $0001;
+  WF_CPU286     = $0002;
+  WF_CPU386     = $0004;
+  WF_CPU486     = $0008;
+  WF_STANDARD   = $0010;
+  WF_WIN286     = $0010;
+  WF_ENHANCED   = $0020;
+  WF_WIN386     = $0020;
+  WF_CPU086     = $0040;
+  WF_CPU186     = $0080;
+  WF_LARGEFRAME = $0100;
+  WF_SMALLFRAME = $0200;
+  WF_80x87      = $0400;
+  WF_PAGING     = $0800;
+  WF_WLO        = $8000;
+
+{ ExitWindows values }
+  EW_RESTARTWINDOWS = $42;
+
+{ SetErrorMode() constants }
+  SEM_FAILCRITICALERRORS = $0001;
+  SEM_NOGPFAULTERRORBOX  = $0002;
+  SEM_NOOPENFILEERRORBOX = $8000;
+
+type
+  LPCATCHBUF = ^CATCHBUF; far;
+  CATCHBUF = array [0..8] of SmallInt;
+  PCatchBuf = ^TCatchBuf;
+  TCatchBuf = CATCHBUF;
+
+const
+  HINSTANCE_ERROR = HINST(32);
+
+{ Windows Exit Procedure flag values }
+  WEP_SYSTEM_EXIT = 1;
+  WEP_FREE_DLL    = 0;
+
+type
+  LPSEGINFO = ^SEGINFO; far;
+  SEGINFO = record
+    offSegment: UINT;
+    cbSegment: UINT;
+    flags: UINT;
+    cbAlloc: UINT;
+    h: HGLOBAL;
+    alignShift: UINT;
+    reserved: array [0..1] of UINT;
+  end;
+  PSegInfo = ^TSegInfo;
+  TSegInfo = SEGINFO;
+
+  HTASK = THandle;
+
+const
+{ Global Memory Flags }
+  GMEM_FIXED       = $0000;
+  GMEM_MOVEABLE    = $0002;
+  GMEM_NOCOMPACT   = $0010;
+  GMEM_NODISCARD   = $0020;
+  GMEM_ZEROINIT    = $0040;
+  GMEM_MODIFY      = $0080;
+  GMEM_DISCARDABLE = $0100;
+  GMEM_NOT_BANKED  = $1000;
+  GMEM_SHARE       = $2000;
+  GMEM_DDESHARE    = $2000;
+  GMEM_NOTIFY      = $4000;
+  GMEM_LOWER       = GMEM_NOT_BANKED;
+
+  GHND             = GMEM_MOVEABLE or GMEM_ZEROINIT;
+  GPTR             = GMEM_FIXED or GMEM_ZEROINIT;
+
+{ GlobalFlags return flags (in addition to GMEM_DISCARDABLE) }
+  GMEM_DISCARDED   = $4000;
+  GMEM_LOCKCOUNT   = $00FF;
+
+{ Low system memory notification message }
+  WM_COMPACTING    = $0041;
+
+type
+  GNOTIFYPROC = function(hGlbl: HGLOBAL): BOOL; far;
+
+const
+{ Local Memory Flags }
+  LMEM_FIXED       = $0000;
+  LMEM_MOVEABLE    = $0002;
+  LMEM_NOCOMPACT   = $0010;
+  LMEM_NODISCARD   = $0020;
+  LMEM_ZEROINIT    = $0040;
+  LMEM_MODIFY      = $0080;
+  LMEM_DISCARDABLE = $0F00;
+
+  LHND             = LMEM_MOVEABLE or LMEM_ZEROINIT;
+  LPTR             = LMEM_FIXED or LMEM_ZEROINIT;
+
+  NONZEROLHND      = LMEM_MOVEABLE;
+  NONZEROLPTR      = LMEM_FIXED;
+
+{ LocalFlags return flags (in addition to LMEM_DISCARDABLE) }
+  LMEM_DISCARDED   = $4000;
+  LMEM_LOCKCOUNT   = $00FF;
+
+{ File I/O }
+type
+  HFILE = SmallInt;
+
+const
+  HFILE_ERROR = HFILE(-1);
+
+type
+{ OpenFile() Structure }
+  POFSTRUCT = ^OFSTRUCT;
+  NPOFSTRUCT = ^OFSTRUCT; near;
+  LPOFSTRUCT = ^OFSTRUCT; far;
+  OFSTRUCT = record
+    cBytes: BYTE;
+    fFixedDisk: BYTE;
+    nErrCode: UINT;
+    reserved: array [0..3] of BYTE;
+    szPathName: array [0..127] of char;
+  end;
+  TOFStruct = OFSTRUCT;
+
+const
+{ OpenFile() Flags }
+  OF_READ             = $0000;
+  OF_WRITE            = $0001;
+  OF_READWRITE        = $0002;
+  OF_SHARE_COMPAT     = $0000;
+  OF_SHARE_EXCLUSIVE  = $0010;
+  OF_SHARE_DENY_WRITE = $0020;
+  OF_SHARE_DENY_READ  = $0030;
+  OF_SHARE_DENY_NONE  = $0040;
+  OF_PARSE            = $0100;
+  OF_DELETE           = $0200;
+  OF_VERIFY           = $0400;      { Used with OF_REOPEN }
+  OF_SEARCH           = $0400;      { Used without OF_REOPEN }
+  OF_CANCEL           = $0800;
+  OF_CREATE           = $1000;
+  OF_PROMPT           = $2000;
+  OF_EXIST            = $4000;
+  OF_REOPEN           = $8000;
+
+{ _lopen() flags }
+  READ       = 0;
+  WRITE      = 1;
+  READ_WRITE = 2;
+
+{ _llseek origin values }
+  SEEK_SET = 0;
+  SEEK_CUR = 1;
+  SEEK_END = 2;
+
+{ GetTempFileName() Flags }
+  TF_FORCEDRIVE = BYTE($80);
+
+{ GetDriveType return values }
+  DRIVE_REMOVABLE = 2;
+  DRIVE_FIXED     = 3;
+  DRIVE_REMOTE    = 4;

+ 1 - 220
rtl/win16/wintypes.pp

@@ -2,226 +2,7 @@ unit wintypes;
 
 
 interface
 interface
 
 
-type
-  Bool = WordBool;
-  
-  UINT = Word;
-  LONG = LongInt;
-  
-  WPARAM = UINT;
-  LPARAM = LONG;
-  LRESULT = LONG;
-  
-  { The Win16 C headers define the P-prefixed types - PSTR, etc. as near pointers.
-    Borland Pascal 7 defines them as far pointers (in other words, the same as the
-    LP-prefixed type - LPSTR)  We define them as the default pointer type for the
-    current memory model. This means we'll be BP7 compatible in the large memory
-    model (which is the only memory model supported by BP7).
-
-    Also, using memory models other than 'large' under win16 is somewhat nasty and
-    is better to be avoided. }
-  PSTR = ^Char;
-  NPSTR = ^Char; near;
-  LPSTR = ^Char; far;
-  LPCSTR = ^Char; far;
-  
-  { PBYTE is already defined in system }
-  LPBYTE = ^Byte; far;
-  
-  PINT = ^SmallInt;
-  LPINT = ^SmallInt; far;
-  
-  { PWORD is already defined in system }
-  LPWORD = ^Word; far;
-  
-  PLONG = ^LONG;
-  LPLONG = ^LONG; far;
-  
-  { PDWORD is already defined in system }
-  LPDWORD = ^DWORD; far;
-  
-  LPVOID = FarPointer;
-  
-  FARPROC = FarPointer;
-  TFarProc = FARPROC;
-
-  PHANDLE = ^THandle;
-  SPHANDLE = ^THandle; near;
-  LPHANDLE = ^THandle; far;
-  
-  HGLOBAL = THandle;
-  HLOCAL = THandle;
-  
-  TGlobalHandle = THandle;
-  TLocalHandle = THandle;
-  
-  ATOM = UINT;
-  TAtom = ATOM;
-  
-  HINST = THandle; { instead of HINSTANCE, to avoid conflict with var hInstance }
-  HMODULE = HINST;
-  
-const
-  { GetWinFlags result mask values }
-  WF_PMODE      = $0001;
-  WF_CPU286     = $0002;
-  WF_CPU386     = $0004;
-  WF_CPU486     = $0008;
-  WF_STANDARD   = $0010;
-  WF_WIN286     = $0010;
-  WF_ENHANCED   = $0020;
-  WF_WIN386     = $0020;
-  WF_CPU086     = $0040;
-  WF_CPU186     = $0080;
-  WF_LARGEFRAME = $0100;
-  WF_SMALLFRAME = $0200;
-  WF_80x87      = $0400;
-  WF_PAGING     = $0800;
-  WF_WLO        = $8000;
-
-{ ExitWindows values }
-  EW_RESTARTWINDOWS = $42;
-
-{ SetErrorMode() constants }
-  SEM_FAILCRITICALERRORS = $0001;
-  SEM_NOGPFAULTERRORBOX  = $0002;
-  SEM_NOOPENFILEERRORBOX = $8000;
-
-type
-  LPCATCHBUF = ^CATCHBUF; far;
-  CATCHBUF = array [0..8] of SmallInt;
-  PCatchBuf = ^TCatchBuf;
-  TCatchBuf = CATCHBUF;
-
-const
-  HINSTANCE_ERROR = HINST(32);
-
-{ Windows Exit Procedure flag values }
-  WEP_SYSTEM_EXIT = 1;
-  WEP_FREE_DLL    = 0;
-
-type
-  LPSEGINFO = ^SEGINFO; far;
-  SEGINFO = record
-    offSegment: UINT;
-    cbSegment: UINT;
-    flags: UINT;
-    cbAlloc: UINT;
-    h: HGLOBAL;
-    alignShift: UINT;
-    reserved: array [0..1] of UINT;
-  end;
-  PSegInfo = ^TSegInfo;
-  TSegInfo = SEGINFO;
-
-  HTASK = THandle;
-
-const
-{ Global Memory Flags }
-  GMEM_FIXED       = $0000;
-  GMEM_MOVEABLE    = $0002;
-  GMEM_NOCOMPACT   = $0010;
-  GMEM_NODISCARD   = $0020;
-  GMEM_ZEROINIT    = $0040;
-  GMEM_MODIFY      = $0080;
-  GMEM_DISCARDABLE = $0100;
-  GMEM_NOT_BANKED  = $1000;
-  GMEM_SHARE       = $2000;
-  GMEM_DDESHARE    = $2000;
-  GMEM_NOTIFY      = $4000;
-  GMEM_LOWER       = GMEM_NOT_BANKED;
-
-  GHND             = GMEM_MOVEABLE or GMEM_ZEROINIT;
-  GPTR             = GMEM_FIXED or GMEM_ZEROINIT;
-
-{ GlobalFlags return flags (in addition to GMEM_DISCARDABLE) }
-  GMEM_DISCARDED   = $4000;
-  GMEM_LOCKCOUNT   = $00FF;
-
-{ Low system memory notification message }
-  WM_COMPACTING    = $0041;
-
-type
-  GNOTIFYPROC = function(hGlbl: HGLOBAL): BOOL; far;
-
-const
-{ Local Memory Flags }
-  LMEM_FIXED       = $0000;
-  LMEM_MOVEABLE    = $0002;
-  LMEM_NOCOMPACT   = $0010;
-  LMEM_NODISCARD   = $0020;
-  LMEM_ZEROINIT    = $0040;
-  LMEM_MODIFY      = $0080;
-  LMEM_DISCARDABLE = $0F00;
-
-  LHND             = LMEM_MOVEABLE or LMEM_ZEROINIT;
-  LPTR             = LMEM_FIXED or LMEM_ZEROINIT;
-
-  NONZEROLHND      = LMEM_MOVEABLE;
-  NONZEROLPTR      = LMEM_FIXED;
-
-{ LocalFlags return flags (in addition to LMEM_DISCARDABLE) }
-  LMEM_DISCARDED   = $4000;
-  LMEM_LOCKCOUNT   = $00FF;
-
-{ File I/O }
-type
-  HFILE = SmallInt;
-
-const
-  HFILE_ERROR = HFILE(-1);
-
-type
-{ OpenFile() Structure }
-  POFSTRUCT = ^OFSTRUCT;
-  NPOFSTRUCT = ^OFSTRUCT; near;
-  LPOFSTRUCT = ^OFSTRUCT; far;
-  OFSTRUCT = record
-    cBytes: BYTE;
-    fFixedDisk: BYTE;
-    nErrCode: UINT;
-    reserved: array [0..3] of BYTE;
-    szPathName: array [0..127] of char;
-  end;
-  TOFStruct = OFSTRUCT;
-
-const
-{ OpenFile() Flags }
-  OF_READ             = $0000;
-  OF_WRITE            = $0001;
-  OF_READWRITE        = $0002;
-  OF_SHARE_COMPAT     = $0000;
-  OF_SHARE_EXCLUSIVE  = $0010;
-  OF_SHARE_DENY_WRITE = $0020;
-  OF_SHARE_DENY_READ  = $0030;
-  OF_SHARE_DENY_NONE  = $0040;
-  OF_PARSE            = $0100;
-  OF_DELETE           = $0200;
-  OF_VERIFY           = $0400;      { Used with OF_REOPEN }
-  OF_SEARCH           = $0400;      { Used without OF_REOPEN }
-  OF_CANCEL           = $0800;
-  OF_CREATE           = $1000;
-  OF_PROMPT           = $2000;
-  OF_EXIST            = $4000;
-  OF_REOPEN           = $8000;
-
-{ _lopen() flags }
-  READ       = 0;
-  WRITE      = 1;
-  READ_WRITE = 2;
-
-{ _llseek origin values }
-  SEEK_SET = 0;
-  SEEK_CUR = 1;
-  SEEK_END = 2;
-
-{ GetTempFileName() Flags }
-  TF_FORCEDRIVE = BYTE($80);
-
-{ GetDriveType return values }
-  DRIVE_REMOVABLE = 2;
-  DRIVE_FIXED     = 3;
-  DRIVE_REMOTE    = 4;
+{$I wintypes.inc}
 
 
 implementation
 implementation